I modelli di machine learning (ML) che utilizzi con TensorFlow Lite sono originariamente creati e addestrati utilizzando gli strumenti e le librerie di base di TensorFlow. Una volta creato un modello con TensorFlow Core, puoi convertirlo in un formato di modello ML più piccolo ed efficiente, chiamato modello TensorFlow Lite. Questa sezione fornisce indicazioni per convertire i modelli TensorFlow nel formato del modello TensorFlow Lite.
Flusso di lavoro della conversione
La conversione dei modelli TensorFlow nel formato TensorFlow Lite può richiedere alcuni percorsi, a seconda dei contenuti del modello ML. Come prima fase, devi valutare il modello per capire se può essere convertito direttamente. Questa valutazione determina se il contenuto del modello è supportato dagli ambienti di runtime standard di TensorFlow Lite in base alle operazioni TensorFlow che utilizza. Se il tuo modello utilizza operazioni non incluse nel set supportato, puoi scegliere di eseguire il refactoring del modello o utilizzare tecniche di conversione avanzate.
Il diagramma seguente mostra i passaggi generali della conversione di un modello.
Figura 1. Flusso di lavoro della conversione su TensorFlow Lite.
Le seguenti sezioni descrivono il processo di valutazione e conversione dei modelli da utilizzare con TensorFlow Lite.
Formati modello di input
Puoi utilizzare il convertitore con i seguenti formati dei modelli di input:
- SavedModel (consigliato): un modello TensorFlow salvato come set di file su disco.
- Modello Keras: un modello creato utilizzando l'API Keras di alto livello.
- Formato Keras H5: un'alternativa leggera al formato SaveModel supportato dall'API Keras.
- Modelli creati da funzioni concrete: un modello creato con l'API TensorFlow di basso livello.
Puoi salvare sia il modello di funzione Keras che quello concreto come SaveModel e convertirlo utilizzando il percorso consigliato.
Se disponi di un modello Jax, puoi utilizzare l'API TFLiteConverter.experimental_from_jax
per convertirlo nel formato TensorFlow Lite. 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 TensorFlow Lite. Devi inoltre determinare se il modello è adatto all'utilizzo su dispositivi mobili e periferici in termini di dimensioni dei dati utilizzati, requisiti di elaborazione hardware, dimensioni complessive e complessità del modello.
Per molti modelli, il convertitore dovrebbe funzionare immediatamente. Tuttavia, la libreria di operatori integrata di TensorFlow Lite supporta un sottoinsieme di operatori principali di TensorFlow, pertanto alcuni modelli potrebbero richiedere passaggi aggiuntivi prima di essere convertiti in TensorFlow Lite. Inoltre, alcune operazioni supportate da TensorFlow Lite hanno requisiti di utilizzo limitati per motivi di prestazioni. Consulta la guida alla compatibilità degli operatori per determinare se il tuo modello deve essere sottoposto a refactoring per la conversione.
Conversione del modello
Il convertitore TensorFlow Lite utilizza un modello TensorFlow e genera un
modello TensorFlow Lite (un formato
FlatBuffer ottimizzato identificato dall'estensione
del file .tflite
). Puoi caricare un modello SaveModel o convertire direttamente un modello creato nel codice.
Il convertitore utilizza tre flag (o opzioni) principali che personalizzano la conversione per il tuo modello:
- I flag di compatibilità consentono di specificare se la conversione deve consentire operatori personalizzati.
- I flag di ottimizzazione consentono di specificare il tipo di ottimizzazione da applicare durante la conversione. La tecnica di ottimizzazione più utilizzata è la quanitizzazione post-addestramento.
- I flag dei metadati consentono di aggiungere metadati al modello convertito, semplificando la creazione di codice wrapper specifico per la piattaforma durante il deployment dei modelli sui dispositivi.
Puoi convertire il tuo modello utilizzando l'API Python o lo strumento Riga di comando. Consulta la guida Converti modello TF per istruzioni dettagliate su come eseguire il convertitore sul tuo modello.
In genere, convertiresti il modello per l'ambiente di runtime standard di TensorFlow Lite o per l'ambiente di runtime di Google Play Services per TensorFlow Lite (beta). Alcuni casi d'uso avanzati richiedono la personalizzazione dell'ambiente di runtime del modello, che richiede passaggi aggiuntivi nella procedura di conversione. Per ulteriori indicazioni, consulta la sezione relativa all'ambiente di runtime avanzato della panoramica di Android.
Conversione avanzata
Se si verificano errori durante l'esecuzione del convertitore sul tuo modello, è molto probabile che tu abbia 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 TensorFlow Lite modificato e un ambiente di runtime personalizzato per quel modello.
- Consulta la Panoramica della compatibilità dei modelli per ulteriori informazioni sulle considerazioni relative alla compatibilità dei modelli TensorFlow e TensorFlow Lite.
- Gli argomenti nella Panoramica della compatibilità dei modelli trattano tecniche avanzate per il refactoring del modello, ad esempio la guida Seleziona operatori.
- Per un elenco completo delle operazioni e delle limitazioni, consulta la pagina Operazioni di TensorFlow Lite.
Passaggi successivi
- Consulta la guida sulla conversione dei modelli TF per iniziare rapidamente la conversione del modello.
- Consulta la panoramica dell'ottimizzazione per linee guida su come ottimizzare il modello convertito utilizzando tecniche come la quanitizzazione post-addestramento.
- Per informazioni su come aggiungere metadati ai tuoi modelli, consulta la sezione Panoramica dell'aggiunta di metadati. I metadati forniscono una descrizione del modello in altri modi, nonché informazioni che possono essere sfruttate dai generatori di codice.