Esta página foi traduzida pela API Cloud Translation.
Switch to English

Treinamento ciente de quantização

Mantido por TensorFlow Model Optimization

Existem duas formas de quantização: quantização pós-treinamento e treinamento ciente de quantização. Comece com a quantização pós-treinamento, pois é mais fácil de usar, embora o treinamento ciente de quantização seja geralmente melhor para a precisão do modelo.

Esta página fornece uma visão geral sobre o treinamento com reconhecimento de quantização para ajudá-lo a determinar como ele se ajusta ao seu caso de uso.

Visão geral

O treinamento ciente de quantização emula a quantização de tempo de inferência, criando um modelo que as ferramentas de downstream usarão para produzir modelos realmente quantizados. Os modelos quantizados usam baixa precisão (por exemplo, 8 bits em vez de 32 bits flutuante), levando a benefícios durante a implantação.

Implantar com quantização

A quantização traz melhorias por meio da compressão do modelo e redução da latência. Com os padrões da API, o tamanho do modelo diminui em 4x, e normalmente vemos melhorias de 1,5 a 4x na latência da CPU nos back-ends testados. Eventualmente, melhorias de latência podem ser vistas em aceleradores de aprendizado de máquina compatíveis, como o EdgeTPU e NNAPI.

A técnica é usada na produção de fala, visão, texto e casos de uso de tradução. O código atualmente oferece suporte a um subconjunto desses modelos .

Experimente quantização e hardware associado

Os usuários podem configurar os parâmetros de quantização (por exemplo, número de bits) e, até certo ponto, os algoritmos subjacentes. Com essas mudanças nos padrões da API, não há um caminho compatível para a implantação.

APIs específicas para esta configuração são experimentais e não estão sujeitas a compatibilidade com versões anteriores.

Compatibilidade API

Os usuários podem aplicar a quantização com as seguintes APIs:

  • Construção de modelo: tf.keras com apenas modelos sequenciais e funcionais.
  • Versões do TensorFlow: TF 2.x para tf-nightly.
  • Modo de execução TensorFlow: execução rápida

Está em nosso roteiro adicionar suporte nas seguintes áreas:

  • Construção de modelo: esclarecer como os modelos de subclasse são limitados a nenhum suporte
  • Treinamento distribuído: tf.distribute

Matriz de suporte geral

O suporte está disponível nas seguintes áreas:

  • Cobertura do modelo: modelos usando camadas da lista de permissões , BatchNormalization quando segue as camadas Conv2D e DepthwiseConv2D e, em casos limitados, Concat .
  • Aceleração de hardware: nossos padrões de API são compatíveis com aceleração em back-ends EdgeTPU, NNAPI e TFLite, entre outros. Veja a advertência no roteiro.
  • Implante com quantização: apenas a quantização por eixo para camadas convolucionais, não a quantização por tensor, é atualmente suportada.

Está em nosso roteiro adicionar suporte nas seguintes áreas:

  • Cobertura do modelo: estendida para incluir RNN / LSTMs e suporte geral ao Concat.
  • Aceleração de hardware: certifique-se de que o conversor TFLite pode produzir modelos inteiros completos. Veja este problema para detalhes.
  • Experimente casos de uso de quantização:
    • Experimente algoritmos de quantização que abrangem as camadas de Keras ou exigem a etapa de treinamento.
    • Estabilize APIs.

Resultados

Classificação de imagens com ferramentas

Modelo Precisão não quantizada Top-1 Precisão quantizada de 8 bits
MobilenetV1 224 71,03% 71,06%
Resnet v1 50 76,3% 76,1%
MobilenetV2 224 70,77% 70,01%

Os modelos foram testados no Imagenet e avaliados no TensorFlow e TFLite.

Classificação de imagem para técnica

Modelo Precisão não quantizada Top-1 Precisão quantizada de 8 bits
Nasnet-Mobile 74% 73%
Resnet-v2 50 75,6% 75%

Os modelos foram testados no Imagenet e avaliados no TensorFlow e TFLite.

Exemplos

Além do exemplo de treinamento ciente de quantização , consulte os seguintes exemplos:

  • Modelo CNN na tarefa de classificação de dígitos manuscritos MNIST com quantização: código

Para o fundo em algo semelhante, consulte a quantização e Formação de Redes Neurais para Integer-Aritmética-Only Inferência eficiente de papel . Este artigo apresenta alguns conceitos usados ​​por essa ferramenta. A implementação não é exatamente a mesma, e existem conceitos adicionais usados ​​nesta ferramenta (por exemplo, quantização por eixo).