Mantido pela otimização de modelo do TensorFlow
Existem duas formas de quantização: quantização pós-treinamento e treinamento consciente de quantização. Comece com a quantização pós-treinamento , pois é mais fácil de usar, embora o treinamento com reconhecimento de quantização geralmente seja melhor para a precisão do modelo.
Esta página fornece uma visão geral do treinamento com reconhecimento de quantização para ajudá-lo a determinar como ele se ajusta ao seu caso de uso.
- Para mergulhar direto em um exemplo de ponta a ponta, consulte o exemplo de treinamento com reconhecimento de quantização .
- Para encontrar rapidamente as APIs necessárias para seu caso de uso, consulte o guia abrangente de treinamento com reconhecimento de quantização .
Visão geral
O treinamento com reconhecimento de quantização emula a quantização em tempo de inferência, criando um modelo que as ferramentas de downstream usarão para produzir modelos realmente quantizados. Os modelos quantizados usam menor precisão (por exemplo, 8 bits em vez de 32 bits flutuantes), levando a benefícios durante a implantação.
Implantar com quantização
A quantização traz melhorias por meio da compactação do modelo e redução da latência. Com os padrões da API, o tamanho do modelo é reduzido 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 EdgeTPU e NNAPI.
A técnica é usada na produção em casos de uso de fala, visão, texto e tradução. O código atualmente oferece suporte a um subconjunto desses modelos .
Experimente com 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. Observe que, com essas alterações dos padrões da API, atualmente não há caminho compatível para implantação em um back-end. Por exemplo, a conversão TFLite e as implementações de kernel suportam apenas a quantização de 8 bits.
As APIs específicas para essa configuração são experimentais e não estão sujeitas a compatibilidade com versões anteriores.
Compatibilidade da API
Os usuários podem aplicar a quantização com as seguintes APIs:
- Construção de modelos:
tf.keras
com apenas modelos Sequenciais e Funcionais. - Versões do TensorFlow: TF 2.x para tf-nightly.
-
tf.compat.v1
com um pacote TF 2.X não é suportado.
-
- Modo de execução do TensorFlow: execução antecipada
Está em nosso roteiro adicionar suporte nas seguintes áreas:
- Construção de modelo: esclareça como os modelos subclassificados têm limitado ou 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 permitidas , 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 a aceleração em backends EdgeTPU, NNAPI e TFLite, entre outros. Veja a ressalva no roteiro.
- Implantar 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: garanta que o conversor TFLite possa produzir modelos inteiros. Consulte este problema para obter detalhes.
- Experimente com casos de uso de quantização:
- Experimente algoritmos de quantização que abrangem camadas Keras ou exigem a etapa de treinamento.
- Estabilize as APIs.
Resultados
Classificação de imagens com ferramentas
Modelo | Precisão Top 1 não quantizada | 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 no TFLite.
Classificação de imagem para técnica
Modelo | Precisão Top 1 não quantizada | 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 no TFLite.
Exemplos
Além do exemplo de treinamento com reconhecimento de quantização , consulte os exemplos a seguir:
- Modelo CNN na tarefa de classificação de dígitos manuscritos MNIST com quantização: código
Para obter informações sobre algo semelhante, consulte o documento Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference paper . Este artigo apresenta alguns conceitos que esta ferramenta utiliza. A implementação não é exatamente a mesma, e existem conceitos adicionais usados nesta ferramenta (por exemplo, quantização por eixo).