Cette page a été traduite par l'API Cloud Translation.
Switch to English

regroupement de poids

Maintenu par le bras ML Outillage

Ce document donne un aperçu sur le regroupement de poids pour vous aider à déterminer la façon dont il est adapté à votre cas d'utilisation.

Aperçu

Clustering, ou le partage de poids, réduit le nombre de valeurs de poids unique dans un modèle, conduisant à des avantages pour le déploiement. Il regroupe les premiers poids de chaque couche en groupes N, partage alors la valeur barycentre du cluster pour tous les poids appartenant au cluster.

Cette technique apporte des améliorations par la compression du modèle. le soutien-cadre de l'avenir peut débloquer des améliorations de l'empreinte mémoire qui peuvent faire une différence cruciale pour le déploiement de modèles d'apprentissage en profondeur sur les systèmes embarqués avec des ressources limitées.

Nous avons expérimenté à travers le regroupement des tâches de vision et de la parole. Nous avons vu jusqu'à 5 fois l' amélioration de la compression de modèle avec une perte minimale de précision, comme le montrent les résultats présentés ci - dessous.

S'il vous plaît noter que le regroupement fournira des prestations réduites pour les couches denses de convolution et qui précèdent une couche de normalisation des lots, ainsi que, en combinaison avec par axe quantification post-formation.

matrice de compatibilité API

Les utilisateurs peuvent appliquer le regroupement avec les API suivantes:

  • Modélisme: tf.keras avec uniquement des modèles fonctionnels et séquentielle
  • versions tensorflow: 1.x TF pour les versions 1.14+ et 2.x.
    • tf.compat.v1 avec un paquet TF 2.X et tf.compat.v2 avec un paquet de TF 1.X ne sont pas pris en charge.
  • Tensorflow mode d'exécution: à la fois graphique et désireux

Résultats

Classification des images

Modèle Original cluster
Précision de Top-1 (%) Taille de .tflite comprimé (MB) Configuration Nombre de groupes Précision de Top-1 (%) Taille de .tflite comprimé (MB)
MobileNetV1 71,02 14,96
Sélective (3 derniers couches Conv2D) 256, 256, 32 70,62 8,42
Complètes (toutes les couches Conv2D) 64 66,07 2,98
MobileNetV2 72,29 12.90
Sélective (3 derniers couches Conv2D) 256, 256, 32 72,31 7.00
Complètes (toutes les couches Conv2D) 32 69,33 2,60

Les modèles ont été formés et testés sur IMAGEnet.

spotting les mots-clés

Modèle Original cluster
Précision de Top-1 (%) Taille de .tflite comprimé (MB) Configuration Nombre de groupes Précision de Top-1 (%) Taille de .tflite comprimé (MB)
DS-CNN-L 95,03 1.5 Plein 32 94,71 0,3

Les modèles ont été formés et testés sur SpeechCommands v0.02.

  1. Sérialiser le modèle Keras dans le fichier .h5
  2. Convertir le fichier .h5 en utilisant .tflite TFLiteConverter.from_keras_model_file()
  3. Compresser le fichier .tflite dans un zip

Exemples

En plus du regroupement de poids dans l' exemple Keras , voir les exemples suivants:

  • Regroupez les poids d'un modèle CNN formé sur l'ensemble de données de classification chiffres manuscrits MNIST: Code

La mise en œuvre de clustering de poids est basé sur la compression profonde: Compresser profonde Réseaux de Neurones Avec Élagage, Formés Quantification et codage de Huffman papier . Voir le chapitre 3, intitulé Formé Quantification et le partage du poids.