Panoramica della conversione dei modelli TensorFlow

I modelli di machine learning (ML) che utilizzi con LiteRT sono originariamente creati e addestrati utilizzando librerie e strumenti TensorFlow core. Dopo aver creato un modello con TensorFlow Core, puoi convertirlo in un formato di modello ML più piccolo ed efficiente chiamato modello LiteRT. Questa sezione fornisce indicazioni per la conversione dei modelli TensorFlow nel formato del modello LiteRT.

Flusso di lavoro di conversione

La conversione dei modelli TensorFlow nel formato LiteRT può seguire diversi percorsi a seconda del contenuto del modello ML. Come primo passo di questo processo, devi valutare il modello per determinare se può essere convertito direttamente. Questa valutazione determina se il contenuto del modello è supportato dagli ambienti di runtime LiteRT standard in base alle operazioni TensorFlow che utilizza. Se il tuo modello utilizza operazioni al di fuori del set supportato, hai la possibilità di refattorizzare il modello o utilizzare tecniche di conversione avanzate.

Il diagramma seguente mostra i passaggi di alto livello per la conversione di un modello.

Flusso di lavoro di conversione TFLite

Figura 1. Flusso di lavoro di conversione LiteRT.

Le sezioni seguenti descrivono la procedura di valutazione e conversione dei modelli per l'utilizzo con LiteRT.

Formati dei modelli di input

Puoi utilizzare il convertitore con i seguenti formati di modelli di input:

Puoi salvare i modelli di funzioni Keras e concrete come SavedModel e convertirli utilizzando il percorso consigliato.

Se hai un modello Jax, puoi utilizzare l'API TFLiteConverter.experimental_from_jax per convertirlo nel formato LiteRT. Tieni presente che questa API è soggetta a modifiche in modalità sperimentale.

Valutazione delle conversioni

La valutazione del modello è un passaggio importante prima di tentare di convertirlo. Durante la valutazione, devi determinare se i contenuti del modello sono compatibili con il formato LiteRT. Devi anche determinare se il tuo modello è adatto all'uso su dispositivi mobili e edge in termini di dimensioni dei dati utilizzati, requisiti di elaborazione hardware e dimensioni e complessità complessive del modello.

Per molti modelli, il convertitore dovrebbe funzionare immediatamente. Tuttavia, la libreria di operatori integrata di LiteRT supporta un sottoinsieme di operatori principali di TensorFlow, il che significa che alcuni modelli potrebbero richiedere passaggi aggiuntivi prima della conversione in LiteRT. Inoltre, alcune operazioni supportate da LiteRT hanno requisiti di utilizzo limitato per motivi di rendimento. Consulta la guida alla compatibilità degli operatori per determinare se il tuo modello deve essere refattorizzato per la conversione.

Conversione del modello

Il convertitore LiteRT prende un modello TensorFlow e genera un modello LiteRT (un formato FlatBuffer ottimizzato identificato dall'estensione del file .tflite). Puoi caricare un SavedModel o convertire direttamente un modello creato nel codice.

Il convertitore accetta tre flag (o opzioni) principali che personalizzano la conversione per il tuo modello:

  1. I flag di compatibilità ti consentono di specificare se la conversione deve consentire operatori personalizzati.
  2. I flag di ottimizzazione ti consentono di specificare il tipo di ottimizzazione da applicare durante la conversione. La tecnica di ottimizzazione più utilizzata è la quantizzazione post-training.
  3. I flag dei metadati ti consentono di aggiungere metadati al modello convertito, il che semplifica la creazione di codice wrapper specifico della piattaforma durante il deployment dei modelli sui dispositivi.

Puoi convertire il modello utilizzando l'API Python o lo strumento riga di comando. Consulta la guida Converti modello TF per istruzioni passo passo sull'esecuzione del convertitore sul tuo modello.

In genere, il modello viene convertito per l'ambiente di runtime LiteRT standard o per l'ambiente di runtime dei servizi Google Play per LiteRT (beta). Alcuni casi d'uso avanzati richiedono la personalizzazione dell'ambiente di runtime del modello, che richiede passaggi aggiuntivi nel processo di conversione. Per ulteriori indicazioni, consulta la sezione Ambiente di runtime avanzato della panoramica di Android.

Conversione avanzata

Se si verificano errori durante l'esecuzione del convertitore sul modello, è molto probabile che si tratti di un problema di compatibilità dell'operatore. Non tutte le operazioni TensorFlow sono supportate da TensorFlow Lite. Puoi risolvere questi problemi eseguendo il refactoring del modello o utilizzando opzioni di conversione avanzate che ti consentono di creare un modello in formato LiteRT modificato e un ambiente di runtime personalizzato per questo modello.

Passaggi successivi