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.
Para ir direto para um exemplo completo, veja o exemplo de treinamento consciente de quantização.
Para encontrar rapidamente as APIs necessárias para seu caso de uso, veja o guia completo de treinamento consciente de quantização.
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).