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:
- Poda de peso
- Agrupación de peso
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, 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:
- Agrupación de preservación de la dispersión
- Sparsity preservar la cuantificación de formación conscientes (PQAT)
- Cluster de cuantificación de la preservación de la formación consciente (CQAT)
- Entrenamiento consciente de la cuantificación y la preservación de 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 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.
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.
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.