Partecipa al simposio Women in ML il 7 dicembre Registrati ora

Compatibilità con TensorFlow Lite e TensorFlow

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Gli operatori di machine learning (ML) utilizzati nel modello possono influire sul processo di conversione di un modello TensorFlow in formato TensorFlow Lite. Il convertitore TensorFlow Lite supporta un numero limitato di operazioni TensorFlow utilizzate nei modelli di inferenza comuni, il che significa che non tutti i modelli sono direttamente convertibili. Lo strumento di conversione consente di includere operatori aggiuntivi, ma la conversione di un modello in questo modo richiede anche la modifica dell'ambiente di runtime TensorFlow Lite che utilizzi per eseguire il modello, il che può limitare la tua capacità di utilizzare le opzioni di distribuzione di runtime standard, come i servizi di Google Play .

Il convertitore TensorFlow Lite è progettato per analizzare la struttura del modello e applicare ottimizzazioni al fine di renderlo compatibile con gli operatori direttamente supportati. Ad esempio, a seconda degli operatori ML nel modello, il convertitore può eliminare o fondere tali operatori per mapparli alle loro controparti TensorFlow Lite.

Anche per le operazioni supportate, a volte sono previsti modelli di utilizzo specifici, per motivi di prestazioni. Il modo migliore per capire come costruire un modello TensorFlow che può essere utilizzato con TensorFlow Lite è considerare attentamente come le operazioni vengono convertite e ottimizzate, insieme ai limiti imposti da questo processo.

Operatori supportati

Gli operatori integrati di TensorFlow Lite sono un sottoinsieme degli operatori che fanno parte della libreria principale di TensorFlow. Il tuo modello TensorFlow può anche includere operatori personalizzati sotto forma di operatori compositi o nuovi operatori definiti da te. Il diagramma seguente mostra le relazioni tra questi operatori.

Operatori TensorFlow

Da questa gamma di operatori di modelli ML, ci sono 3 tipi di modelli supportati dal processo di conversione:

  1. Modelli con solo operatore integrato TensorFlow Lite. ( Consigliato )
  2. Modella con gli operatori integrati e seleziona gli operatori principali TensorFlow.
  3. Modelli con operatori integrati, operatori principali TensorFlow e/o operatori personalizzati.

Se il modello contiene solo operazioni supportate in modo nativo da TensorFlow Lite, non sono necessari flag aggiuntivi per convertirlo. Questo è il percorso consigliato perché questo tipo di modello verrà convertito senza problemi ed è più semplice da ottimizzare ed eseguire utilizzando il runtime TensorFlow Lite predefinito. Hai anche più opzioni di implementazione per il tuo modello come i servizi di Google Play . Puoi iniziare con la guida del convertitore TensorFlow Lite . Vedere la pagina TensorFlow Lite Ops per un elenco di operatori integrati.

Se è necessario includere operazioni TensorFlow selezionate dalla libreria principale, è necessario specificarlo al momento della conversione e assicurarsi che il runtime includa tali operazioni. Vedere l'argomento Seleziona operatori TensorFlow per i passaggi dettagliati.

Quando possibile, evita l'ultima opzione di includere operatori personalizzati nel tuo modello convertito. Gli operatori personalizzati sono operatori creati combinando più operatori principali di TensorFlow primitivi o definendone uno completamente nuovo. Quando gli operatori personalizzati vengono convertiti, possono aumentare le dimensioni del modello complessivo incorrendo in dipendenze al di fuori della libreria TensorFlow Lite incorporata. Le operazioni personalizzate, se non create specificamente per la distribuzione di dispositivi mobili o dispositivi, possono comportare prestazioni peggiori se distribuite su dispositivi con risorse limitate rispetto a un ambiente server. Infine, proprio come l'inclusione di operatori core TensorFlow selezionati, gli operatori personalizzati richiedono la modifica dell'ambiente di runtime del modello che impedisce di sfruttare i servizi di runtime standard come i servizi di Google Play .

Tipi supportati

La maggior parte delle operazioni di TensorFlow Lite hanno come target l'inferenza sia in virgola mobile ( float32 ) che quantizzata ( uint8 , int8 ), ma molte operazioni non lo fanno ancora per altri tipi come tf.float16 e strings.

Oltre a utilizzare versioni diverse delle operazioni, l'altra differenza tra i modelli a virgola mobile e quantizzati è il modo in cui vengono convertiti. La conversione quantizzata richiede informazioni sull'intervallo dinamico per i tensori. Ciò richiede una "quantizzazione falsa" durante l'addestramento del modello, ottenere informazioni sull'intervallo tramite un set di dati di calibrazione o eseguire una stima dell'intervallo "al volo". Vedere quantizzazione per maggiori dettagli.

Conversioni semplici, piegatura e fusione costanti

Un certo numero di operazioni TensorFlow possono essere elaborate da TensorFlow Lite anche se non hanno un equivalente diretto. Questo è il caso delle operazioni che possono essere semplicemente rimosse dal grafico ( tf.identity ), sostituite da tensori ( tf.placeholder ) o fuse in operazioni più complesse ( tf.nn.bias_add ). Anche alcune operazioni supportate possono talvolta essere rimosse tramite uno di questi processi.

Di seguito è riportato un elenco non esaustivo di operazioni TensorFlow che di solito vengono rimosse dal grafico:

Operazioni sperimentali

Sono presenti le seguenti operazioni TensorFlow Lite, ma non pronte per i modelli personalizzati:

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF