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.
- Per immergerti direttamente in un esempio end-to-end, consulta l' esempio di formazione sul riconoscimento della quantizzazione .
- Per trovare rapidamente le API necessarie per il tuo caso d'uso, consulta la guida completa alla formazione basata sulla quantizzazione .
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.
-
tf.compat.v1
con un pacchetto TF 2.X non è supportato.
-
- 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).