La poda de modelos es una técnica utilizada en el aprendizaje automático para optimizar los modelos entrenados reduciendo su tamaño y complejidad. Esto se consigue identificando y eliminando los parámetros menos importantes, como los pesos o las conexiones dentro de una red neuronal (RN), que contribuyen mínimamente al rendimiento general del modelo. El objetivo es crear modelos más pequeños y rápidos que requieran menos potencia de cálculo y memoria, haciéndolos más eficientes sin una caída significativa de la precisión. Este proceso es un tipo específico de poda que se aplica directamente a los modelos de aprendizaje automático.
¿Por qué utilizar la Poda Modelo?
La principal motivación para la poda de modelos es la eficiencia. Los modelos modernos de aprendizaje profundo, aunque potentes, pueden ser muy grandes y exigentes desde el punto de vista computacional. Esto supone un reto para el despliegue de los modelos, especialmente en dispositivos con recursos limitados, como los smartphones o los sistemas de computación periférica. La poda de modelos aborda estos problemas
- Reducción del tamaño de los modelos: Los modelos más pequeños requieren menos espacio de almacenamiento, lo que facilita su despliegue en dispositivos como los que ejecutan la aplicaciónUltralytics HUB.
- Aumento de la velocidad de inferencia: Con menos parámetros, los modelos podados realizan los cálculos más rápidamente, reduciendo la latencia de la inferencia. Esto es crucial para las aplicaciones de inferencia en tiempo real.
- Menor consumo de energía: Menos cálculos significan menos consumo de energía, lo que es importante para los dispositivos que funcionan con batería y para promover prácticas de IA sostenibles.
- Minimizar el sobreajuste: Eliminar los parámetros redundantes a veces puede ayudar a que los modelos se generalicen mejor a los nuevos datos, reduciendo potencialmente el sobreajuste.
Tipos de poda de modelos
Las técnicas de poda de modelos varían, pero generalmente se dividen en categorías según lo que se elimine:
- Poda de pesos (no estructurada): Los pesos o conexiones individuales dentro de la red que tienen baja magnitud o importancia se ponen a cero. Esto suele dar lugar a modelos dispersos, pero puede requerir hardware o software especializado para una aceleración óptima.
- Poda de Neuronas/Filtros (Estructurada): Se eliminan neuronas enteras, filtros (en las Redes Neuronales Convolucionales (CNN)) u otros componentes estructurales. Esto suele dar lugar a modelos más regulares, más pequeños y densos que son más fáciles de acelerar en hardware estándar utilizando herramientas como NVIDIA TensorRT.
La poda puede aplicarse después del entrenamiento o integrarse en el proceso de entrenamiento. A menudo, un modelo podado requiere algún ajuste fino (entrenamiento adicional) para recuperar la precisión perdida. Puedes explorar diversas estrategias de poda en recursos como el Tutorial de Poda dePyTorch .
Aplicaciones en el mundo real
La poda de modelos es valiosa en muchos ámbitos:
- Visión por ordenador móvil: Ultralytics YOLO Los modelos utilizados para la detección de objetos en dispositivos móviles pueden podarse para ejecutarse eficientemente, permitiendo el análisis en tiempo real directamente en el dispositivo sin necesidad de una conectividad constante a la nube. Esto es vital para las aplicaciones desplegadas en plataformas como Raspberry Pi o que utilizan aceleradores como TPU Edge deGoogle.
- Sistemas autónomos: En los coches autoconducidos o los drones, los modelos deben procesar los datos de los sensores al instante. La poda de modelos de percepción complejos ayuda a conseguir la baja latencia necesaria para una navegación y una toma de decisiones seguras, a menudo implementadas en hardware como NVIDIA Jetson.
Poda de modelos frente a otras técnicas de optimización
La poda de modelos es una de las diversas técnicas de optimización de modelos. Es importante distinguirla de
- Cuantización del modelo: Reduce la precisión de los pesos y activaciones del modelo (por ejemplo, de flotantes de 32 bits a enteros de 8 bits). Esto también reduce el tamaño y acelera el cálculo, pero funciona cambiando el tipo de datos, no eliminando parámetros. Consulta Optimización deTensorFlow Lite para ver ejemplos.
- Destilación del conocimiento: Consiste en entrenar un modelo "alumno" más pequeño para que imite la salida de un modelo "maestro" más grande y preentrenado. El objetivo es transferir conocimientos, creando un modelo compacto sin modificar directamente el maestro. Lee el documento original sobre Destilación de Conocimientos para obtener más detalles.
Estas técnicas no se excluyen mutuamente y a menudo se combinan con la poda para obtener los máximos beneficios de optimización. Por ejemplo, un modelo puede podarse primero y cuantificarse después, antes de su despliegue final. Puedes encontrar orientaciones sobre la optimización en la DocumentaciónUltralytics .