La quantification post-formation comprend des techniques générales permettant de 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 une faible dégradation de la précision du modèle. Ces techniques peuvent être exécutées sur un modèle TensorFlow flottant déjà entraîné et appliquées lors de la conversion TensorFlow Lite. Ces techniques sont activées en tant qu'options dans le convertisseur TensorFlow Lite .
Pour passer directement aux exemples de bout en bout, consultez les didacticiels suivants :
- Quantification de la plage dynamique post-entraînement
- Quantification entière complète après la formation
- Quantification float16 post-entraînement
Quantification des poids
Les poids peuvent être convertis en types avec une précision réduite, tels que des nombres flottants de 16 bits ou des entiers de 8 bits. Nous recommandons généralement des nombres flottants de 16 bits pour l'accélération GPU et des entiers de 8 bits pour l'exécution du processeur.
Par exemple, voici comment spécifier une quantification de poids entier sur 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 intensives sont calculées avec 8 bits au lieu de virgule flottante. Il existe une certaine surcharge de performances en termes 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 complète 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 contenant uniquement des nombres entiers en vous assurant que les poids et les activations sont quantifiés. Cela nécessite un petit ensemble de données représentatives.
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 des entrées et des sorties flottantes pour plus de commodité.
Pour plus d'informations, consultez le guide de quantification post-entraînement TensorFlow Lite.