Les API d'exécution LiteRT suivantes sont disponibles pour le développement Android :
CompiledModelAPI : la norme moderne pour l'inférence à hautes performances, qui simplifie l'accélération matérielle sur les CPU/GPU/NPU. En savoir plus sur les raisons de choisir l'API CompiledModel- API
Interpreter: API d'inférence de base, maintenue pour la rétrocompatibilité.
Premiers pas avec l'API CompiledModel
Pour les modèles de ML classiques, consultez les applications de démonstration suivantes.
- Application Kotlin de segmentation d'images : inférence CPU/GPU/NPU.
- Application C++ de segmentation d'images : inférence CPU/GPU/NPU avec exécution asynchrone.
Pour les modèles d'IA générative, consultez les applications de démonstration suivantes :
- Application C++ de similarité sémantique EmbeddingGemma : inférence CPU/GPU/NPU.
Versions et API Android compatibles
| Version LiteRT | État | API compatible | Niveau SDK minimal | Version NDK minimale (le cas échéant) | Date de sortie |
|---|---|---|---|---|---|
v2.1.0 ⭐ |
✅ Dernière version | CompiledModel Interpreter(CPU uniquement) |
23 (Android 6 Marshmallow) |
r26a |
Pas encore disponible |
v2.0.3 ⭐ |
⚠️ Obsolète | CompiledModel |
26 (Android 8 Oreo) |
r26a |
2025-11-08 |
v1.4.1 ⭐ |
✅ Dernière version | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-11-07 |
v1.4.0 ⭐ |
⚠️ Obsolète | Interpreter |
26 (Android 8 Oreo) |
r26a |
25/06/2025 |
v1.3.0 ⭐ |
⚠️ Obsolète | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-05-19 |
v1.2.0 ⭐ |
⚠️ Obsolète | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-03-13 |
Important : Assurez-vous que vos dépendances sont à jour pour garantir la compatibilité avec les dernières fonctionnalités et mises à jour de sécurité.
Guide de démarrage rapide avec l'API CompiledModel
L'exécution de l'inférence avec l'API Compiled Model implique les étapes clés suivantes :
- Chargez un modèle compatible.
- Allouez les tampons Tensor d'entrée et de sortie.
- Appelez le modèle compilé.
- Lire les inférences dans un tampon de sortie.
Les extraits de code suivants montrent une implémentation de base de l'ensemble du processus en Kotlin et en 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));