Quantizzazione post-allenamento

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

La quantizzazione post-allenamento include tecniche generali per ridurre la latenza, l'elaborazione, la potenza e le dimensioni del modello della CPU e dell'acceleratore hardware con un degrado minimo dell'accuratezza 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, vedere i seguenti tutorial:

Quantizzare i pesi

I pesi possono essere convertiti in tipi con precisione ridotta, come float a 16 bit o interi a 8 bit. In genere consigliamo float a 16 bit per l'accelerazione GPU e intero 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()

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

Per ulteriori informazioni, vedere la guida alla quantizzazione post-allenamento di TensorFlow Lite.

Quantizzazione intera intera di pesi e attivazioni

Migliora la latenza, l'elaborazione e il consumo energetico e accedi agli acceleratori hardware di soli interi assicurandoti che sia i pesi che le attivazioni siano quantizzati. Ciò richiede un piccolo set di dati rappresentativo.

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 prenderà comunque l'input e l'output float per comodità.

Per ulteriori informazioni, vedere la guida alla quantizzazione post-allenamento di TensorFlow Lite.