Poda de modelos
Optimice los modelos de aprendizaje automático con la poda de modelos. Consiga una inferencia más rápida, un menor uso de memoria y eficiencia energética para implantaciones con recursos limitados.
La poda de modelos es una técnica de optimización de modelos que reduce el tamaño de las redes neuronales y las hace más eficientes desde el punto de vista computacional. La idea central es identificar y eliminar los parámetros redundantes o sin importancia (pesos, neuronas o canales) de un modelo entrenado. Este proceso reduce el tamaño del modelo y puede acelerar significativamente la inferencia, lo que lo hace ideal para su despliegue en dispositivos periféricos con memoria y capacidad de procesamiento limitadas. El concepto se basa en la observación de que muchos modelos de gran tamaño están sobreparametrizados, lo que significa que contienen componentes que contribuyen muy poco a la predicción final. Artículos fundamentales como Daño Cerebral Óptimo establecieron desde el principio que no todos los parámetros son iguales.
Tipos de poda de modelos
Las técnicas de poda de modelos suelen clasificarse en función de la granularidad de lo que se elimina de la red:
- Poda de pesos (no estructurada): Este es el método más preciso, en el que los pesos individuales del modelo con valores por debajo de un determinado umbral se ponen a cero. Esto crea un modelo "disperso", que puede comprimirse en gran medida. Sin embargo, suele requerir librerías de hardware o software especializadas, como las herramientas de NVIDIA para modelos dispersos, a fin de lograr un aumento significativo de la velocidad durante la inferencia.
- Poda de neuronas: En este enfoque, se eliminan neuronas enteras y todas sus conexiones entrantes y salientes si se considera que no son importantes. Se trata de una forma de poda más estructurada que la eliminación de pesos individuales.
- Poda de filtros/canales (estructurada): Particularmente relevante para las redes neuronales convolucionales (CNN), este método elimina filtros o canales enteros. Dado que preserva la estructura densa y regular de las capas de la red, este enfoque a menudo se traduce en un aumento directo del rendimiento en hardware estándar sin necesidad de bibliotecas especializadas. Herramientas como DeepSparse de Neural Magic están diseñadas para acelerar estos modelos dispersos en CPU.
Tras la poda, los modelos suelen someterse a un ajuste fino, que consiste en volver a entrenar la red más pequeña durante unas cuantas épocas para recuperar la precisión perdida durante la eliminación de parámetros. La famosa hipótesis del billete de lotería sugiere que, dentro de una red grande, existe una subred más pequeña que puede lograr un rendimiento similar si se entrena desde cero. Frameworks como PyTorch ofrecen herramientas integradas para su implementación, como se demuestra en el tutorial oficial de PyTorch sobre poda.
Aplicaciones reales
La poda de modelos es fundamental para desplegar modelos de IA eficientes en diversos escenarios:
- Optimización de la detección de objetos en dispositivos Edge: Los modelos como Ultralytics YOLO pueden podarse para ejecutarse eficientemente en tareas de detección de objetos en hardware con recursos limitados como una Raspberry Pi o una NVIDIA Jetson. Esto permite aplicaciones en tiempo real como la gestión del tráfico, la vigilancia inteligente y la integración de la visión por ordenador en la robótica.
- Despliegue local de grandes modelos lingüísticos (LLM): La poda se utiliza para reducir modelos masivos basados en la arquitectura Transformer, lo que permite ejecutarlos en dispositivos como teléfonos inteligentes para tareas de procesamiento del lenguaje natural (PLN ). Este enfoque, a veces combinado con otras técnicas como la cuantización, permite crear potentes asistentes de inteligencia artificial y aplicaciones de traducción en los dispositivos, al tiempo que mejora la privacidad de los datos y reduce la latencia. La investigación y las herramientas de organizaciones como Hugging Face exploran la poda LLM.
Poda frente a otras técnicas de optimización
La poda de modelos es una de las diversas técnicas complementarias de optimización de modelos:
- Cuantización de modelos: Esta técnica reduce la precisión numérica de los pesos y activaciones del modelo (por ejemplo, de números de coma flotante de 32 bits a enteros de 8 bits). A diferencia de la poda, que elimina parámetros, la cuantización reduce el tamaño de los parámetros existentes. A menudo se aplica después de la poda para obtener la máxima optimización, especialmente cuando se utiliza hardware con soporte especializado como TensorRT.
- Destilación del conocimiento: Este método consiste en entrenar un modelo "alumno" más pequeño para que imite los resultados de un modelo "maestro" más grande y previamente entrenado. El objetivo es transferir los conocimientos adquiridos por el maestro a una arquitectura más compacta. Este método difiere de la poda, que reduce un modelo ya entrenado en lugar de entrenar uno nuevo.
En última instancia, estas técnicas pueden utilizarse en combinación para crear modelos altamente eficientes. Una vez optimizado, el modelo puede exportarse a formatos estándar, como ONNX, utilizando las opciones de exportación de Ultralytics para un amplio despliegue en diferentes motores de inferencia. Plataformas como Ultralytics HUB proporcionan las herramientas necesarias para gestionar todo el ciclo de vida de los modelos de visión por ordenador, desde la formación hasta el despliegue optimizado.