ממשקי ה-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.