Quantização pós-treinamento

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

Para ir direto aos exemplos completos, consulte os seguintes tutoriais:

Quantizando pesos

Os pesos podem ser convertidos em tipos com precisão reduzida, como números flutuantes de 16 bits ou inteiros de 8 bits. Geralmente recomendamos floats de 16 bits para aceleração de GPU e números 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 intensivas são calculadas com 8 bits em vez de ponto flutuante. Há alguma sobrecarga de desempenho no tempo de inferência, em relação à quantização dos pesos e ativações abaixo.

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

Quantização inteira completa 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, garantindo que os pesos e as ativações sejam quantizados. Isto 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 flutuante por conveniência.

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