LiteRT untuk Android

API runtime LiteRT berikut tersedia untuk pengembangan Android:

  • API CompiledModel: Standar modern untuk inferensi berperforma tinggi, yang menyederhanakan akselerasi hardware di seluruh CPU/GPU/NPU. Pelajari lebih lanjut alasan memilih CompiledModel API.
  • API Interpreter: API inferensi dasar, dipertahankan untuk kompatibilitas mundur.

Mulai Menggunakan CompiledModel API

Versi dan API Android yang Didukung

Versi LiteRT Status API yang didukung Level SDK Min Versi NDK minimum (jika digunakan) Tanggal Rilis
v2.1.0 ✅ Terbaru CompiledModel
Interpreter(Khusus CPU)
23 (Android 6 Marshmallow) r26a Belum dirilis
v2.0.3 ⚠️ Tidak berlaku lagi CompiledModel 26 (Android 8 Oreo) r26a 2025-11-08
v1.4.1 ✅ Terbaru Interpreter 21 (Android 5 Lollipop) r26a 2025-11-07
v1.4.0 ⚠️ tidak digunakan lagi Interpreter 26 (Android 8 Oreo) r26a 2025-06-25
v1.3.0 ⚠️ tidak digunakan lagi Interpreter 21 (Android 5 Lollipop) r26a 2025-05-19
v1.2.0 ⚠️ tidak digunakan lagi Interpreter 21 (Android 5 Lollipop) r26a 2025-03-13

Penting: Selalu perbarui dependensi Anda untuk memastikan kompatibilitas dengan fitur dan update keamanan terbaru.

Panduan memulai dengan CompiledModel API

Menjalankan inferensi dengan Compiled Model API melibatkan langkah-langkah utama berikut:

  1. Muat model yang kompatibel.
  2. Alokasikan buffer tensor input dan output.
  3. Panggil model yang dikompilasi.
  4. Membaca inferensi ke dalam buffer output.

Cuplikan kode berikut menunjukkan implementasi dasar dari seluruh proses di Kotlin dan 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));