Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Gewichtsclustering

Wird von Arm ML Tooling gewartet

Dieses Dokument bietet einen Überblick über Gewichtsclustering, damit Sie feststellen können, wie es zu Ihrem Anwendungsfall passt.

Überblick

Durch Clustering oder Gewichtsverteilung wird die Anzahl der eindeutigen Gewichtswerte in einem Modell reduziert, was zu Vorteilen für die Bereitstellung führt. Es gruppiert zuerst die Gewichte jeder Schicht in N Cluster und teilt dann den Schwerpunktwert des Clusters für alle zum Cluster gehörenden Gewichte.

Diese Technik bringt Verbesserungen durch Modellkomprimierung. Zukünftige Framework-Unterstützung kann Verbesserungen des Speicherbedarfs freischalten, die einen entscheidenden Unterschied für die Bereitstellung von Deep-Learning-Modellen auf eingebetteten Systemen mit begrenzten Ressourcen ausmachen können.

Wir haben mit Clustering über Seh- und Sprachaufgaben experimentiert. Wir haben bis zu 5-fache Verbesserungen bei der Modellkomprimierung bei minimalem Genauigkeitsverlust festgestellt, wie die unten dargestellten Ergebnisse zeigen .

Bitte beachten Sie, dass Clustering weniger Vorteile für Faltungsschichten und dichte Schichten bietet, die einer Batch-Normalisierungsschicht vorausgehen, sowie in Kombination mit einer Quantisierung nach dem Training pro Achse.

API-Kompatibilitätsmatrix

Benutzer können Clustering mit den folgenden APIs anwenden:

  • tf.keras : tf.keras mit nur sequentiellen und funktionalen Modellen
  • TensorFlow-Versionen: TF 1.x für die Versionen 1.14+ und 2.x.
    • tf.compat.v1 mit einem TF 2.X-Paket und tf.compat.v2 mit einem TF 1.X-Paket werden nicht unterstützt.
  • TensorFlow-Ausführungsmodus: sowohl grafisch als auch eifrig

Ergebnisse

Bildklassifizierung

Modell Original Clustered
Top-1-Genauigkeit (%) Größe des komprimierten .tflite (MB) Aufbau Anzahl der Cluster Top-1-Genauigkeit (%) Größe des komprimierten .tflite (MB)
MobileNetV1 71.02 14.96
Selektiv (letzte 3 Conv2D-Schichten) 256, 256, 32 70,62 8.42
Voll (alle Conv2D-Ebenen) 64 66.07 2,98
MobileNetV2 72,29 12.90
Selektiv (letzte 3 Conv2D-Schichten) 256, 256, 32 72,31 7.00
Voll (alle Conv2D-Ebenen) 32 69,33 2,60

Die Modelle wurden auf ImageNet trainiert und getestet.

Keyword-Erkennung

Modell Original Clustered
Top-1-Genauigkeit (%) Größe des komprimierten .tflite (MB) Aufbau Anzahl der Cluster Top-1-Genauigkeit (%) Größe des komprimierten .tflite (MB)
DS-CNN-L 95.03 1.5 Voll 32 94,71 0,3

Die Modelle wurden mit SpeechCommands v0.02 trainiert und getestet.

  1. Serialisieren Sie das Keras-Modell in eine .h5-Datei
  2. Konvertieren Sie die .h5-Datei mit TFLiteConverter.from_keras_model_file() in .tflite.
  3. Komprimieren Sie die .tflite-Datei in eine Zip-Datei

Beispiele

Weitere Informationen zum Beispiel für das Weight Clustering in Keras finden Sie in den folgenden Beispielen:

  • Gruppieren Sie die Gewichte eines CNN-Modells, das auf dem handgeschriebenen MNIST-Ziffernklassifizierungsdatensatz trainiert wurde: Code

Das Gewicht Clustering - Implementierung basiert auf der Deep Compression: Kompression Tiefen Neuronale Netze mit Baum-, Ausgebildete Quantisierung und Huffman - Kodierung Papier . Siehe Kapitel 3 mit dem Titel Geschulte Quantisierung und Gewichtsverteilung .