Ayuda a proteger la Gran Barrera de Coral con TensorFlow en Kaggle Únete Challenge

Optimización colaborativa

Mantenido por Arm ML Tooling

Este documento proporciona una descripción general de las API experimentales para combinar varias técnicas a fin de optimizar los modelos de aprendizaje automático para la implementación.

Visión general

La optimización colaborativa es un proceso general que abarca varias técnicas para producir un modelo que, en el momento de la implementación, exhibe el mejor equilibrio de las características objetivo, como la velocidad de inferencia, el tamaño del modelo y la precisión.

La idea de las optimizaciones colaborativas es construir sobre técnicas individuales aplicándolas una tras otra para lograr el efecto de optimización acumulado. Son posibles varias combinaciones de las siguientes optimizaciones:

El problema que surge al intentar encadenar estas técnicas es que la aplicación de una normalmente destruye los resultados de la técnica anterior, estropeando el beneficio general de aplicar todas simultáneamente; por ejemplo, la agrupación en clústeres no conserva la escasez introducida por la API de poda. Para resolver este problema, presentamos las siguientes técnicas experimentales de optimización colaborativa:

Estos proporcionan varias rutas de implementación que podrían usarse para comprimir un modelo de aprendizaje automático y aprovechar la aceleración del hardware en el momento de la inferencia. El siguiente diagrama muestra varias rutas de implementación que se pueden explorar en busca del modelo con las características de implementación deseadas, donde los nodos hoja son modelos listos para la implementación, lo que significa que están cuantificados parcial o totalmente y en formato tflite. El relleno verde indica los pasos en los que se requiere reentrenamiento / ajuste y un borde rojo punteado resalta los pasos de optimización colaborativa. La técnica utilizada para obtener un modelo en un nodo determinado se indica en la etiqueta correspondiente.

collaborative optimization

En la figura anterior se omite la ruta de implementación directa, solo de cuantificación (posterior al entrenamiento o QAT).

La idea es alcanzar el modelo totalmente optimizado en el tercer nivel del árbol de implementación anterior; sin embargo, cualquiera de los otros niveles de optimización podría resultar satisfactorio y lograr la compensación requerida entre la latencia de inferencia y la precisión, en cuyo caso no se necesita ninguna optimización adicional. El proceso de entrenamiento recomendado sería recorrer iterativamente los niveles del árbol de implementación aplicables al escenario de implementación de destino y ver si el modelo cumple con los requisitos de latencia de inferencia y, en caso contrario, usar la técnica de optimización colaborativa correspondiente para comprimir aún más el modelo y repetir hasta que el modelo esté completamente optimizado (podado, agrupado y cuantificado), si es necesario.

La siguiente figura muestra las gráficas de densidad del grano de peso de muestra que pasa por el proceso de optimización colaborativa.

collaborative optimization density plot

El resultado es un modelo de implementación cuantificado con un número reducido de valores únicos, así como un número significativo de pesos dispersos, dependiendo de la dispersión objetivo especificada en el momento del entrenamiento. Aparte de las importantes ventajas de la compresión del modelo, el soporte de hardware específico puede aprovechar estos modelos dispersos y agrupados para reducir significativamente la latencia de inferencia.

Resultados

A continuación se muestran algunos resultados de precisión y compresión que obtuvimos al experimentar con rutas de optimización colaborativa PQAT y CQAT.

Entrenamiento consciente de cuantificación que preserva la dispersión (PQAT)

Modelo Elementos Base Modelo podado (50% escasez) Modelo QAT Modelo PQAT
DS-CNN-L Precisión FP32 Top1 95,23% 94,80% (INT8 falso) 94,721% (INT8 falso) 94,128%
Cuantización completa de enteros INT8 94,48% 93,80% 94,72% 94,13%
Compresión 528,128 → 434,879 (17,66%) 528.128 → 334.154 (36,73%) 512.224 → 403.261 (21,27%) 512.032 → 303.997 (40,63%)
Mobilenet_v1-224 FP32 Precisión Top 1 70,99% 70,11% (INT8 falso) 70,67% (INT8 falso) 70,29%
Cuantización completa de enteros INT8 69,37% 67,82% 70,67% 70,29%
Compresión 4.665.520 → 3.880.331 (16,83%) 4.665.520 → 2.939.734 (37,00%) 4.569.416 → 3.808.781 (16,65%) 4.569.416 → 2.869.600 (37,20%)

Entrenamiento consciente de la cuantificación que preserva el clúster (CQAT)

Modelo Elementos Base Modelo agrupado Modelo QAT Modelo CQAT
Mobilenet_v1 en CIFAR-10 Precisión FP32 Top1 94,88% 94,48% (INT8 falso) 94,80% (INT8 falso) 94,60%
Cuantización completa de enteros INT8 94,65% 94,41% 94,77% 94,52%
Tamaño 3,00 MB 2,00 MB 2,84 MB 1,94 MB
Mobilenet_v1 en ImageNet FP32 Precisión Top 1 71,07% 65,30% (INT8 falso) 70,39% (INT8 falso) 65,35%
Cuantización completa de enteros INT8 69,34% 60,60% 70,35% 65,42%
Compresión 4.665.568 → 3.886.277 (16,7%) 4.665.568 → 3.035.752 (34,9%) 4.569.416 → 3.804.871 (16,7%) 4.569.472 → 2.912.655 (36,25%)

Ejemplos de

Para ejemplos de extremo a extremo de las técnicas de optimización de colaboración descritas aquí, por favor refiérase a las CQAT , PQAT , clustering escasez de preservación , y PCQAT ejemplo cuadernos.