Aide à protéger la Grande barrière de corail avec tensorflow sur Kaggle Rejoignez Défi

Formation consciente de la quantification

Maintenu par l'optimisation du modèle TensorFlow

Il existe deux formes de quantification : la quantification post-entraînement et l'entraînement conscient de la quantification. Commencez par la quantification post-formation car elle est plus facile à utiliser, bien que la formation tenant compte de 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 s'adapte à votre cas d'utilisation.

Aperçu

La formation sensible à la quantification émule la quantification en 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 entraîne 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 dans les 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 vers 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 :

  • tf.keras modèles : tf.keras avec uniquement des modèles séquentiels et fonctionnels.
  • Versions 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 :

  • Construction de modèles : clarifier comment les modèles sous-classés ont un support limité ou inexistant
  • Formation distribuée : tf.distribute

Matrice générale de soutien

Une assistance est disponible dans les domaines suivants :

  • Couverture du modèle : modèles utilisant des couches autorisées , BatchNormalisation lorsqu'il suit les couches Conv2D et DepthwiseConv2D et, dans certains cas, Concat .
  • Accélération matérielle : nos valeurs par défaut d'API 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éploiement avec quantification : seule la quantification par axe pour les couches convolutives, 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 d'apprentissage.
    • Stabiliser 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 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 dans TensorFlow et TFLite.

Exemples

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

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

Pour des informations sur quelque chose de similaire, voir le Quantification et la formation des réseaux de neurones pour l' efficacité Integer-Arithmétique seule Inference papier . 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).