Per lo sviluppo di Android sono disponibili le seguenti API di runtime LiteRT:
- API
CompiledModel: lo standard moderno per l'inferenza ad alte prestazioni, che semplifica l'accelerazione hardware su CPU/GPU/NPU. Scopri di più sul perché scegliere l'API CompiledModel. InterpreterAPI: l'API di inferenza di base, gestita per la compatibilità con le versioni precedenti.
Inizia a utilizzare l'API CompiledModel
Per i modelli ML classici, vedi le seguenti app demo.
- App Kotlin per la segmentazione delle immagini: inferenza CPU/GPU/NPU.
- App C++ per la segmentazione delle immagini: inferenza CPU/GPU/NPU con esecuzione asincrona.
Per i modelli di AI generativa, consulta le seguenti app demo:
- App C++ per la somiglianza semantica EmbeddingGemma: inferenza CPU/GPU/NPU.
Versioni e API Android supportate
| Versione LiteRT | Stato | API supportata | Livello SDK minimo | Versione minima dell'NDK (se utilizzata) | Data di uscita |
|---|---|---|---|---|---|
v2.1.0 ⭐ |
✅ Più recente | CompiledModel Interpreter(solo CPU) |
23 (Android 6 Marshmallow) |
r26a |
Non ancora rilasciato |
v2.0.3 ⭐ |
⚠️ Obsoleto | CompiledModel |
26 (Android 8 Oreo) |
r26a |
8/11/2025 |
v1.4.1 ⭐ |
✅ Più recente | Interpreter |
21 (Android 5 Lollipop) |
r26a |
7/11/2025 |
v1.4.0 ⭐ |
⚠️ obsoleto | Interpreter |
26 (Android 8 Oreo) |
r26a |
25/06/2025 |
v1.3.0 ⭐ |
⚠️ obsoleto | Interpreter |
21 (Android 5 Lollipop) |
r26a |
19/05/2025 |
v1.2.0 ⭐ |
⚠️ obsoleto | Interpreter |
21 (Android 5 Lollipop) |
r26a |
13/03/2025 |
Importante: mantieni aggiornate le dipendenze per garantire la compatibilità con le funzionalità e gli aggiornamenti della sicurezza più recenti.
Guida rapida all'API CompiledModel
L'esecuzione dell'inferenza con l'API Compiled Model prevede i seguenti passaggi chiave:
- Carica un modello compatibile.
- Alloca i buffer dei tensori di input e output.
- Richiama il modello compilato.
- Leggi le inferenze in un buffer di output.
I seguenti snippet di codice mostrano un'implementazione di base dell'intero processo 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));