Quantização pós-treinamento

A quantização pós-treinamento inclui técnicas gerais para reduzir a latência do acelerador de CPU e hardware, processamento, potência e tamanho do modelo com pouca degradação na precisão do modelo. Essas técnicas podem ser realizadas em um modelo flutuante do TensorFlow já treinado e aplicadas durante a conversão do TensorFlow Lite. Essas técnicas são ativadas como opções no conversor TensorFlow Lite .

Para pular direto para os exemplos de ponta a ponta, consulte os seguintes tutoriais:

Quantizando pesos

Os pesos podem ser convertidos em tipos com precisão reduzida, como flutuantes de 16 bits ou inteiros de 8 bits. Geralmente recomendamos flutuações de 16 bits para aceleração de GPU e inteiros de 8 bits para execução de CPU.

Por exemplo, aqui está como especificar a quantização de peso inteiro de 8 bits:

import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()

Na inferência, as partes mais críticas são computadas com 8 bits em vez de ponto flutuante. Há alguma sobrecarga de desempenho de tempo de inferência, relativa à quantização de pesos e ativações abaixo.

Para mais informações, consulte o guia de quantização pós-treinamento do TensorFlow Lite.

Quantização inteira de pesos e ativações

Melhore a latência, o processamento e o uso de energia e obtenha acesso a aceleradores de hardware somente inteiros, certificando-se de que os pesos e as ativações sejam quantizados. Isso requer um pequeno conjunto de dados representativo.

import tensorflow as tf

def representative_dataset_gen():
  for _ in range(num_calibration_steps):
    # Get sample input data as a numpy array in a method of your choosing.
    yield [input]

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()

O modelo resultante ainda terá entrada e saída flutuantes por conveniência.

Para mais informações, consulte o guia de quantização pós-treinamento do TensorFlow Lite.