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 de CPU e 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 de ponta a ponta, consulte os seguintes tutoriais:

Quantização de pesos

Os pesos podem ser convertidos em tipos com precisão reduzida, como floats de 16 bits ou inteiros de 8 bits. Geralmente, recomendamos flutuações de 16 bits para aceleração da GPU e inteiros de 8 bits para execução da 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 no tempo de inferência, em relação à quantificação de 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 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 obter mais informações, consulte o guia de quantização pós-treinamento do TensorFlow Lite.