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:
- 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 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:
- Agrupamento de preservação de esparsidade
- Treinamento consciente de quantização com preservação de esparsidade (PQAT)
- Treinamento com reconhecimento de quantização de 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 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.
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.
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 .