תחילת השימוש ב-LiteRT Next

ממשקי ה-API של LiteRT Next לא תואמים לממשקי ה-API של LiteRT, ולכן אפליקציות שמשתמשות ב-LiteRT צריכות לעבור ל-LiteRT Next באופן מלא כדי ליהנות מהתכונות והיכולות שמספקים ממשקי ה-API החדשים. אי אפשר להשתמש בממשקי ה-API של TF Lite Interpreter ובממשקי ה-API של מודל הידור באופן חלופי באפליקציות.

ב-LiteRT Next יש ממשקי API ל-Kotlin ול-C++‎. באפליקציות שמשתמשות ב-LiteRT SDK בשפות אחרות, צריך להמשיך להשתמש ב-LiteRT.

יחסי תלות ב-Android

כדי להעביר אפליקציה ל-Android באמצעות LiteRT, מחליפים את התלות מ-com.google.ai.edge.litert ל-com.google.ai.edge.litert:litert:2.0.0-alpha.

ב-LiteRT, מואץ ה-GPU זמין כ-delegate בספרייה נפרדת (com.google.ai.edge.litert:litert-gpu). ב-LiteRT Next, מואץ ה-GPU נכלל בחבילת LiteRT Next. למידע נוסף, ראו GPU עם LiteRT Next.

אפשר להוסיף את החבילה LiteRT Next ליחסי התלות של build.gradle:

dependencies {
  ...
  implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}

שינויים בקוד

באפליקציות שמשתמשות ב-LiteRT, צריך להחליף את הקוד שמשתמש ב-TFLite Interpreter API בקוד שמשתמש ב-Compiled Model API. בהמשך מפורטים השינויים העיקריים שצריך לבצע כדי לעבור ל-LiteRT Next. לפרטים נוספים, עיינו בהפניית ה-API של LiteRT Next.

שינויים בקוד ב-C++‎

כדי להעביר אפליקציה באמצעות C++, מחליפים את קטעי המפתח הבאים:

LiteRT‏ (TFLite Interpreter) LiteRT Next‏ (CompiledModel)
טעינה של מודל FlatBufferModel::BuildFromFile() InterpreterBuilder(...) Model::CreateFromFile("mymodel.tflite")
הערה: אין שלב נפרד של הכלי ליצירת מודלים
הפעלת סביבת זמן ריצה builder(&interpreter), interpreter->AllocateTensors() CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu)
הערה: אין שלב של הקצאת זיכרון ידנית
שימוש במאיצי עיבוד interpreter->ModifyGraphWithDelegate(...) CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu)
הפעלת מודל interpreter->Invoke() compiled_model->Run(inputs, outputs)

שינויים בקוד ב-Kotlin

כדי להעביר אפליקציה באמצעות Kotlin, צריך לבצע את השלבים הבאים:

הגדרת מודל וזמן ריצה

ב-LiteRT, אתם מעמיסים מודל, מגדירים האצה ומפעילים את סביבת זמן הריצה בשלבים שונים:

// Load the model
val modelBuffer: MappedByteBuffer =
  FileUtil.loadMappedFile(appContext, "model.tflite")

// Initialize runtime
val options = Interpreter.Options()
val interpreter = Interpreter(modelBuffer, options)
interpreter.allocateTensors()

// Use accelerators
aval gpuDelegate = GpuDelegate()
options.addDelegate(gpuDelegate)

ב-LiteRT Next, אפשר לטעון את המודל, לציין את ההאצה ולהפעיל את סביבת זמן הריצה בו-זמנית:

val model =
CompiledModel.create(
  context.assets,
  "model.tflite",
  CompiledModel.Options(Accelerator.GPU)
)

הרצת היסק

כדי להריץ את המודל באמצעות LiteRT:

val input = FloatBuffer.allocate(data_size)
val output = FloatBuffer.allocate(data_size)
interpreter.run(input, output)

כדי להריץ את המודל באמצעות LiteRT Next:

val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
model.run(inputBuffers, outputBuffers)

עוד ספריות

ממשקי ה-API של LiteRT Next זמינים רק ב-Kotlin וב-C++. לא ניתן להעביר לאפליקציות שמשתמשות ב-LiteRT SDK בשפות אחרות ל-LiteRT Next.

אפליקציות שמשתמשות ב-LiteRT בסביבת זמן הריצה של Play Services לא יכולות לעבור ל-LiteRT Next, וצריך להמשיך להשתמש בסביבת זמן הריצה play-services-tflite. אי אפשר להעביר את ספריית המשימות ואת ספריות ה-Model Maker ל-LiteRT Next, וצריך להמשיך להשתמש בממשקי ה-API של TensorFlow Lite.