Ti diamo il benvenuto nella panoramica di LiteRT

LiteRT è il framework on-device di Google per l'implementazione di ML e GenAI ad alte prestazioni su piattaforme edge, utilizzando conversione, runtime e ottimizzazione efficienti.

L'ultima release di LiteRT 2.x introduce l'API CompiledModel, un'interfaccia di runtime moderna progettata per massimizzare l'accelerazione hardware. Sebbene l'API Interpreter (precedentemente TensorFlow Lite) rimanga disponibile per la compatibilità con le versioni precedenti, l'API CompiledModel è la scelta consigliata per gli sviluppatori che cercano prestazioni all'avanguardia nelle applicazioni di AI on-device.

Funzionalità principali di LiteRT

Semplificare lo sviluppo con LiteRT

Selezione automatica dell'acceleratore rispetto alla creazione esplicita di delegati. Gestione efficiente dei buffer I/O ed esecuzione asincrona per prestazioni superiori. Consulta la documentazione sull'inferenza sul dispositivo.

Prestazioni della GPU all'avanguardia

Basato su ML Drift, ora supporta sia i modelli ML che quelli di AI generativa sulle API GPU. Consulta la documentazione sull'accelerazione GPU.

Accelerazione NPU unificata

Accelera il tuo modello utilizzando l'accesso semplificato alla NPU dei principali fornitori di chipset. Consulta la documentazione sull'accelerazione NPU.

Supporto LLM superiore

LiteRT offre un deployment ad alte prestazioni per i modelli di AI generativa su piattaforme mobile, desktop e web. Consulta la documentazione sul deployment dell'AI generativa.

Ampio supporto dei framework ML

LiteRT supporta la conversione semplificata dai framework PyTorch, TensorFlow e JAX al formato .tflite o .litertlm. Consulta la documentazione sulla conversione del modello.

Flusso di lavoro di sviluppo

LiteRT esegue le inferenze completamente sul dispositivo su Android, iOS, web, IoT e su computer/laptop. Indipendentemente dal dispositivo, il seguente è il flusso di lavoro più comune, con link a ulteriori istruzioni.

Grafico del workflow di sviluppo di LiteRT

Identificare la soluzione più adatta alla sfida ML

LiteRT offre agli utenti un elevato livello di flessibilità e personalizzazione quando si tratta di risolvere problemi di machine learning, il che lo rende adatto agli utenti che richiedono un modello specifico o un'implementazione specializzata. Gli utenti che cercano soluzioni plug-and-play potrebbero preferire MediaPipe Tasks, che fornisce soluzioni pronte all'uso per attività di machine learning comuni come il rilevamento degli oggetti, la classificazione del testo e l'inferenza LLM.

Ottenere e preparare il modello

Un modello LiteRT è rappresentato in un formato portatile efficiente noto come FlatBuffers, che utilizza l'estensione .tflite.

Puoi ottenere un modello LiteRT nei seguenti modi:

  • Ottieni un modello preaddestrato:per carichi di lavoro di ML popolari come la segmentazione delle immagini, il rilevamento degli oggetti e così via.

    L'approccio più semplice consiste nell'utilizzare un modello LiteRT già nel formato .tflite. Questi modelli non richiedono passaggi di conversione aggiuntivi.

    Tipo di modello Origine del modello preaddestrato
    ML classico
    (formato .tflite)
    Visita Kaggle o HuggingFace
    Ad es. modelli di segmentazione delle immagini e app di esempio
    AI generativa
    (formato .litertlm)
    Pagina Hugging Face di LiteRT
    Ad es. Famiglia Gemma
  • Converti il modello PyTorch, TensorFlow o JAX scelto in un modello LiteRT se scegli di non utilizzare un modello preaddestrato. [PRO USER]

    Framework modello Modelli di esempio Strumento di conversione
    PyTorch Hugging Face
    Torchvision
    Link
    TensorFlow Kaggle Models
    Hugging Face
    Link
    Jax Faccina che abbraccia Link
  • Crea il tuo LLM per un'ulteriore ottimizzazione utilizzando l'API Generative [UTENTE PRO]

    La nostra libreria di API generative fornisce blocchi predefiniti di PyTorch per comporre modelli Transformer come Gemma, TinyLlama e altri utilizzando astrazioni ottimizzate per il mobile, tramite le quali possiamo garantire la conversione e l'esecuzione efficiente sul nostro runtime mobile, LiteRT. Consulta la documentazione dell'API generativa.

Quantizzazione [UTENTE PRO]

AI Edge Quantizer per sviluppatori avanzati è uno strumento per quantizzare i modelli LiteRT convertiti. Il suo scopo è quello di consentire agli utenti avanzati di ottenere prestazioni ottimali su modelli che richiedono molte risorse (ad es. modelli di AI generativa).

Per ulteriori dettagli, consulta la documentazione di AI Edge Quantizer.

Integrare il modello nell'app sulle piattaforme edge

LiteRT consente di eseguire modelli ML interamente sul dispositivo con prestazioni elevate su piattaforme Android, iOS, web, desktop e IoT.

Utilizza le seguenti guide per integrare un modello LiteRT sulla tua piattaforma preferita:

Piattaforma supportata Dispositivi supportati API supportate
Eseguire su Android Dispositivi mobili Android C++/Kotlin
Esegui su iOS/macOS Dispositivi mobili iOS, Macbook C++/Swift
Esegui sul web utilizzando LiteRT.js Dispositivo con Chrome, Firefox o Safari JavaScript
Esegui su Linux Workstation Linux o dispositivi IoT basati su Linux C++/Python
Esegui su Windows Workstation o laptop Windows C++/Python
Esegui su Micro Dispositivi incorporati C++

I seguenti snippet di codice mostrano un'implementazione di base in Kotlin e C++.

Kotlin

// Load model and initialize runtime
val compiledModel = CompiledModel.create(
    "/path/to/mymodel.tflite",
    CompiledModel.Options(Accelerator.CPU))

// Preallocate input/output buffers
val inputBuffers = compiledModel.createInputBuffers()
val outputBuffers = compiledModel.createOutputBuffers()

// Fill the input buffer
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)

// Invoke
compiledModel.run(inputBuffers, outputBuffers)

// Read the output
val output = outputBuffers.get(0).readFloat()

C++

// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
    auto compiled_model,
    CompiledModel::Create(env, "/path/to/mymodel.tflite", options));

// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));

// Fill the input buffer
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));

// Invoke
LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));

// Read the output
LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));

Scegliere un acceleratore hardware

Il modo più semplice per incorporare i backend in LiteRT è fare affidamento sull'intelligenza integrata del runtime. Con l'API CompiledModel, LiteRT semplifica notevolmente la configurazione con la possibilità di specificare il backend di destinazione come opzione. Consulta la guida all'inferenza on-device per ulteriori dettagli.

Android iOS / macOS Web Linux / Windows IoT
CPU XNNPACK XNNPACK XNNPACK XNNPACK XNNPACK
GPU WebGPU
OpenCL
WebGPU
Metal
WebGPU WebGPU
OpenCL
WebGPU
NPU MediaTek
Qualcomm
- - - -

Documentazione e assistenza aggiuntive