La quantification post-formation comprend des techniques générales pour réduire la latence, le traitement, la puissance et la taille du modèle du processeur et de l'accélérateur matériel avec peu de dégradation de la précision du modèle. Ces techniques peuvent être exécutées sur un modèle flottant TensorFlow déjà formé et appliquées lors de la conversion TensorFlow Lite. Ces techniques sont activées en tant qu'options dans le convertisseur TensorFlow Lite .
Pour accéder directement aux exemples de bout en bout, consultez les didacticiels suivants :
- Quantification de plage dynamique post-entraînement
- Quantification entière post-formation
- Quantification float16 post-formation
Poids de quantification
Les poids peuvent être convertis en types avec une précision réduite, tels que des flottants 16 bits ou des entiers 8 bits. Nous recommandons généralement des flottants 16 bits pour l'accélération GPU et des entiers 8 bits pour l'exécution CPU.
Par exemple, voici comment spécifier une quantification de poids entier 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()
Lors de l'inférence, les parties les plus critiques sont calculées avec 8 bits au lieu de virgule flottante. Il y a une surcharge de performances de temps d'inférence, par rapport à la quantification des poids et des activations ci-dessous.
Pour plus d'informations, consultez le guide de quantification post-entraînement TensorFlow Lite.
Quantification entière des poids et des activations
Améliorez la latence, le traitement et la consommation d'énergie, et accédez à des accélérateurs matériels d'entiers uniquement en vous assurant que les poids et les activations sont quantifiés. Cela nécessite un petit ensemble de données représentatif.
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()
Le modèle résultant prendra toujours une entrée et une sortie flottantes pour plus de commodité.
Pour plus d'informations, consultez le guide de quantification post-entraînement TensorFlow Lite.