Gestito da Arm ML Tooling
Questo documento fornisce una panoramica sul clustering del peso per aiutarti a determinare come si adatta al tuo caso d'uso.
- Per immergerti direttamente in un esempio end-to-end, consulta l' esempio di clustering del peso .
- Per trovare rapidamente le API necessarie per il tuo caso d'uso, consulta la guida completa al clustering del peso .
Panoramica
Il clustering o la condivisione del peso riduce il numero di valori di peso univoci in un modello, con conseguenti vantaggi per la distribuzione. Innanzitutto raggruppa i pesi di ogni strato in N cluster, quindi condivide il valore del baricentro del cluster per tutti i pesi appartenenti al cluster.
Questa tecnica apporta miglioramenti tramite la compressione del modello. Il futuro supporto del framework può sbloccare miglioramenti dell’impronta di memoria che possono fare una differenza cruciale per l’implementazione di modelli di deep learning su sistemi embedded con risorse limitate.
Abbiamo sperimentato il clustering tra compiti visivi e vocali. Abbiamo riscontrato miglioramenti fino a 5 volte nella compressione del modello con una perdita minima di precisione, come dimostrato dai risultati presentati di seguito.
Tieni presente che il clustering fornirà vantaggi ridotti per la convoluzione e gli strati densi che precedono uno strato di normalizzazione batch, nonché in combinazione con la quantizzazione post-addestramento per asse.
Matrice di compatibilità API
Gli utenti possono applicare il clustering con le seguenti API:
- Modellismo:
keras
con i soli modelli Sequenziale e Funzionale - Versioni TensorFlow: TF 1.x per le versioni 1.14+ e 2.x.
-
tf.compat.v1
con un pacchetto TF 2.X etf.compat.v2
con un pacchetto TF 1.X non sono supportati.
-
- Modalità di esecuzione di TensorFlow: sia grafica che entusiasta
Risultati
Classificazione delle immagini
Modello | Originale | Raggruppato | ||||
---|---|---|---|---|---|---|
Precisione massima 1 (%) | Dimensione del file .tflite compresso (MB) | Configurazione | N. di cluster | Precisione massima 1 (%) | Dimensione del file .tflite compresso (MB) | |
MobileNetV1 | 70.976 | 14.97 | ||||
Selettivo (ultimi 3 livelli Conv2D) | 16, 16, 16 | 70.294 | 7.69 | |||
Selettivo (ultimi 3 livelli Conv2D) | 32, 32, 32 | 70,69 | 8.22 | |||
Completo (tutti i livelli Conv2D) | 32 | 69.4 | 4.43 | |||
MobileNetV2 | 71.778 | 12.38 | ||||
Selettivo (ultimi 3 livelli Conv2D) | 16, 16, 16 | 70.742 | 6.68 | |||
Selettivo (ultimi 3 livelli Conv2D) | 32, 32, 32 | 70.926 | 7.03 | |||
Completo (tutti i livelli Conv2D) | 32 | 69.744 | 4.05 |
I modelli sono stati addestrati e testati su ImageNet.
Individuazione delle parole chiave
Modello | Originale | Raggruppato | ||||
---|---|---|---|---|---|---|
Precisione massima 1 (%) | Dimensione del file .tflite compresso (MB) | Configurazione | N. di cluster | Precisione massima 1 (%) | Dimensione del file .tflite compresso (MB) | |
DS-CNN-L | 95.233 | 1.46 | ||||
Completo (tutti i livelli Conv2D) | 32 | 95.09 | 0,39 | |||
Completo (tutti i livelli Conv2D) | 8 | 94.272 | 0,27 |
Il modello è stato addestrato e testato su SpeechCommands v0.02.
- Serializza il modello Keras nel file .h5
- Converti il file .h5 in .tflite utilizzando
TFLiteConverter.from_keras_model_file()
- Comprimi il file .tflite in uno zip
Esempi
Oltre all'esempio Clustering del peso in Keras , vedere i seguenti esempi:
- Raggruppare i pesi di un modello CNN addestrato sul set di dati di classificazione delle cifre scritte a mano MNIST: codice
L'implementazione del clustering del peso si basa sul documento Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization e Huffman Coding . Vedere il capitolo 3, intitolato Quantizzazione addestrata e condivisione del peso .