Otimização Colaborativa

Mantido por Arm ML Tooling

Este documento fornece uma visão geral das 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 engloba várias técnicas para produzir um modelo que, na implantação, exiba o melhor equilíbrio de características de destino, como velocidade de inferência, tamanho e precisão do modelo.

A ideia das otimizações colaborativas é construir 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 de aplicar todas elas simultaneamente; por exemplo, o clustering não preserva a escassez 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 vários caminhos de implantação que podem ser explorados na busca do modelo com as 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 em que o retreinamento/ajuste fino é 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ó é indicada no rótulo correspondente.

collaborative optimization

O caminho de implantação direto, somente de quantização (pós-treinamento ou QAT) é omitido na figura acima.

A ideia é alcançar o 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 atingir a compensação necessária de 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 de destino e verificar se o modelo atende aos requisitos de latência de inferência e, se não, usar a técnica de otimização colaborativa correspondente para compactar ainda mais o modelo e repetir até que o modelo seja 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 exclusivos, bem como um número significativo de pesos esparsos, dependendo da esparsidade alvo especificada no tempo de treinamento. Além das vantagens significativas de compactação do modelo, o suporte de hardware específico pode aproveitar esses modelos esparsos e em cluster 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 esparsidade (PQAT)

Modelo Itens Linha de base Modelo podado (50% de dispersão) 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 inteira 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%)
Mobilenet_v1-224 Precisão FP32 Top 1 70,99% 70,11% (Falso INT8) 70,67% (Falso INT8) 70,29%
quantização inteira inteira 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 com reconhecimento de quantização para preservação de cluster (CQAT)

Modelo Itens Linha de base Modelo Agrupado 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 inteira INT8 94,65% 94,41% 94,77% 94,52%
Tamanho 3,00 MB 2,00 MB 2,84 MB 1,94 MB
Mobilenet_v1 na ImageNet Precisão FP32 Top 1 71,07% 65,30% (Falso INT8) 70,39% (Falso INT8) 65,35%
quantização inteira inteira 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 em cluster 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 é 'clustered -> cluster preservando QAT -> post training quantization, int8' em nossos experimentos.

Modelo Agrupado -> CQAT, int8 quantizado Agrupado por canal -> CQAT, int8 quantizado
DS-CNN-L 95,949% 96,44%
MobileNet-V2 71,538% 72,638%
MobileNet-V2 (removido) 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 de preservação de esparsidade e PCQAT .