ממשקי ה-API הבאים של זמן הריצה של LiteRT זמינים לפיתוח ב-Android:
-
CompiledModelAPI: התקן המודרני להסקת מסקנות עם ביצועים גבוהים, שמייעל את האצת החומרה במעבד, במעבד גרפי ובמעבד עצבי. מידע נוסף על הסיבות לבחירה ב-CompiledModel API -
InterpreterAPI: ממשק ה-API הבסיסי להסקת מסקנות, שמתעדכן כדי לשמור על תאימות לאחור.
תחילת העבודה עם CompiledModel API
למודלים קלאסיים של ML, אפשר לעיין באפליקציות ההדגמה הבאות.
- אפליקציית Kotlin לפילוח תמונות: הסקת מסקנות ב-CPU/GPU/NPU.
- אפליקציית C++ לפילוח תמונות: הסקת מסקנות במעבד, במעבד גרפי או במעבד עצבי עם ביצוע אסינכרוני.
למודלים של AI גנרטיבי, אפשר לעיין באפליקציות ההדגמה הבאות:
- EmbeddingGemma semantic similarity C++ App: הסקת מסקנות ב-CPU/GPU/NPU.
גרסאות Android נתמכות וממשקי API
| גרסת LiteRT | סטטוס | API נתמך | רמת ה-SDK המינימלית | גרסת ה-NDK המינימלית (אם נעשה בו שימוש) | תאריך פרסום |
|---|---|---|---|---|---|
v2.1.0 ⭐ |
✅ הגרסה העדכנית | CompiledModel Interpreter(CPU בלבד) |
23 (Android 6 Marshmallow) |
r26a |
עדיין לא הושק |
v2.0.3 ⭐ |
⚠️ לא בשימוש | CompiledModel |
26 (Android 8 Oreo) |
r26a |
2025-11-08 |
v1.4.1 ⭐ |
✅ הגרסה האחרונה | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-11-07 |
v1.4.0 ⭐ |
⚠️ הוצא משימוש | Interpreter |
26 (Android 8 Oreo) |
r26a |
2025-06-25 |
v1.3.0 ⭐ |
⚠️ הוצא משימוש | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-05-19 |
v1.2.0 ⭐ |
⚠️ הוצא משימוש | Interpreter |
21 (Android 5 Lollipop) |
r26a |
2025-03-13 |
חשוב: כדי להבטיח תאימות לתכונות העדכניות ולעדכוני האבטחה, חשוב לוודא שהתלויות מעודכנות.
מדריך למתחילים לשימוש ב-CompiledModel API
הפעלת הסקת מסקנות באמצעות Compiled Model API כוללת את השלבים העיקריים הבאים:
- טוענים מודל תואם.
- הקצאת מאגרי טנסורים של קלט ופלט.
- מפעילים את המודל שעבר קומפילציה.
- קוראים את ההסקות לתוך מאגר פלט.
בקטעי הקוד הבאים מוצגת הטמעה בסיסית של התהליך כולו ב-Kotlin וב-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));