Otimização Colaborativa

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:

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:

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.

collaborative optimization

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.

collaborative optimization density plot

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 .