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:
- Quantizzazione della gamma dinamica post-allenamento
- Quantizzazione intera post-allenamento
- Quantizzazione float16 post-allenamento
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.