Quantizzazione post-allenamento

La quantizzazione post-addestramento include tecniche generali per ridurre la latenza, l'elaborazione, la potenza e le dimensioni del modello della CPU e dell'acceleratore hardware con un lieve degrado della precisione del modello. Queste tecniche possono essere eseguite su un modello TensorFlow float già addestrato e applicate durante la conversione di TensorFlow Lite. Queste tecniche sono abilitate come opzioni nel convertitore TensorFlow Lite .

Per passare direttamente agli esempi end-to-end, consulta i seguenti tutorial:

Pesi quantizzanti

I pesi possono essere convertiti in tipi con precisione ridotta, come numeri in virgola mobile a 16 bit o numeri interi a 8 bit. In genere consigliamo numeri in virgola mobile a 16 bit per l'accelerazione GPU e numeri interi a 8 bit per l'esecuzione della CPU.

Ad esempio, ecco come specificare la quantizzazione del peso intero a 8 bit:

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

Durante l'inferenza, le parti più critiche vengono calcolate con 8 bit anziché in virgola mobile. C'è un certo sovraccarico delle prestazioni in termini di tempo di inferenza, relativo alla quantizzazione di entrambi i pesi e le attivazioni di seguito.

Per ulteriori informazioni, consulta la guida alla quantizzazione post-addestramento di TensorFlow Lite.

Quantizzazione intera completa di pesi e attivazioni

Migliora la latenza, l'elaborazione e il consumo energetico e ottieni l'accesso ad acceleratori hardware solo interi assicurandoti che sia i pesi che le attivazioni siano quantizzati. Ciò richiede un piccolo set di dati rappresentativi.

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

Il modello risultante riceverà comunque input e output float per comodità.

Per ulteriori informazioni, consulta la guida alla quantizzazione post-addestramento di TensorFlow Lite.