Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/pt-br/model_optimization/guide/quantization/training.md
25118 views

Treinamento consciente de quantização

Manutenção pela Otimização de modelos do TensorFlow

Há duas formas de quantização: quantização pós-treinamento e treinamento consciente de quantização. Comece com a quantização pós-treinamento, já que é mais fácil de usar, embora o treinamento consciente de quantização geralmente seja melhor para a exatidão do modelo.

Esta página fornece uma visão geral do treinamento consciente de quantização para ajudar você a determinar como ele se adequa ao seu caso de uso.

Visão geral

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

Implante com a quantização

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

A técnica é usada na produção de casos de uso de fala, visão, texto e tradução. No momento, o código é compatível com um subconjunto desses modelos.

Experimente com a quantização e o hardware associado

Os usuários podem configurar os parâmetros da quantização (por exemplo, o número de bits) e, até certo ponto, os algoritmos subjacentes. Observe que, com essas mudanças dos padrões da API, atualmente não há caminho compatível para a implantação em um back-end. Por exemplo, a conversão para o TFLite e as implementações de kernel só são compatíveis com a quantização de 8 bits.

As APIs específicas à essa configuração são experimentais e não estão sujeitas à compatibilidade com versões anteriores.

Compatibilidade de APIs

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

  • Criação de modelos: tf.keras com apenas os modelos sequenciais e funcionais.

  • Versões do TensorFlow: TF 2.x para tf-nightly.

    • tf.compat.v1 com um pacote do TF 2.X não é compatível.

  • Modo de execução do TensorFlow: eager execution

Planejamos adicionar suporte nas seguintes áreas:

  • Criação de modelos: esclarecer como os modelos com subclasses não são compatíveis ou têm suporte limitado

  • Treinamento distribuído: tf.distribute

Matriz de suporte geral

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

  • Cobertura de modelos: modelos que usam camadas permitidas, BatchNormalization quando segue camadas Conv2D e DepthwiseConv2D e, em casos limitados, Concat.

  • Aceleração de hardware: os padrões da nossa API são compatíveis com os back-ends do EdgeTPU, NNAPI e TFLite, entre outros. Veja a ressalva no plano.

  • Implante com a quantização: só é compatível a quantização por eixo para camadas convolucionais, e não a quantização por tensor.

Planejamos adicionar suporte nas seguintes áreas:

  • Cobertura de modelos: ampliada para incluir o suporte a RNN/LSTMs e à Concat em geral.

  • Aceleração de hardware: garanta que o conversor do TFLite possa produzir modelos de números inteiros. Veja este issue para mais detalhes.

  • Casos de uso para experimentar com a quantização:

    • Experimentar com algoritmos de quantização que abrangem camadas do Keras ou exigem o passo de treinamento.

    • Estabilizar APIs.

Resultados

Classificação de imagens com ferramentas

Model Non-quantized Top-1 Accuracy 8-bit Quantized Accuracy
MobilenetV1 224 71.03% 71.06%
Resnet v1 50 76.3% 76.1%
MobilenetV2 224 70.77% 70.01%

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

Classificação de imagens para técnica

Model Non-quantized Top-1 Accuracy 8-Bit Quantized Accuracy
Nasnet-Mobile 74% 73%
Resnet-v2 50 75.6% 75%

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

Exemplos

Além do exemplo de treinamento consciente de quantização, confira estes exemplos:

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

Para contexto sobre algo semelhante, veja o artigo Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference (Quantização e treinamento de redes neurais para inferência somente aritmética de números inteiros eficiente). Esse artigo apresenta alguns conceitos usados por essa ferramenta. A implementação não é exatamente igual, e a ferramenta utiliza conceitos adicionais (por exemplo, quantização por eixo).