Éliminer les pondérations insignifiantes

Ce document propose une vue d'ensemble de l'élagage de modèles afin de vous aider à déterminer si cette technique est adaptée à votre cas d'utilisation. Pour une présentation détaillée du code, consultez le tutoriel Élagage avec Keras et la documentation sur les API. Pour en savoir plus sur l'utilisation de l'API Keras, obtenir une description détaillée de l'élagage et vous documenter sur les schémas d'utilisation plus avancés, consultez le guide Entraîner des modèles parcimonieux.

Aperçu

L'élagage de pondérations basé sur la magnitude met progressivement à zéro les pondérations du modèle au cours du processus d'entraînement afin de parvenir à la parcimonie du modèle. Les modèles parcimonieux sont plus faciles à compresser et les zéros peuvent être ignorés au cours de l'inférence pour améliorer la latence.

Cette technique apporte des améliorations via la compression de modèles. À l'avenir, la compatibilité du framework avec cette technique permettra d'améliorer la latence. Pour la compression de modèles, nous avons observé des performances multipliées par six avec une perte de justesse minimale.

La technique fait actuellement l'objet d'une évaluation dans diverses applications vocales, comme la reconnaissance vocale et la synthèse vocale. Elle a, en outre, été testée dans différents modèles de vision et de traduction.

Matrice de compatibilité des API

Les utilisateurs peuvent appliquer l'étalage à l'aide des API suivantes :

  • Création de modèles : tf.keras avec uniquement des modèles séquentiels et fonctionnels
  • Versions de TensorFlow : TF 1.x pour les versions 1.14+ et 2.x.
    • tf.compat.v1 avec un package TF 2.X et tf.compat.v2 avec un package TF 1.X ne sont pas compatibles.
  • Modes d'exécution de TensorFlow : graphe et eager
  • Entraînement distribué : tf.distribute avec seulement l'exécution de graphe

L'ajout de la compatibilité est prévu dans les domaines suivants :

Résultats

Classification d'images

Modèle Justesse non parcimonieuse (1 % les plus élevés) Justesse parcimonieuse Parcimonie
InceptionV3 78,1 % 78 % 50 %
76,1 %75 %
74,6 %87,5 %
MobilenetV1 22471,04 %70,84 %50 %

Les modèles ont été testés sur Imagenet.

Traduction

Modèle BLEU non parcimonieux BLEU parcimonieux Parcimonie
GNMT EN-DE 26,77 26,86 80 %
26,5285 %
26,1990 %
GNMT DE-EN 29,47 29,50 80 %
29,2485 %
28,8190 %

Les modèles utilisent un ensemble de données allemand et anglais WMT16 avec news-test2013 comme ensemble de développement et news-test2015 comme ensemble de test.

Exemples

Consultez les exemples ci-dessous en plus du tutoriel Élagage avec Keras :

  • Entraîner un modèle CNN sur la tâche de classification des chiffres manuscrits MNIST avec élagage : code
  • Entraîner un réseau LSTM sur la tâche de classification des sentiments IMDB avec élagage : code

Conseils

  1. Si possible, commencez avec des pondérations ou un modèle pré-entraînés. Si cela s'avère impossible, créez-en un sans élagage et commencez après.
  2. N'effectuez pas d'élagages trop fréquents, afin que le modèle dispose d'un temps de récupération suffisant. Le kit d'outils propose une fréquence par défaut.
  3. Essayez d'exécuter un test dans lequel un modèle pré-entraîné est élagué jusqu'à la parcimonie finale avec l'étape de début 0.
  4. Optez pour un taux d'apprentissage qui n'est ni trop élevé ni trop faible lors de l'élagage du modèle. Considérez le calendrier d'élagage comme un hyperparamètre.

Pour en savoir plus, consultez le livre blanc To prune, or not to prune: exploring the efficacy of pruning for model compression (Élaguer ou ne pas élaguer : de l'efficacité de l'élagage pour la compression de modèles) [article].