Las siguientes APIs del entorno de ejecución de LiteRT están disponibles para el desarrollo de Android:
- API de
CompiledModel: Es el estándar moderno para la inferencia de alto rendimiento, que optimiza la aceleración de hardware en CPU, GPU y NPU. Obtén más información sobre por qué elegir la API de CompiledModel. InterpreterAPI: Es la API de inferencia básica, que se mantiene para la retrocompatibilidad.
Comienza a usar la API de CompiledModel
Para los modelos de AA clásicos, consulta las siguientes apps de demostración.
- App de Kotlin para la segmentación de imágenes: Inferencias de CPU, GPU y NPU.
- App de segmentación de imágenes en C++: Inferencias en CPU, GPU y NPU con ejecución asíncrona.
Para los modelos de IA generativa, consulta las siguientes apps de demostración:
- EmbeddingGemma semantic similarity C++ App: Inferencias en CPU, GPU y NPU.
Versiones y APIs de Android compatibles
| Versión de LiteRT | Estado | API compatible | Nivel mínimo del SDK | Versión mínima del NDK (si se usa) | Fecha de lanzamiento |
|---|---|---|---|---|---|
v2.1.0 ⭐ |
✅ Más reciente | CompiledModel Interpreter(solo CPU) |
23 (Android 6, Marshmallow) |
r26a |
Aún no se lanzó |
v2.0.3 ⭐ |
⚠️ Obsoleto | CompiledModel |
26 (Android 8 Oreo) |
r26a |
2025-11-08 |
v1.4.1 ⭐ |
✅ Más reciente | Interpreter |
21 (Android 5, Lollipop) |
r26a |
2025-11-07 |
v1.4.0 ⭐ |
⚠️ obsoleto | Interpreter |
26 (Android 8 Oreo) |
r26a |
25/6/2025 |
v1.3.0 ⭐ |
⚠️ Obsoleto | Interpreter |
21 (Android 5, Lollipop) |
r26a |
2025-05-19 |
v1.2.0 ⭐ |
⚠️ obsoleto | Interpreter |
21 (Android 5, Lollipop) |
r26a |
2025-03-13 |
Importante: Mantén tus dependencias actualizadas para garantizar la compatibilidad con las funciones y actualizaciones de seguridad más recientes.
Guía de inicio rápido con la API de CompiledModel
Ejecutar la inferencia con la API de Compiled Model implica los siguientes pasos clave:
- Carga un modelo compatible.
- Asigna los búferes de tensores de entrada y salida.
- Invoca el modelo compilado.
- Lee las inferencias en un búfer de salida.
En los siguientes fragmentos de código, se muestra una implementación básica de todo el proceso en Kotlin y 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));