LiteRT Compiled Model API tersedia di Kotlin, yang menawarkan pengalaman yang lancar dan mengutamakan akselerator dengan API tingkat tinggi kepada developer Android.
Untuk contoh aplikasi LiteRT di Kotlin, lihat Demo segmentasi gambar dengan Kotlin.
Mulai
Gunakan langkah-langkah berikut untuk menambahkan LiteRT Compiled Model API ke aplikasi Android Anda.
Menambahkan paket Maven
Tambahkan dependensi LiteRT dengan Compiled Model API ke aplikasi Anda:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
Membuat Model yang Dikompilasi
Dengan menggunakan API CompiledModel, lakukan inisialisasi runtime dengan model dan pilihan akselerasi hardware Anda:
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU),
env,
)
Membuat Buffer Input dan Output
Buat struktur data (buffer) yang diperlukan untuk menyimpan data input yang akan Anda masukkan ke model untuk inferensi, dan data output yang dihasilkan model setelah menjalankan inferensi.
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
Jika Anda menggunakan memori CPU, isi input dengan menulis data langsung ke buffer input pertama.
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
Memanggil model
Dengan menyediakan buffer input dan output, jalankan Model yang Dikompilasi.
model.run(inputBuffers, outputBuffers)
Mengambil Output
Mengambil output dengan membaca output model langsung dari memori.
val outputFloatArray = outputBuffers[0].readFloat()
Konsep dan komponen utama
Lihat bagian berikut untuk mengetahui informasi tentang konsep dan komponen utama LiteRT Kotlin Compiled Model API.
Inferensi Dasar (CPU)
Berikut adalah penerapan inferensi yang disederhanakan dan diringkas dengan LiteRT Next.
// Load model and initialize runtime
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
// Clean up buffers and model
inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
model.close()
Model yang Dikompilasi (CompiledModel)
Compiled Model API (CompiledModel) bertanggung jawab untuk memuat model, menerapkan akselerasi hardware, membuat instance runtime, membuat buffer input dan output, serta menjalankan inferensi.
Cuplikan kode yang disederhanakan berikut menunjukkan cara Compiled Model API
mengambil model LiteRT (.tflite) dan membuat model yang dikompilasi yang siap
menjalankan inferensi.
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
Cuplikan kode yang disederhanakan berikut menunjukkan cara API CompiledModel
mengambil buffer input dan output, serta menjalankan inferensi dengan model
yang dikompilasi.
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
// Clean up buffers and model
inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
model.close()
Untuk melihat gambaran yang lebih lengkap tentang cara penerapan API CompiledModel, lihat kode sumber di Model.kt.
Buffer Tensor (TensorBuffer)
LiteRT menyediakan dukungan bawaan untuk interoperabilitas buffer I/O, menggunakan Tensor Buffer API (TensorBuffer) untuk menangani aliran data ke dan dari CompiledModel. Tensor Buffer API memberikan kemampuan untuk menulis
(Write<T>()) dan membaca (Read<T>()), serta mengunci buffer.
Untuk melihat gambaran yang lebih lengkap tentang cara penerapan Tensor Buffer API, lihat kode sumber di TensorBuffer.kt.