Merci de vous être connecté à Google I/O. Voir toutes les sessions à la demande Regarder à la demande

Formation sensible à la quantification

Maintenu par TensorFlow Model Optimization

Il existe deux formes de quantification : la quantification post-formation et la formation consciente de la quantification. Commencez par la quantification post-formation car elle est plus facile à utiliser, bien que la formation sensible à la quantification soit souvent meilleure pour la précision du modèle.

Cette page fournit un aperçu de la formation à la quantification pour vous aider à déterminer comment elle correspond à votre cas d'utilisation.

Aperçu

La formation sensible à la quantification émule la quantification du temps d'inférence, créant un modèle que les outils en aval utiliseront pour produire des modèles réellement quantifiés. Les modèles quantifiés utilisent une précision inférieure (par exemple, 8 bits au lieu de 32 bits flottants), ce qui présente des avantages lors du déploiement.

Déployer avec quantification

La quantification apporte des améliorations via la compression du modèle et la réduction de la latence. Avec les valeurs par défaut de l'API, la taille du modèle est multipliée par 4 et nous constatons généralement des améliorations de 1,5 à 4 fois la latence du processeur dans les backends testés. Finalement, des améliorations de la latence peuvent être observées sur les accélérateurs d'apprentissage automatique compatibles, tels que EdgeTPU et NNAPI.

La technique est utilisée dans la production de cas d'utilisation de la parole, de la vision, du texte et de la traduction. Le code prend actuellement en charge un sous- ensemble de ces modèles .

Expérimentez avec la quantification et le matériel associé

Les utilisateurs peuvent configurer les paramètres de quantification (par exemple, le nombre de bits) et, dans une certaine mesure, les algorithmes sous-jacents. Notez qu'avec ces modifications par rapport aux valeurs par défaut de l'API, il n'existe actuellement aucun chemin pris en charge pour le déploiement sur un backend. Par exemple, la conversion TFLite et les implémentations du noyau ne prennent en charge que la quantification 8 bits.

Les API spécifiques à cette configuration sont expérimentales et ne font pas l'objet d'une rétrocompatibilité.

Compatibilité API

Les utilisateurs peuvent appliquer la quantification avec les API suivantes :

  • Construction de modèles : tf.keras avec uniquement des modèles séquentiels et fonctionnels.
  • Versions de TensorFlow : TF 2.x pour tf-nightly.
    • tf.compat.v1 avec un package TF 2.X n'est pas pris en charge.
  • Mode d'exécution TensorFlow : exécution rapide

Il est sur notre feuille de route d'ajouter un support dans les domaines suivants :

  • Création de modèles : clarifiez la façon dont les modèles sous-classés ont un support limité ou inexistant
  • Formation distribuée : tf.distribute

Matrice de soutien général

L'assistance est disponible dans les domaines suivants :

  • Couverture du modèle : modèles utilisant des couches autorisées , BatchNormalization lorsqu'il suit les couches Conv2D et DepthwiseConv2D, et dans des cas limités, Concat .
  • Accélération matérielle : nos API par défaut sont compatibles avec l'accélération sur les backends EdgeTPU, NNAPI et TFLite, entre autres. Voir la mise en garde dans la feuille de route.
  • Déployer avec quantification : seule la quantification par axe pour les couches convolutionnelles, et non la quantification par tenseur, est actuellement prise en charge.

Il est sur notre feuille de route d'ajouter un support dans les domaines suivants :

  • Couverture du modèle : étendue pour inclure les RNN/LSTM et la prise en charge générale de Concat.
  • Accélération matérielle : assurez-vous que le convertisseur TFLite peut produire des modèles entiers. Voir ce numéro pour plus de détails.
  • Expérimentez avec des cas d'utilisation de quantification :
    • Expérimentez avec des algorithmes de quantification qui couvrent les couches Keras ou nécessitent l'étape de formation.
    • Stabilisez les API.

Résultats

Classification d'images avec des outils

Modèle Précision Top-1 non quantifiée Précision quantifiée 8 bits
MobilenetV1 224 71,03 % 71,06 %
Resnet v1 50 76,3 % 76,1 %
MobilenetV2 224 70,77 % 70,01 %

Les modèles ont été testés sur Imagenet et évalués à la fois dans TensorFlow et TFLite.

Classification des images pour la technique

Modèle Précision Top-1 non quantifiée Précision quantifiée 8 bits
Nasnet-Mobile 74% 73%
Resnet-v2 50 75,6 % 75%

Les modèles ont été testés sur Imagenet et évalués à la fois dans TensorFlow et TFLite.

Exemples

En plus de l' exemple d'entraînement prenant en charge la quantification , consultez les exemples suivants :

  • Modèle CNN sur la tâche de classification manuscrite des chiffres du MNIST avec quantification : code

Pour en savoir plus sur quelque chose de similaire, consultez l' article Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference . Cet article présente quelques concepts utilisés par cet outil. L'implémentation n'est pas exactement la même, et il existe des concepts supplémentaires utilisés dans cet outil (par exemple la quantification par axe).