Formazione consapevole della quantizzazione

Gestito dall'ottimizzazione del modello TensorFlow

Esistono due forme di quantizzazione: quantizzazione post-allenamento e formazione consapevole della quantizzazione. Inizia con la quantizzazione post-allenamento poiché è più facile da usare, sebbene il training consapevole della quantizzazione sia spesso migliore per la precisione del modello.

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

Panoramica

Il training consapevole della 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 es. 8 bit anziché 32 bit float), portando vantaggi durante l'implementazione.

Distribuire con quantizzazione

La quantizzazione apporta miglioramenti tramite la compressione del modello e la riduzione della latenza. Con le impostazioni predefinite dell'API, la dimensione del modello si riduce di 4 volte e in genere vediamo miglioramenti tra 1,5 e 4 volte nella latenza della CPU nei backend testati. Alla fine, i miglioramenti della latenza possono essere visti su acceleratori di machine learning compatibili, come EdgeTPU e NNAPI.

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

Sperimenta con la quantizzazione e l'hardware associato

Gli utenti possono configurare i parametri di quantizzazione (es. numero di bit) e, in una certa misura, gli algoritmi sottostanti. Tieni presente che con queste modifiche rispetto alle impostazioni predefinite dell'API, non esiste attualmente alcun percorso supportato per la distribuzione in un back-end. Ad esempio, la conversione di 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:

  • Model building: tf.keras con solo modelli Sequenziali e Funzionali.
  • Versioni TensorFlow: TF 2.x per tf-nightly.
  • Modalità di esecuzione TensorFlow: esecuzione desiderosa

È nella nostra tabella di marcia aggiungere il supporto nelle seguenti aree:

  • Model building: chiarire come i modelli di sottoclasse abbiano limitato a nessun supporto
  • Formazione distribuita: tf.distribute

Matrice di supporto generale

Il supporto è disponibile nelle seguenti aree:

  • Copertura del modello: modelli che utilizzano livelli consentiti , BatchNormalization quando segue i livelli Conv2D e DepthwiseConv2D e, in casi limitati, Concat .
  • Accelerazione hardware: le nostre API predefinite sono compatibili con l'accelerazione su 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 i livelli convoluzionali, non la quantizzazione per tensore.

È nella nostra tabella di marcia aggiungere il supporto nelle seguenti aree:

  • Copertura del modello: estesa per includere RNN/LSTM e supporto generale Concat.
  • Accelerazione hardware: assicurati che il convertitore TFLite possa produrre modelli interi completi. Vedere questo problema per i dettagli.
  • Sperimenta con i casi d'uso della quantizzazione:
    • Sperimenta algoritmi di quantizzazione che si estendono su livelli Keras o richiedono la fase di addestramento.
    • 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 v1 50 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 la 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 consapevole della quantizzazione , vedere i seguenti esempi:

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

Per informazioni su qualcosa di simile, vedere il documento Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference . 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 es. quantizzazione per asse).