Quantizando um modelo de PNL de humor do DistilBERT

Dec 13 2022
Indo de FP32 para INT8 para inferência mais rápida com Optimum Intel e Intel Neural Compressor
A quantização é uma técnica de compressão de modelo que ajuda a reduzir o tempo de inferência. A quantização do tipo ponto flutuante de 32 bits (FP32) para número inteiro de 8 bits (INT8) melhora o desempenho com apenas uma ligeira queda na precisão.
Foto de Tengyart no Unsplash

A quantização é uma técnica de compressão de modelo que ajuda a reduzir o tempo de inferência. A quantização do tipo ponto flutuante de 32 bits (FP32) para número inteiro de 8 bits (INT8) melhora o desempenho com apenas uma ligeira queda na precisão. Geralmente, o tamanho do modelo pode diminuir de 4 a 5 vezes e o tempo de inferência pode ser reduzido em mais de 3 vezes ( source ).

Devemos primeiro importar mais algumas bibliotecas para quantização, incluindo neural_compressore optimum.intel:

Estou configurando o torchdispositivo para cpu:

Agora podemos aplicar a quantização. Dê uma olhada nos exemplos de classificação de texto no optimum.intel repositório do GitHub para saber mais. Vamos carregar um modelo previamente treinado:

Eu configurei o treinador para usar o IncTrainerou a classe Intel® Neural Compressor Trainer:

Tudo está pronto para executar a quantização. Observe que estou usando um arquivo de configuração chamado quantization.yml baixado do repositório optimum.intel GitHub . Você pode alterar os parâmetros de configuração neste arquivo para ajustar como o modelo é quantizado. Aqui, estou aplicando a quantização dinâmica pós-treinamento, uma técnica que não requer retreinamento, mas geralmente sacrifica um pouco de precisão:

Podemos então prosseguir e executar a quantização com optimizer.fit():

Agora que temos um modelo otimizado, podemos compará-lo com o modelo de linha de base:

Podemos salvar o modelo quantizado em disco e ter disponíveis tanto o FP32 quanto o modelo INT8 recém-quantizado:

Modelo INT8 salvo em disco

Executando a avaliação com o modelo FP32, obtemos:

E para INT8:

A precisão é praticamente a mesma, mas o modelo INT8 é 1,5x mais rápido que o modelo FP32. O código completo pode ser encontrado no GitHub aqui .

Você pode instalar o Intel Neural Compressor autônomo ou como parte do Intel AI Analytics Toolkit . Para saber mais sobre as soluções de hardware e software de IA da Intel, visite aqui .