Yolo Vision Shenzhen
Shenzhen
Únete ahora

¿Qué es la optimización de modelos? Una guía rápida

Abirami Vina

5 minutos de lectura

15 de noviembre de 2024

Descubra cómo las técnicas de optimización de modelos, como el ajuste de hiperparámetros, la poda de modelos y la cuantificación de modelos, pueden ayudar a que los modelos de visión artificial se ejecuten de manera más eficiente.

La optimización de modelos es un proceso que tiene como objetivo mejorar la eficiencia y el rendimiento de los modelos de aprendizaje automático. Al refinar la estructura y la función de un modelo, la optimización hace posible que los modelos ofrezcan mejores resultados con un mínimo de recursos computacionales y un menor tiempo de entrenamiento y evaluación.

Este proceso es especialmente importante en campos como la visión artificial, donde los modelos a menudo requieren recursos sustanciales para analizar imágenes complejas. En entornos con recursos limitados, como dispositivos móviles o sistemas edge, los modelos optimizados pueden funcionar bien con recursos limitados sin dejar de ser precisos.

Se utilizan comúnmente varias técnicas para lograr la optimización del modelo, incluyendo el ajuste de hiperparámetros, el pruning del modelo, la cuantización del modelo y la precisión mixta. En este artículo, exploraremos estas técnicas y los beneficios que aportan a las aplicaciones de visión artificial. ¡Empecemos!

Comprensión de la optimización de modelos

Los modelos de visión artificial suelen tener capas profundas y estructuras complejas que son excelentes para reconocer patrones intrincados en las imágenes, pero también pueden ser bastante exigentes en términos de potencia de procesamiento. Cuando estos modelos se implementan en dispositivos con hardware limitado, como teléfonos móviles o dispositivos de borde, pueden enfrentar ciertos desafíos o limitaciones. 

La potencia de procesamiento, la memoria y la energía limitadas en estos dispositivos pueden provocar caídas notables en el rendimiento, ya que los modelos luchan por mantenerse al día. Las técnicas de optimización de modelos son clave para abordar estos problemas. Ayudan a optimizar el modelo, reducir sus necesidades computacionales y garantizar que aún pueda funcionar eficazmente, incluso con recursos limitados. La optimización del modelo se puede realizar simplificando la arquitectura del modelo, reduciendo la precisión de los cálculos o eliminando componentes innecesarios para que el modelo sea más ligero y rápido.

__wf_reserved_inherit
Fig. 1. Razones para optimizar sus modelos. Imagen del autor.

Estas son algunas de las técnicas más comunes de optimización de modelos, que exploraremos con más detalle en las siguientes secciones:

  • Ajuste de hiperparámetros: Implica el ajuste sistemático de los hiperparámetros, como la tasa de aprendizaje y el tamaño del lote, para mejorar el rendimiento del modelo.
  • Poda de modelos: Esta técnica elimina pesos y conexiones innecesarias de la red neuronal, reduciendo su complejidad y coste computacional.
  • Cuantización de modelos: La cuantización implica reducir la precisión de los pesos y activaciones del modelo, normalmente de 32 bits a 16 bits u 8 bits, lo que reduce significativamente el espacio de memoria y los requisitos computacionales.
  • Ajustes de precisión: También conocido como entrenamiento de precisión mixta, implica el uso de diferentes formatos de precisión para diferentes partes del modelo y la optimización del uso de los recursos sin comprometer la precisión.

Explicación: Hiperparámetros en modelos de aprendizaje automático

Puede ayudar a un modelo a aprender y rendir mejor ajustando sus hiperparámetros: configuraciones que dan forma a cómo el modelo aprende de los datos. El ajuste de hiperparámetros es una técnica para optimizar estas configuraciones, mejorando la eficiencia y la precisión del modelo. A diferencia de los parámetros que el modelo aprende durante el entrenamiento, los hiperparámetros son valores preestablecidos que guían el proceso de entrenamiento.

Repasemos algunos ejemplos de hiperparámetros que se pueden ajustar:

  • Tasa de aprendizaje: Este parámetro controla el tamaño del paso que da el modelo para ajustar sus pesos internos. Una tasa de aprendizaje más alta puede acelerar el aprendizaje, pero corre el riesgo de perder la solución óptima, mientras que una tasa más baja puede ser más precisa, pero más lenta.
  • Tamaño de lote: Define cuántas muestras de datos se procesan en cada paso de entrenamiento. Los tamaños de lote más grandes ofrecen un aprendizaje más estable, pero necesitan más memoria. Los lotes más pequeños se entrenan más rápido, pero pueden ser menos estables.
  • Épocas: Puedes determinar cuántas veces el modelo ve el conjunto de datos completo utilizando este parámetro. Más épocas pueden mejorar la precisión, pero corren el riesgo de sobreajuste.
  • Tamaño del kernel: Define el tamaño del filtro en Redes Neuronales Convolucionales (CNN). Los kernels más grandes capturan patrones más amplios pero necesitan más procesamiento; los kernels más pequeños se centran en detalles más finos.

Cómo funciona el ajuste de hiperparámetros

El ajuste de hiperparámetros generalmente comienza con la definición de un rango de valores posibles para cada hiperparámetro. Luego, un algoritmo de búsqueda explora diferentes combinaciones dentro de estos rangos para identificar la configuración que produce el mejor rendimiento

Los métodos comunes de ajuste incluyen la búsqueda en cuadrícula, la búsqueda aleatoria y la optimización bayesiana. La búsqueda en cuadrícula prueba cada combinación posible de valores dentro de los rangos especificados. La búsqueda aleatoria selecciona combinaciones al azar, a menudo encontrando configuraciones efectivas más rápidamente. La optimización bayesiana utiliza un modelo probabilístico para predecir valores de hiperparámetros prometedores basados en resultados anteriores. Este enfoque normalmente reduce el número de pruebas necesarias. 

En última instancia, para cada combinación de hiperparámetros, se evalúa el rendimiento del modelo. El proceso se repite hasta que se alcanzan los resultados deseados.

Hiperparámetros vs. parámetros del modelo

Mientras trabaja en el ajuste de hiperparámetros, puede preguntarse cuál es la diferencia entre los hiperparámetros y los parámetros del modelo

Los hiperparámetros son valores establecidos antes del entrenamiento que controlan cómo aprende el modelo, como la tasa de aprendizaje o el tamaño del lote. Estos ajustes se fijan durante el entrenamiento e influyen directamente en el proceso de aprendizaje. Los parámetros del modelo, por otro lado, son aprendidos por el propio modelo durante el entrenamiento. Estos incluyen pesos y sesgos, que se ajustan a medida que el modelo se entrena y, en última instancia, guían sus predicciones. En esencia, los hiperparámetros dan forma al proceso de aprendizaje, mientras que los parámetros del modelo son los resultados de ese proceso de aprendizaje.

__wf_reserved_inherit
Fig. 2. Comparación de parámetros e hiperparámetros. 

¿Por qué es importante la poda de modelos en el aprendizaje profundo?

La poda de modelos es una técnica de reducción de tamaño que elimina pesos y parámetros innecesarios de un modelo, haciéndolo más eficiente. En la visión artificial, especialmente con redes neuronales profundas, una gran cantidad de parámetros, como pesos y activaciones (salidas intermedias que ayudan a calcular la salida final), puede aumentar tanto la complejidad como las demandas computacionales. La poda ayuda a optimizar el modelo identificando y eliminando los parámetros que contribuyen mínimamente al rendimiento, lo que resulta en un modelo más ligero y eficiente.

__wf_reserved_inherit
Fig3. Antes y después de la poda del modelo.

Después de entrenar el modelo, técnicas como la poda basada en la magnitud o el análisis de sensibilidad pueden evaluar la importancia de cada parámetro. Los parámetros de baja importancia se podan, utilizando una de las tres técnicas principales: poda de peso, poda de neuronas o poda estructurada. 

La poda de pesos elimina las conexiones individuales con un impacto mínimo en la salida. La poda de neuronas elimina neuronas enteras cuyas salidas contribuyen poco a la función del modelo. La poda estructurada elimina secciones más grandes, como filtros convolucionales o neuronas en capas totalmente conectadas, optimizando la eficiencia del modelo. Una vez completada la poda, el modelo se vuelve a entrenar para ajustar los parámetros restantes, asegurando que conserva una alta precisión en una forma reducida.

Reducción de la latencia en modelos de IA con cuantificación

La cuantización de modelos reduce el número de bits utilizados para representar los pesos y las activaciones de un modelo. Normalmente, convierte los valores de coma flotante de 32 bits de alta precisión a una precisión más baja, como enteros de 16 bits u 8 bits. Al reducir la precisión de los bits, la cuantización disminuye significativamente el tamaño del modelo, la huella de memoria y el coste computacional.

En la visión artificial, los floats de 32 bits son estándar, pero la conversión a 16 bits u 8 bits puede mejorar la eficiencia. Hay dos tipos principales de cuantificación: la cuantificación de pesos y la cuantificación de activaciones. La cuantificación de pesos reduce la precisión de los pesos del modelo, equilibrando la reducción de tamaño con la precisión. La cuantificación de la activación reduce la precisión de las activaciones, disminuyendo aún más la memoria y las demandas computacionales.

__wf_reserved_inherit
Fig. 4. Un ejemplo de cuantización de coma flotante de 32 bits a entero de 8 bits.

¿Cómo la precisión mixta acelera las inferencias de la IA?

La precisión mixta es una técnica que utiliza diferentes precisiones numéricas para varias partes de una red neuronal. Al combinar valores de mayor precisión, como flotantes de 32 bits, con valores de menor precisión, como flotantes de 16 bits u 8 bits, la precisión mixta permite que los modelos de visión artificial aceleren el entrenamiento y reduzcan el uso de memoria sin sacrificar la precisión.

Durante el entrenamiento, la precisión mixta se consigue utilizando una precisión más baja en capas específicas, manteniendo al mismo tiempo una precisión más alta donde sea necesario en toda la red. Esto se hace mediante la conversión y el escalado de la pérdida. La conversión convierte los tipos de datos entre diferentes precisiones según lo requiera el modelo. El escalado de la pérdida ajusta la precisión reducida para evitar el desbordamiento numérico, garantizando un entrenamiento estable. La precisión mixta es especialmente útil para modelos grandes y tamaños de lote grandes.

__wf_reserved_inherit
Fig 5. El entrenamiento de precisión mixta utiliza tipos de punto flotante de 16 bits (FP16) y 32 bits (FP32).

Equilibrando la precisión y la eficiencia del modelo

Ahora que hemos cubierto varias técnicas de optimización de modelos, vamos a discutir cómo decidir cuál usar en función de tus necesidades específicas. La elección depende de factores como el hardware disponible, las limitaciones computacionales y de memoria del entorno de implementación y el nivel de precisión requerido. 

Por ejemplo, los modelos más pequeños y rápidos son más adecuados para dispositivos móviles con recursos limitados, mientras que los modelos más grandes y precisos pueden utilizarse en sistemas de alto rendimiento. A continuación, se explica cómo se alinea cada técnica con diferentes objetivos:

  • Poda: Es ideal para reducir el tamaño del modelo sin que ello afecte significativamente a la precisión, lo que la hace perfecta para dispositivos con recursos limitados, como teléfonos móviles o dispositivos de Internet de las Cosas (IoT).
  • Cuantización: Una gran opción para reducir el tamaño del modelo y acelerar la inferencia, particularmente en dispositivos móviles y sistemas embebidos con memoria y potencia de procesamiento limitadas. Funciona bien para aplicaciones donde son aceptables ligeras reducciones de precisión.
  • Precisión mixta: Diseñada para modelos a gran escala, esta técnica reduce el uso de memoria y acelera el entrenamiento en hardware como GPUs y TPUs que admiten operaciones de precisión mixta. Se utiliza a menudo en tareas de alto rendimiento donde la eficiencia importa.
  • Ajuste de hiperparámetros: Aunque computacionalmente intensivo, es esencial para aplicaciones que requieren alta precisión, como imágenes médicas o conducción autónoma.

Conclusiones clave

La optimización de modelos es una parte vital del aprendizaje automático, especialmente para implementar la IA en aplicaciones del mundo real. Técnicas como el ajuste de hiperparámetros, el pruning de modelos, la cuantización y la precisión mixta ayudan a mejorar el rendimiento, la eficiencia y el uso de recursos de los modelos de visión artificial. Estas optimizaciones hacen que los modelos sean más rápidos y requieran menos recursos, lo cual es ideal para dispositivos con memoria y potencia de procesamiento limitadas. Los modelos optimizados también son más fáciles de escalar e implementar en diferentes plataformas, lo que permite soluciones de IA que son a la vez eficaces y adaptables a una amplia gama de usos.

Visite el repositorio de GitHub de Ultralytics y únase a nuestra comunidad para obtener más información sobre las aplicaciones de la IA en la fabricación y la agricultura.

¡Construyamos juntos el futuro
de la IA!

Comience su viaje con el futuro del aprendizaje automático

Comienza gratis
Enlace copiado al portapapeles