Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Raggruppamento del peso

Mantenuto da Arm ML Tooling

Questo documento fornisce una panoramica sul raggruppamento del peso per aiutarti a determinare come si adatta al tuo caso d'uso.

Panoramica

Il clustering, o condivisione del peso, riduce il numero di valori di peso univoci in un modello, portando a vantaggi per la distribuzione. Raggruppa prima i pesi di ogni strato in N cluster, quindi condivide il valore del centroide del cluster per tutti i pesi appartenenti al cluster.

Questa tecnica apporta miglioramenti tramite la compressione del modello. Il supporto futuro del framework può sbloccare miglioramenti dell'impronta di memoria che possono fare una differenza cruciale per la distribuzione di modelli di deep learning su sistemi embedded con risorse limitate.

Abbiamo sperimentato il raggruppamento tra compiti visivi e vocali. Abbiamo riscontrato miglioramenti fino a 5 volte nella compressione del modello con una perdita di precisione minima, come dimostrato dai risultati presentati di seguito.

Si noti che il clustering fornirà vantaggi ridotti per la convoluzione e i livelli densi che precedono un livello di normalizzazione batch, nonché in combinazione con la quantizzazione post-training per asse.

Matrice di compatibilità API

Gli utenti possono applicare il clustering con le seguenti API:

  • Modellismo: tf.keras con solo modelli sequenziali e funzionali
  • Versioni di TensorFlow: TF 1.x per le versioni 1.14+ e 2.x.
    • tf.compat.v1 con un pacchetto TF 2.X e tf.compat.v2 con un pacchetto TF 1.X non sono supportati.
  • Modalità di esecuzione di TensorFlow: sia grafico che desideroso

Risultati

Classificazione delle immagini

Modello Originale Raggruppato
Precisione Top-1 (%) Dimensione del file .tflite compresso (MB) Configurazione # di cluster Precisione Top-1 (%) Dimensione del file .tflite compresso (MB)
MobileNetV1 71.02 14.96
Selettivo (ultimi 3 strati Conv2D) 256, 256, 32 70.62 8.42
Completo (tutti i livelli Conv2D) 64 66.07 2.98
MobileNetV2 72.29 12.90
Selettivo (ultimi 3 strati Conv2D) 256, 256, 32 72.31 7.00
Completo (tutti i livelli Conv2D) 32 69.33 2.60

I modelli sono stati addestrati e testati su ImageNet.

Individuazione delle parole chiave

Modello Originale Raggruppato
Precisione Top-1 (%) Dimensione del file .tflite compresso (MB) Configurazione # di cluster Precisione Top-1 (%) Dimensione del file .tflite compresso (MB)
DS-CNN-L 95.03 1.5 Pieno 32 94.71 0.3

I modelli sono stati addestrati e testati su SpeechCommands v0.02.

  1. Serializza il modello Keras in un file .h5
  2. Converti il ​​file .h5 in .tflite usando TFLiteConverter.from_keras_model_file()
  3. Comprimi il file .tflite in un file zip

Esempi

Oltre al raggruppamento del peso nell'esempio di Keras , vedere i seguenti esempi:

  • Raggruppa i pesi di un modello CNN addestrato sul set di dati di classificazione delle cifre scritte a mano MNIST: codice

L'implementazione del raggruppamento del peso si basa sul documento Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization e Huffman Coding paper . Vedere il capitolo 3, intitolato Quantizzazione addestrata e condivisione del peso .