LiteRT ti consente di eseguire modelli TensorFlow, PyTorch e JAX nelle tue app per Android. Il sistema LiteRT fornisce ambienti di esecuzione predefiniti e personalizzabili per eseguire modelli su Android in modo rapido ed efficiente, incluse opzioni per l'accelerazione hardware.
Ad esempio, le applicazioni Android che utilizzano LiteRT, consulta il repository LiteRT samples.
Modelli di machine learning
LiteRT utilizza modelli TensorFlow, PyTorch e JAX che vengono convertiti in un formato di modello di machine learning più piccolo, portatile ed efficiente. Puoi utilizzare i modelli predefiniti con LiteRT su Android oppure creare i tuoi modelli e convertirli in formato LiteRT.
Questa pagina illustra l'utilizzo di modelli di machine learning già creati e non riguarda la creazione, l'addestramento, il test o la conversione dei modelli. Scopri di più su come selezionare, modificare, creare e convertire i modelli di machine learning per LiteRT nella pagina Modelli.
Eseguire modelli su Android
Un modello LiteRT in esecuzione all'interno di un'app per Android acquisisce i dati, li elabora e genera una previsione in base alla logica del modello. Per l'esecuzione di un modello LiteRT è necessario un ambiente di runtime speciale e i dati trasmessi al modello devono essere in un formato specifico, chiamato tensore. Quando un modello elabora i dati, ovvero esegue un'inferenza, genera risultati di previsione sotto forma di nuovi tensori e li passa all'app per Android in modo che possa intervenire, ad esempio mostrando il risultato a un utente o eseguendo logica di business aggiuntiva.
Figura 1. Flusso di esecuzione funzionale per i modelli LiteRT nelle app per Android.
A livello di progettazione funzionale, l'app per Android richiede i seguenti elementi per eseguire un modello LiteRT:
- Ambiente di runtime LiteRT per l'esecuzione del modello
- Gestione degli input del modello per trasformare i dati in tensori
- Gestione dell'output del modello per ricevere i tensori dei risultati di output e interpretarli come risultati di previsione
Le sezioni seguenti descrivono in che modo le librerie e gli strumenti LiteRT forniscono questi elementi funzionali.
Creare app con LiteRT
Questa sezione descrive il percorso consigliato e più comune per implementare LiteRT nella tua app per Android. Devi prestare particolare attenzione alle sezioni ambiente di runtime e librerie di sviluppo. Se hai sviluppato un modello personalizzato, assicurati di consultare la sezione Percorsi di sviluppo avanzato.
Opzioni di ambiente di runtime
Esistono diversi modi per attivare un ambiente di runtime per l'esecuzione di modelli nella tua app per Android. Queste sono le opzioni preferite:
- LiteRT nell'ambiente di runtime di Google Play Services (opzione consigliata)
- Ambiente di runtime LiteRT autonomo
In generale, ti consigliamo di utilizzare l'ambiente di runtime fornito dai servizi Google Play perché è più efficiente in termini di spazio rispetto all'ambiente standard, poiché si carica dinamicamente e mantiene le dimensioni dell'app più piccole. Inoltre, Google Play Services utilizza automaticamente la release stabile più recente del runtime LiteRT, offrendoti funzionalità aggiuntive e prestazioni migliorate nel tempo. Se offri la tua app su dispositivi che non includono Google Play Services o se devi gestire attentamente l'ambiente di runtime ML, devi utilizzare il runtime LiteRT standard. Questa opzione raggruppa codice aggiuntivo nella tua app, consentendoti di avere un maggiore controllo sul runtime ML nella tua app, a costo di aumentare le dimensioni del download dell'app.
Puoi accedere a questi ambienti di runtime nella tua app per Android aggiungendo le librerie di sviluppo LiteRT al tuo ambiente di sviluppo app. Per informazioni su come utilizzare gli ambienti di runtime standard nella tua app, consulta la sezione successiva.
Biblioteche
Puoi accedere all'API Interprete utilizzando i servizi Google Play. Puoi utilizzare le librerie di core e di supporto di LiteRT nella tua app per Android. Per informazioni dettagliate sulla programmazione per l'utilizzo delle librerie e degli ambienti di runtime di LiteRT, consulta Strumenti di sviluppo per Android.
Ottenere modelli
L'esecuzione di un modello in un'app per Android richiede un modello in formato LiteRT. Puoi utilizzare modelli predefiniti o crearne uno e convertirlo nel formato Lite. Per ulteriori informazioni su come ottenere modelli per la tua app per Android, consulta la pagina Modelli di LiteRT.
Gestire i dati di input
Tutti i dati che passi a un modello di ML devono essere un tensore con una struttura di dati specifica, spesso chiamata forma del tensore. Per elaborare i dati con un modello, il codice dell'app deve trasformare i dati dal formato nativo, ad esempio immagini, testo o dati audio, in un tensore nella forma richiesta per il modello.
Esegui inferenze
L'elaborazione dei dati tramite un modello per generare un risultato di previsione è nota come inferenza. L'esecuzione di un'inferenza in un'app per Android richiede un ambiente di runtime LiteRT, un modello e dati di input.
La velocità con cui un modello può generare un'inferenza su un determinato dispositivo dipende dalle dimensioni dei dati elaborati, dalla complessità del modello e dalle risorse di calcolo disponibili, come memoria e CPU, o da processori specializzati chiamati acceleratori. I modelli di machine learning possono essere eseguiti più velocemente su questi processori specializzati, come le unità di elaborazione grafica (GPU) e le unità di elaborazione tensoriale (TPU), utilizzando i driver hardware LiteRT chiamati delegati. Per ulteriori informazioni sui delegati e sull'accelerazione hardware dell'elaborazione del modello, consulta la Panoramica dell'accelerazione hardware.
Gestire i risultati di output
I modelli generano risultati di previsione sotto forma di tensori, che devono essere gestiti dalla tua app Android intraprendendo un'azione o mostrando un risultato all'utente. I risultati dell'output del modello possono essere semplici come un numero corrispondente a un singolo risultato (0 = cane, 1 = gatto, 2 = uccello) per la classificazione di un'immagine, fino a risultati molto più complessi, come più caselle delimitanti per diversi oggetti classificati in un'immagine, con valutazioni dell'affidabilità della previsione comprese tra 0 e 1.
Percorsi di sviluppo avanzati
Quando utilizzi modelli LiteRT più sofisticati e personalizzati, potresti dover utilizzare approcci di sviluppo più avanzati rispetto a quelli descritti sopra. Le sezioni seguenti descrivono tecniche avanzate per l'esecuzione e lo sviluppo di modelli per LiteRT nelle app per Android.
Ambienti di runtime avanzati
Oltre agli ambienti di runtime standard e di runtime di Google Play Services per LiteRT, esistono altri ambienti di runtime che puoi utilizzare con la tua app per Android. L'utilizzo più probabile di questi ambienti è se hai un modello di machine learning che utilizza operazioni di ML non supportate dall'ambiente di runtime standard per LiteRT.
- Runtime flessibile per LiteRT
- Runtime LiteRT personalizzato
Il runtime Flex di LiteRT ti consente di includere operatori specifici richiesti per il tuo modello. Come opzione avanzata per l'esecuzione del modello, puoi creare LiteRT per Android in modo da includere operatori e altre funzionalità obbligatorie per l'esecuzione del modello di machine learning di TensorFlow. Per ulteriori informazioni, consulta Creare LiteRT per Android.
API C e C++
LiteRT fornisce anche un'API per l'esecuzione di modelli utilizzando C e C++. Se la tua app utilizza Android NDK, ti consigliamo di utilizzare questa API. Ti consigliamo di utilizzare questa API anche se vuoi poter condividere il codice tra più piattaforme. Per ulteriori informazioni su questa opzione di sviluppo, consulta la pagina Strumenti per lo sviluppo.
Esecuzione del modello basata su server
In generale, ti consigliamo di eseguire i modelli nella tua app su un dispositivo Android per usufruire di una latenza inferiore e di una privacy dei dati migliorata per i tuoi utenti. Tuttavia, in alcuni casi l'esecuzione di un modello su un server cloud, al di fuori del dispositivo, è una soluzione migliore. Ad esempio, se hai un modello di grandi dimensioni che non si comprime facilmente a dimensioni adatte ai dispositivi Android degli utenti o che può essere eseguito con un rendimento ragionevole su questi dispositivi. Questo approccio potrebbe anche essere la tua soluzione preferita se la priorità assoluta è il rendimento costante del modello su una vasta gamma di dispositivi.
Google Cloud offre una suite completa di servizi per l'esecuzione di modelli di IA. Per ulteriori informazioni, consulta la pagina relativa ai prodotti di AI e machine learning di Google Cloud.
Sviluppo e ottimizzazione di modelli personalizzati
I percorsi di sviluppo più avanzati potrebbero includere lo sviluppo di modelli di machine learning personalizzati e la loro ottimizzazione per l'utilizzo su dispositivi Android. Se hai intenzione di creare modelli personalizzati, assicurati di prendere in considerazione l'applicazione di tecniche di quantizzazione ai modelli per ridurre la memoria e i costi di elaborazione. Per ulteriori informazioni su come creare modelli ad alte prestazioni da utilizzare con LiteRT, consulta le best practice per il rendimento nella sezione Modelli.