ממשק ה-API של LiteRT CompiledModel זמין ב-Kotlin, ומציע למפתחי Android חוויה חלקה שמתמקדת בהאצה באמצעות ממשקי API ברמה גבוהה. לדוגמה, אפשר לעיין באפליקציית Kotlin לפילוח תמונות.
במדריך הבא מוצגת מסקנת CPU בסיסית של Kotlin API CompiledModel. במדריך בנושא האצת GPU והאצת NPU מוסבר על תכונות מתקדמות של האצה.
הוספת חבילת Maven
מוסיפים את חבילת LiteRT Maven לפרויקט Android:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.1.0`
}
הסקה בסיסית
יצירה של CompiledModel
מאתחלים את סביבת זמן הריצה עם מודל ועם שיפור המהירות באמצעות חומרה לפי בחירתכם:
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU),
env,
)
יצירת מאגרי קלט ופלט
יוצרים את מבני הנתונים (מאגרי נתונים זמניים) שנדרשים כדי להכיל את נתוני הקלט שיוזנו למודל לצורך הסקה, ואת נתוני הפלט שהמודל יפיק אחרי ההסקה.
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
אם משתמשים בזיכרון של המעבד, ממלאים את נתוני הקלט על ידי כתיבת הנתונים ישירות במאגר הקלט הראשון.
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
הפעלת המודל
מספקים את מאגרי הקלט והפלט ומריצים את המודל.
model.run(inputBuffers, outputBuffers)
אחזור פלטים
אחזור פלטים על ידי קריאה ישירה של פלט המודל מהזיכרון.
val outputFloatArray = outputBuffers[0].readFloat()
שימוש ב-TensorBuffer
LiteRT מספק תמיכה מובנית ביכולת פעולה הדדית של מאגרים של קלט/פלט, באמצעות Tensor Buffer API (TensorBuffer) כדי לטפל בזרימת הנתונים אל CompiledModel וממנו. Tensor Buffer API מאפשר לכתוב (Write<T>()) ולקרוא (Read<T>()) באפרים ולנעול אותם.
כדי לקבל תמונה מלאה יותר של אופן ההטמעה של Tensor Buffer API, אפשר לעיין בקוד המקור בכתובת TensorBuffer.kt.