Mantido por ferramentas Arm ML
Este documento fornece uma visão geral de APIs experimentais para combinar várias técnicas para otimizar modelos de aprendizado de máquina para implantação.
Visão geral
A otimização colaborativa é um processo abrangente que abrange várias técnicas para produzir um modelo que, na implantação, apresente o melhor equilíbrio das características alvo, como velocidade de inferência, tamanho do modelo e precisão.
A ideia das otimizações colaborativas é desenvolver técnicas individuais, aplicando-as uma após a outra para alcançar o efeito de otimização acumulado. Várias combinações das seguintes otimizações são possíveis:
- Poda de peso
- Agrupamento de peso
Quantização
O problema que surge ao tentar encadear essas técnicas é que a aplicação de uma normalmente destrói os resultados da técnica anterior, prejudicando o benefício geral da aplicação simultânea de todas elas; por exemplo, o clustering não preserva a dispersão introduzida pela API de remoção. Para resolver este problema, apresentamos as seguintes técnicas experimentais de otimização colaborativa:
- Clustering preservando esparsidade
- Treinamento consciente de quantização com preservação de dispersão (PQAT)
- Treinamento consciente de quantização com preservação de cluster (CQAT)
- Treinamento consciente de quantização com preservação de esparsidade e cluster
Eles fornecem vários caminhos de implantação que podem ser usados para compactar um modelo de aprendizado de máquina e aproveitar a aceleração de hardware no momento da inferência. O diagrama abaixo demonstra diversos caminhos de implantação que podem ser explorados na busca pelo modelo com características de implantação desejadas, onde os nós folha são modelos prontos para implantação, ou seja, são parcial ou totalmente quantizados e em formato tflite. O preenchimento verde indica as etapas onde o retreinamento/ajuste é necessário e uma borda vermelha tracejada destaca as etapas de otimização colaborativa. A técnica utilizada para obter um modelo em um determinado nó está indicada na etiqueta correspondente.
O caminho de implantação direto somente de quantização (pós-treinamento ou QAT) é omitido na figura acima.
A ideia é chegar ao modelo totalmente otimizado no terceiro nível da árvore de implantação acima; no entanto, qualquer um dos outros níveis de otimização pode ser satisfatório e alcançar o equilíbrio necessário entre latência/precisão de inferência, caso em que nenhuma otimização adicional é necessária. O processo de treinamento recomendado seria percorrer iterativamente os níveis da árvore de implantação aplicáveis ao cenário de implantação alvo e verificar se o modelo atende aos requisitos de latência de inferência e, caso contrário, usar a técnica de otimização colaborativa correspondente para compactar ainda mais o modelo e repetir até que o modelo esteja totalmente otimizado (removido, agrupado e quantizado), se necessário.
A figura abaixo mostra os gráficos de densidade do kernel de peso de amostra passando pelo pipeline de otimização colaborativa.
O resultado é um modelo de implantação quantizado com um número reduzido de valores únicos, bem como um número significativo de pesos esparsos, dependendo da dispersão alvo especificada no momento do treinamento. Além das vantagens significativas da compactação de modelos, o suporte de hardware específico pode aproveitar esses modelos esparsos e agrupados para reduzir significativamente a latência de inferência.
Resultados
Abaixo estão alguns resultados de precisão e compactação que obtivemos ao experimentar os caminhos de otimização colaborativa PQAT e CQAT.
Treinamento consciente de quantização com preservação de dispersão (PQAT)
Modelo | Unid | Linha de base | Modelo podado (50% de escassez) | Modelo QAT | Modelo PQAT |
---|---|---|---|---|---|
DS-CNN-L | Precisão FP32 Top1 | 95,23% | 94,80% | (Falso INT8) 94,721% | (Falso INT8) 94,128% |
Quantização inteira completa INT8 | 94,48% | 93,80% | 94,72% | 94,13% | |
Compressão | 528.128 → 434.879 (17,66%) | 528.128 → 334.154 (36,73%) | 512.224 → 403.261 (21,27%) | 512.032 → 303.997 (40,63%) | |
Rede Móvel_v1-224 | Precisão principal FP32 | 70,99% | 70,11% | (Falso INT8) 70,67% | (Falso INT8) 70,29% |
Quantização inteira completa INT8 | 69,37% | 67,82% | 70,67% | 70,29% | |
Compressão | 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%) |
Treinamento consciente de quantização com preservação de cluster (CQAT)
Modelo | Unid | Linha de base | Modelo Clusterizado | Modelo QAT | Modelo CQAT |
---|---|---|---|---|---|
Mobilenet_v1 em CIFAR-10 | Precisão FP32 Top1 | 94,88% | 94,48% | (Falso INT8) 94,80% | (Falso INT8) 94,60% |
Quantização inteira completa INT8 | 94,65% | 94,41% | 94,77% | 94,52% | |
Tamanho | 3,00MB | 2,00MB | 2,84MB | 1,94MB | |
Mobilenet_v1 no ImageNet | Precisão principal FP32 | 71,07% | 65,30% | (Falso INT8) 70,39% | (Falso INT8) 65,35% |
Quantização inteira completa INT8 | 69,34% | 60,60% | 70,35% | 65,42% | |
Compressão | 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 CQAT e PCQAT para modelos agrupados por canal
Os resultados abaixo são obtidos com a técnica de agrupamento por canal . Eles ilustram que se as camadas convolucionais do modelo forem agrupadas por canal, a precisão do modelo será maior. Se o seu modelo tiver muitas camadas convolucionais, recomendamos agrupar por canal. A taxa de compressão permanece a mesma, mas a precisão do modelo será maior. O pipeline de otimização do modelo é 'clusterizado -> QAT preservando cluster -> quantização pós-treinamento, int8' em nossos experimentos. Modelo Clusterizado -> CQAT, int8 quantizado Clusterizado por canal -> CQAT, int8 quantizado DS-CNN-L 95,949% 96,44% MobileNet-V2 71,538% 72,638% MobileNet-V2 (podado) 71,45% 71,901%
Exemplos
Para obter exemplos completos das técnicas de otimização colaborativa descritas aqui, consulte os notebooks de exemplo CQAT , PQAT , clustering com preservação de dispersão e PCQAT .