Cuantificación posterior al entrenamiento

La cuantificación posterior al entrenamiento incluye técnicas generales para reducir la latencia, el procesamiento, la potencia y el tamaño del modelo del CPU y del acelerador de hardware con poca degradación en la precisión del modelo. Estas técnicas se pueden realizar en un modelo de TensorFlow flotante ya entrenado y se pueden aplicar durante la conversión de TensorFlow Lite. Estas técnicas están habilitadas como opciones en el convertidor TensorFlow Lite .

Para saltar directamente a los ejemplos de un extremo a otro, consulte los siguientes tutoriales:

Pesos de cuantificación

Los pesos se pueden convertir a tipos con precisión reducida, como flotantes de 16 bits o enteros de 8 bits. Por lo general, recomendamos valores flotantes de 16 bits para la aceleración de la GPU y números enteros de 8 bits para la ejecución de la CPU.

Por ejemplo, aquí se explica cómo especificar la cuantificación del peso de enteros 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()

En la inferencia, las partes más críticas se calculan con 8 bits en lugar de punto flotante. Hay cierta sobrecarga de rendimiento del tiempo de inferencia, en relación con la cuantificación de los pesos y las activaciones a continuación.

Para obtener más información, consulta la guía de cuantificación posterior al entrenamiento de TensorFlow Lite.

Cuantificación entera completa de pesos y activaciones

Mejore la latencia, el procesamiento y el uso de energía, y obtenga acceso a aceleradores de hardware de solo números enteros asegurándose de cuantificar tanto los pesos como las activaciones. Esto requiere un pequeño conjunto de datos representativos.

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()

El modelo resultante aún tomará entradas y salidas flotantes por conveniencia.

Para obtener más información, consulta la guía de cuantificación posterior al entrenamiento de TensorFlow Lite.