I dispositivi mobili e incorporati hanno risorse di calcolo limitate, quindi è importante per mantenere efficienti le risorse. Abbiamo compilato un elenco di best practice e strategie utili per migliorare TensorFlow Prestazioni del modello Lite.
Scegli il modello migliore per l'attività
A seconda dell'attività, dovrai scendere a compromessi tra la complessità del modello e dimensioni. Se l'attività richiede un'elevata precisione, potrebbe essere necessaria un modello complesso. Per le attività che richiedono meno precisione, è meglio utilizzare una modelli più piccoli perché non solo utilizzano meno spazio su disco e memoria, ma generalmente anche più veloci ed efficienti dal punto di vista energetico. Ad esempio, i grafici seguenti mostrano compromessi in termini di accuratezza e latenza per alcuni modelli comuni di classificazione delle immagini.
Un esempio di modelli ottimizzati per i dispositivi mobili è MobileNets, ottimizzati per i dispositivi mobili applicazioni per la visione artificiale. Kaggle Modelli include molti altri ottimizzati specificatamente per i dispositivi mobili e incorporati.
Puoi riaddestrare i modelli elencati sul tuo set di dati utilizzando il trasferimento machine learning.
Profilazione del modello
Una volta selezionato un modello candidato adatto alla tua attività, è buona norma profilare e confrontare il modello. Benchmarking liteRT strumento ha un profiler integrato che mostra le statistiche di profilazione per operatore. Questo può aiutano a comprendere i colli di bottiglia delle prestazioni e gli operatori che dominano di calcolo.
Puoi anche usare LiteRT tracciamento verso il profilo il modello nella tua applicazione Android, utilizzando il tracciamento standard del sistema Android, e per visualizzare le chiamate dell'operatore in base all'ora con la profilazione basata su GUI i nostri strumenti.
Profila e ottimizza gli operatori nel grafico
Se un particolare operatore compare spesso nel modello e, in base profilazione, constata che l'operatore utilizza più tempo, può a ottimizzare l'operatore. Questo scenario dovrebbe essere raro perché TensorFlow Lite ha versioni ottimizzate per la maggior parte degli operatori. Tuttavia, potresti riuscire a scrivi una versione più veloce di un'operazione personalizzata se conosci i vincoli in cui dell'operatore telefonico. Consulta la guida per gli operatori personalizzati.
Ottimizza il modello
L'ottimizzazione dei modelli mira a creare modelli più piccoli che sono in genere più veloci più efficienti dal punto di vista energetico, in modo che possano essere implementate sui dispositivi mobili. LiteRT supporta diverse tecniche di ottimizzazione, come la quantizzazione.
Per maggiori dettagli, consulta la documentazione sull'ottimizzazione del modello.
Regolare il numero di thread
LiteRT supporta i kernel multi-thread per molti operatori. Puoi aumenta il numero di thread e velocizza l'esecuzione degli operatori. In aumento il numero di thread, tuttavia, farà sì che il modello utilizzi più risorse corrente.
Per alcune applicazioni, la latenza può essere più importante dell'efficienza energetica. Tu può aumentare il numero di thread impostando il numero di interpreti thread. L'esecuzione multi-thread, tuttavia, comporta maggiori prestazioni. a seconda di cosa viene eseguito contemporaneamente. Questo è in particolare per le app mobile. Ad esempio, i test isolati possono mostrare aumenta la velocità rispetto a quella a thread singolo, ma se un'altra app viene eseguita contemporaneamente, potrebbe peggiorare le prestazioni rispetto a quelle a thread singolo.
Elimina le copie ridondanti
Se la tua applicazione non è progettata con attenzione, potrebbero essere presenti copie ridondanti
quando si alimenta l'input e legge l'output del modello. Assicurati di
per eliminare le copie ridondanti. Se utilizzi API di livello superiore, come Java, esegui
assicurati di controllare attentamente la documentazione per rilevare eventuali avvertenze sulle prestazioni. Ad esempio:
l'API Java è molto più veloce se si utilizza ByteBuffers
input.
Profila la tua applicazione con strumenti specifici della piattaforma
Strumenti specifici per le piattaforme come Android profiler e Gli strumenti offrono una grande ricchezza di informazioni di profilazione che possono essere utilizzate per eseguire il debug della tua app. A volte il bug delle prestazioni potrebbe non essere presente nel modello, ma in parti del codice dell'applicazione a interagire con il modello. Assicurati di acquisire familiarità con la piattaforma strumenti di profilazione specifici e best practice per la tua piattaforma.
Valuta se il tuo modello trae vantaggio dall'utilizzo di acceleratori hardware disponibili sul dispositivo
LiteRT ha aggiunto nuovi modi per accelerare i modelli con un hardware più veloce come GPU, DSP e acceleratori neurali. Generalmente, questi acceleratori vengono esposti tramite sottomoduli delegate che prendono il controllo dell'esecuzione dell'interprete. LiteRT può utilizzare i delegati:
- Il delegato GPU è disponibile su Android e iOS, utilizzando OpenGL/OpenCL e Metal, rispettivamente. Per provarle, consulta il delegato alle GPU.
- Puoi creare un tuo delegato se hai accesso a su hardware non standard. Vedi LiteRT o delegati per ulteriori informazioni.
Tieni presente che alcuni acceleratori funzionano meglio per diversi tipi di modelli. Alcune i delegati supportano solo i modelli in virgola mobile o i modelli ottimizzati in un modo specifico. È è importante eseguire il benchmark per ciascun delegato per verificare se è una buona per la tua applicazione. Ad esempio, se hai un modello molto piccolo, delega il modello alla GPU. Al contrario, gli acceleratori sono una un'ottima scelta per i modelli di grandi dimensioni ad alta intensità aritmetica.