Glosario

Poda

Optimiza los modelos de IA con la poda: reduce la complejidad, aumenta la eficiencia y despliega más rápido en los dispositivos periféricos sin sacrificar el rendimiento.

Entrena los modelos YOLO simplemente
con Ultralytics HUB

Saber más

La poda es una técnica de optimización de modelos utilizada en inteligencia artificial (IA) y aprendizaje automático (AM) para reducir el tamaño y la complejidad computacional de los modelos entrenados. Consiste en eliminar selectivamente parámetros, como pesos o conexiones dentro de una red neuronal (NN), que se identifican como menos importantes o redundantes para la tarea del modelo. El objetivo principal es crear modelos más pequeños y rápidos que requieran menos recursos informáticos y memoria, idealmente sin una disminución significativa del rendimiento o la precisión. Este proceso es una parte clave del despliegue eficaz de modelos, especialmente en dispositivos con capacidades limitadas. Aunque "Poda" es el término general,"Poda de Modelos" se refiere específicamente a la aplicación de esta técnica a los modelos ML.

Relevancia de la poda

A medida que los modelos de aprendizaje profundo (AD ) se hacen más grandes y complejos para abordar tareas sofisticadas, su demanda de potencia de cálculo, almacenamiento y energía aumenta significativamente. La poda aborda directamente este reto haciendo que los modelos sean más ligeros y eficientes. Esta optimización conlleva varias ventajas: menores necesidades de almacenamiento, menor consumo de energía durante el funcionamiento y disminución de la latencia de inferencia, que es fundamental para las aplicaciones que requieren inferencia en tiempo real. La poda es especialmente valiosa para desplegar modelos en entornos con recursos limitados, como los dispositivos móviles, los sistemas integrados y diversos escenarios de Edge AI en los que la eficiencia es una preocupación primordial. También puede ayudar a mitigar el sobreajuste simplificando el modelo.

Aplicaciones de la poda

Las técnicas de poda se aplican ampliamente en numerosos dominios de la IA. He aquí dos ejemplos concretos:

  1. Despliegue de Modelos de Detección de Objetos en Dispositivos Edge: Un Ultralytics YOLO entrenado para la detección de objetos puede ser demasiado grande o lento para su despliegue en un dispositivo de bajo consumo como una Raspberry Pi o una TPUGoogle Edge. La poda puede reducir el tamaño y la carga computacional del modelo, permitiéndole funcionar eficazmente en dicho hardware para tareas como los sistemas de seguridad o la vigilancia de la fauna local. Consulta guías como el tutorial Edge TPU on Raspberry Pi o la guíaNVIDIA Jetson para ver ejemplos de implementación.
  2. Optimización de modelos para sistemas autónomos: En los vehículos autónomos, los complejos modelos de percepción para tareas como la segmentación de imágenes o la fusión de sensores deben ejecutarse con una latencia mínima. La poda ayuda a optimizar estas Redes Neuronales Convolucionales (CNN) para cumplir estrictos requisitos de procesamiento en tiempo real, garantizando un funcionamiento seguro y sensible del vehículo. Frameworks como NVIDIA TensorRT a menudo admiten modelos podados para una inferencia optimizada.

Tipos y técnicas

Los métodos de poda varían, pero en general se dividen en estas categorías principales:

  • Poda no estructurada: Consiste en eliminar pesos o neuronas individuales basándose en criterios como la baja magnitud o la contribución a la salida. El resultado son modelos dispersos con patrones irregulares de conexiones eliminadas. Aunque potencialmente alcanzan altas tasas de compresión, estos modelos pueden requerir hardware especializado o bibliotecas de software (como DeepSparse deNeural Magic) para una ejecución eficiente. Consulta la Integración deUltralytics Neural Magic Magic.
  • Poda Estructural: Esta técnica elimina componentes estructurales enteros de la red, como filtros, canales o incluso capas. Esto mantiene una estructura regular, haciendo que el modelo podado sea más compatible con aceleradores de hardware estándar y bibliotecas como el soporte de sparsity estructurado deNVIDIA.

La poda puede aplicarse en distintas fases: antes del entrenamiento (influyendo en el diseño de la arquitectura), durante el proceso de entrenamiento, o después del entrenamiento en un modelo preentrenado, a menudo seguido de un ajuste fino para recuperar la precisión perdida. Los principales marcos de aprendizaje profundo, como PyTorch y TensorFlow proporcionan herramientas y tutoriales, como el Tutorial de Poda dePyTorch , para aplicar diversas estrategias de poda.

La poda frente a otras técnicas de optimización

La poda es una de las diversas técnicas utilizadas para la optimización de modelos. Es útil distinguirla de los conceptos relacionados:

  • 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), disminuyendo el tamaño del modelo y, a menudo, acelerando el cálculo, sobre todo en hardware especializado.
  • Destilación de conocimientos: Consiste en entrenar a un modelo "alumno" más pequeño para que imite el comportamiento de un modelo "maestro" más grande y previamente entrenado, transfiriendo conocimientos sin heredar la complejidad.

Estas técnicas no se excluyen mutuamente y suelen utilizarse en combinación con la poda para lograr mayores niveles de optimización. Por ejemplo, un modelo puede podarse primero y luego cuantificarse para obtener la máxima eficacia. Los modelos optimizados a menudo pueden exportarse a formatos estándar como ONNX utilizando herramientas como la función de exportaciónUltralytics para una amplia compatibilidad de despliegue entre diferentes motores de inferencia.

En resumen, la poda es una técnica poderosa para crear modelos de IA eficientes y adecuados a diversas necesidades de despliegue, que desempeña un papel importante en la aplicación práctica de la visión por ordenador (VC) y otras tareas de ML. Plataformas como Ultralytics HUB proporcionan herramientas e infraestructura, incluido el entrenamiento en la nube, que pueden facilitar el desarrollo y la optimización de modelos como YOLOv8 o YOLO11.

Leer todo