Formazione consapevole della quantizzazione

Gestito da TensorFlow Model Optimization

Esistono due forme di quantizzazione: quantizzazione post-allenamento e formazione consapevole della quantizzazione. Inizia con la quantizzazione post-addestramento poiché è più facile da usare, anche se l'addestramento basato sulla quantizzazione è spesso migliore per l'accuratezza del modello.

Questa pagina fornisce una panoramica sulla formazione basata sulla quantizzazione per aiutarti a determinare come si adatta al tuo caso d'uso.

Panoramica

La formazione basata sulla quantizzazione emula la quantizzazione del tempo di inferenza, creando un modello che gli strumenti a valle utilizzeranno per produrre modelli effettivamente quantizzati. I modelli quantizzati utilizzano una precisione inferiore (ad esempio 8 bit anziché 32 bit in virgola mobile), con conseguenti vantaggi durante la distribuzione.

Distribuire con quantizzazione

La quantizzazione apporta miglioramenti tramite la compressione del modello e la riduzione della latenza. Con le impostazioni predefinite dell'API, le dimensioni del modello si riducono di 4 volte e in genere vediamo miglioramenti tra 1,5 e 4 volte nella latenza della CPU nei backend testati. Alla fine, è possibile notare miglioramenti della latenza sugli acceleratori di machine learning compatibili, come EdgeTPU e NNAPI.

La tecnica viene utilizzata nella produzione in casi d'uso di parlato, visione, testo e traduzione. Il codice attualmente supporta un sottoinsieme di questi modelli .

Sperimenta la quantizzazione e l'hardware associato

Gli utenti possono configurare i parametri di quantizzazione (ad esempio il numero di bit) e, in una certa misura, gli algoritmi sottostanti. Tieni presente che con queste modifiche rispetto alle impostazioni predefinite dell'API, attualmente non esiste alcun percorso supportato per la distribuzione su un backend. Ad esempio, la conversione TFLite e le implementazioni del kernel supportano solo la quantizzazione a 8 bit.

Le API specifiche per questa configurazione sono sperimentali e non soggette a compatibilità con le versioni precedenti.

Compatibilità API

Gli utenti possono applicare la quantizzazione con le seguenti API:

  • Modellismo: keras con i soli modelli Sequenziale e Funzionale.
  • Versioni di TensorFlow: TF 2.x per tf-nightly.
  • Modalità di esecuzione TensorFlow: esecuzione entusiasta

È nel nostro piano d'azione aggiungere supporto nelle seguenti aree:

  • Costruzione di modelli: chiarire come i modelli sottoclassati abbiano un supporto limitato o nullo
  • Formazione distribuita: tf.distribute

Matrice generale di supporto

Il supporto è disponibile nelle seguenti aree:

  • Copertura del modello: modelli che utilizzano layer consentiti , BatchNormalization quando segue i layer Conv2D e DepthwiseConv2D e, in casi limitati, Concat .
  • Accelerazione hardware: le nostre impostazioni API predefinite sono compatibili con l'accelerazione sui backend EdgeTPU, NNAPI e TFLite, tra gli altri. Vedere l'avvertenza nella tabella di marcia.
  • Distribuzione con quantizzazione: attualmente è supportata solo la quantizzazione per asse per gli strati convoluzionali, non la quantizzazione per tensore.

È nel nostro piano d'azione aggiungere supporto nelle seguenti aree:

  • Copertura del modello: estesa per includere RNN/LSTM e supporto generale Concat.
  • Accelerazione hardware: garantisce che il convertitore TFLite possa produrre modelli interi. Vedi questo problema per i dettagli.
  • Sperimenta casi d'uso di quantizzazione:
    • Sperimenta algoritmi di quantizzazione che si estendono su livelli Keras o richiedono la fase di training.
    • Stabilizzare le API.

Risultati

Classificazione delle immagini con strumenti

Modello Precisione Top-1 non quantizzata Precisione quantizzata a 8 bit
MobilenetV1 224 71,03% 71,06%
Resnet v150 76,3% 76,1%
MobilenetV2 224 70,77% 70,01%

I modelli sono stati testati su Imagenet e valutati sia in TensorFlow che in TFLite.

Classificazione delle immagini per tecnica

Modello Precisione Top-1 non quantizzata Precisione quantizzata a 8 bit
Nasnet-Mobile 74% 73%
Resnet-v2 50 75,6% 75%

I modelli sono stati testati su Imagenet e valutati sia in TensorFlow che in TFLite.

Esempi

Oltre all'esempio di formazione sul riconoscimento della quantizzazione , vedere i seguenti esempi:

  • Modello CNN sull'attività di classificazione delle cifre scritte a mano MNIST con quantizzazione: codice

Per informazioni generali su qualcosa di simile, vedere il documento Quantizzazione e addestramento delle reti neurali per l'inferenza efficiente di sola aritmetica intera . Questo documento introduce alcuni concetti utilizzati da questo strumento. L'implementazione non è esattamente la stessa e ci sono concetti aggiuntivi utilizzati in questo strumento (ad esempio la quantizzazione per asse).