LiteRT pour Android

Les API d'exécution LiteRT suivantes sont disponibles pour le développement Android :

  • CompiledModel API : 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

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 2025-12-19
v2.0.3 ⚠️ Ancienne 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 ⚠️ Ancienne version Interpreter 26 (Android 8 Oreo) r26a 25/06/2025
v1.3.0 ⚠️ Ancienne version Interpreter 21 (Android 5 Lollipop) r26a 2025-05-19
v1.2.0 ⚠️ Ancienne version 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

Ajoutez le package Maven LiteRT à votre projet Android :

dependencies {
  ...
  implementation `com.google.ai.edge.litert:litert:2.1.0`
}

Intégrez votre modèle .tflite à l'API CompiledModel. L'extrait de code suivant montre l'implémentation de base 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));