LiteRT ל-Android

ממשקי ה-API הבאים של זמן הריצה של LiteRT זמינים לפיתוח ב-Android:

  • CompiledModel API: התקן המודרני להסקת מסקנות עם ביצועים גבוהים, שמייעל את האצת החומרה במעבד, במעבד גרפי ובמעבד עצבי. מידע נוסף על הסיבות לבחירה ב-CompiledModel API
  • Interpreter API: ממשק ה-API הבסיסי להסקת מסקנות, שמתעדכן כדי לשמור על תאימות לאחור.

תחילת העבודה עם CompiledModel API

גרסאות 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 כוללת את השלבים העיקריים הבאים:

  1. טוענים מודל תואם.
  2. הקצאת מאגרי טנסורים של קלט ופלט.
  3. מפעילים את המודל שעבר קומפילציה.
  4. קוראים את ההסקות לתוך מאגר פלט.

בקטעי הקוד הבאים מוצגת הטמעה בסיסית של התהליך כולו ב-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));