Mantenido por Arm ML Tooling
Este documento proporciona una descripción general de las API experimentales para combinar varias técnicas para optimizar los modelos de aprendizaje automático para su implementación.
Descripción general
La optimización colaborativa es un proceso global que abarca varias técnicas para producir un modelo que, en el momento de la implementación, muestre el mejor equilibrio entre las características del objetivo, como la velocidad de inferencia, el tamaño del modelo y la precisión.
La idea de las optimizaciones colaborativas es aprovechar técnicas individuales aplicándolas una tras otra para lograr el efecto de optimización acumulado. Son posibles varias combinaciones de las siguientes optimizaciones:
- Poda de peso
- Agrupación de pesos
Cuantización
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, arruinando el beneficio general de aplicarlas todas simultáneamente; por ejemplo, la agrupación en clústeres no preserva la escasez introducida por la API de poda. Para resolver este problema, introducimos las siguientes técnicas experimentales de optimización colaborativa:
- Agrupación que preserva la dispersión
- Entrenamiento consciente de la cuantificación que preserva la dispersión (PQAT)
- Entrenamiento consciente de la cuantificación que preserva el clúster (CQAT)
- Entrenamiento consciente de la cuantificación que preserva la dispersión y el clúster
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 la búsqueda 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 parcial o totalmente cuantificados y en formato tflite. El relleno verde indica los pasos en los que se requiere reentrenamiento/ajuste y un borde rojo discontinuo resalta los pasos de optimización colaborativa. La técnica utilizada para obtener un modelo en un determinado nodo se indica en la etiqueta correspondiente.
En la figura anterior se omite la ruta de implementación directa de solo cuantificación (post-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 el equilibrio requerido entre latencia de inferencia y precisión, en cuyo caso no se necesita ninguna optimización adicional. El proceso de capacitación recomendado sería recorrer de forma iterativa los niveles del árbol de implementación aplicables al escenario de implementación objetivo y ver si el modelo cumple con los requisitos de latencia de inferencia y, si no, 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 los gráficos de densidad del núcleo de peso de muestra que pasa por el proceso de optimización colaborativa.
El resultado es un modelo de implementación cuantificado con una cantidad reducida de valores únicos, así como una cantidad significativa de pesos dispersos, dependiendo de la escasez objetivo especificada en el momento del entrenamiento. Además de las importantes ventajas de la compresión de modelos, 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 la cuantificación que preserva la dispersión (PQAT)
Modelo | Elementos | Base | Modelo podado (50% de escasez) | Modelo QAT | Modelo PQAT |
---|---|---|---|---|---|
DS-CNN-L | Precisión superior 1 del FP32 | 95,23% | 94,80% | (INT8 falso) 94,721% | (INT8 falso) 94,128% |
Cuantización entera completa 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 Top 1 de precisión | 70,99% | 70,11% | (INT8 falso) 70,67% | (INT8 falso) 70,29% |
Cuantización entera completa 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 superior 1 del FP32 | 94,88% | 94,48% | (INT8 falso) 94,80% | (INT8 falso) 94,60% |
Cuantización entera completa INT8 | 94,65% | 94,41% | 94,77% | 94,52% | |
Tamaño | 3,00MB | 2,00MB | 2,84MB | 1,94MB | |
Mobilenet_v1 en ImageNet | FP32 Top 1 de precisión | 71,07% | 65,30% | (INT8 falso) 70,39% | (INT8 falso) 65,35% |
Cuantización entera completa 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%) |
Resultados de CQAT y PCQAT para modelos agrupados por canal
Los resultados a continuación se obtienen con la técnica de clustering por canal . Ilustran que si las capas convolucionales del modelo se agrupan por canal, la precisión del modelo es mayor. Si su modelo tiene muchas capas convolucionales, le recomendamos agruparlo por canal. La relación de compresión sigue siendo la misma, pero la precisión del modelo será mayor. La canalización de optimización del modelo está 'agrupada -> QAT de preservación del clúster -> cuantificación posterior al entrenamiento, int8' en nuestros experimentos. Modelo Agrupado -> CQAT, int8 cuantificado Agrupados por canal -> CQAT, int8 cuantificado DS-CNN-L 95,949% 96,44% MobileNet-V2 71,538% 72,638% MobileNet-V2 (podado) 71,45% 71,901%
Ejemplos
Para ver ejemplos de un extremo a otro de las técnicas de optimización colaborativa descritas aquí, consulte los cuadernos de ejemplo de CQAT , PQAT , clustering que preserva la dispersión y PCQAT .