LiteRT הוא framework של Google להטמעה של ML ו-AI גנרטיביים בביצועים גבוהים במכשירים בפלטפורמות קצה, באמצעות המרה, זמן ריצה ואופטימיזציה יעילים.
בגרסה האחרונה של LiteRT 2.x הושק CompiledModel API,
ממשק זמן ריצה מודרני שנועד למקסם את ההאצה של החומרה. Interpreter API (לשעבר TensorFlow Lite) עדיין זמין לצורך תאימות לאחור, אבל CompiledModel API הוא הבחירה המומלצת למפתחים שרוצים להשיג ביצועים מתקדמים ביישומי AI במכשיר.
תכונות עיקריות של LiteRT
מייעלים את הפיתוח באמצעות LiteRT
בחירה אוטומטית של מאיץ לעומת יצירה מפורשת של נציג. טיפול יעיל במאגרים של קלט/פלט וביצוע אסינכרוני לשיפור הביצועים. מידע נוסף על הסקת מסקנות במכשיר
ביצועי GPU ברמה הכי גבוהה
התכונה מבוססת על ML Drift, ועכשיו היא תומכת גם במודלים של למידת מכונה (ML) וגם במודלים של AI גנרטיבי בממשקי API של מעבדי GPU. מידע נוסף על האצת GPU
האצה מאוחדת של NPU
להאיץ את המודל באמצעות גישה פשוטה יותר ל-NPU מספקי ערכות שבבים מובילים. מידע נוסף על האצת NPU
תמיכה משופרת ב-LLM
LiteRT מספק פריסה עם ביצועים גבוהים למודלים של AI גנרטיבי בפלטפורמות לנייד, למחשב ולאינטרנט. לעיון במסמכי התיעוד בנושא פריסת AI גנרטיבי
תמיכה רחבה ב-framework של למידת מכונה
LiteRT תומך בהמרה יעילה מ-frameworks של PyTorch, TensorFlow ו-JAX לפורמט .tflite או .litertlm. מידע נוסף על המרות לפי מודל
תחילת העבודה עם CompiledModel API
למודלים קלאסיים של ML, אפשר לעיין באפליקציות ההדגמה הבאות.
- אפליקציית Kotlin לחלוקת תמונות למקטעים: היקש של CPU/GPU/NPU.
- אפליקציית C++ לחלוקת תמונות למקטעים: היקש במעבד, ב-GPU או במעבד עצבי עם הרצה אסינכרוני.
למודלים של AI גנרטיבי, אפשר לעיין באפליקציות ההדגמה הבאות:
- EmbeddingGemma semantic similarity C++ App: הסקת מסקנות ב-CPU/GPU/NPU.
תהליך עבודה של פיתוח
LiteRT מריץ מסקנות באופן מלא במכשיר ב-Android, ב-iOS, באינטרנט, ב-IoT ובמחשב נייח או נייד. לא משנה באיזה מכשיר משתמשים, זהו תהליך העבודה הנפוץ ביותר, עם קישורים להוראות נוספות.
לזהות את הפתרון המתאים ביותר לאתגר של למידת המכונה
LiteRT מציע למשתמשים רמה גבוהה של גמישות ואפשרויות התאמה אישית כשמדובר בפתרון בעיות של למידת מכונה, ולכן הוא מתאים למשתמשים שזקוקים למודל ספציפי או להטמעה מיוחדת. משתמשים שמחפשים פתרונות מוכנים לשימוש עשויים להעדיף את MediaPipe Tasks, שמספק פתרונות מוכנים למשימות נפוצות של למידת מכונה, כמו זיהוי אובייקטים, סיווג טקסט והסקת מסקנות של LLM.

קבלת המודל והכנתו
מודל LiteRT מיוצג בפורמט נייד ויעיל שנקרא FlatBuffers, שמשתמש בסיומת הקובץ .tflite.
אפשר לקבל מודל LiteRT בדרכים הבאות:
קבלת מודל שאומן מראש: למשימות פופולריות של למידת מכונה כמו פילוח תמונות, זיהוי אובייקטים וכו'.
הגישה הפשוטה ביותר היא להשתמש במודל LiteRT שכבר נמצא בפורמט
.tflite. המודלים האלה לא דורשים שלבי המרה נוספים.סוג המודל מקור המודל שעבר אימון מקדים למידת מכונה קלאסית
(פורמט.tflite)אפשר להיכנס ל-Kaggle או ל-HuggingFace
לדוגמה, מודלים של חלוקת תמונות למקטעים ואפליקציה לדוגמהAI גנרטיבי
(.litertlmפורמט)דף LiteRT Hugging Face
לדוגמה: Gemma Familyממירים את מודל PyTorch, TensorFlow או JAX שבחרתם למודל LiteRT אם בחרתם לא להשתמש במודל שאומן מראש. [PRO USER]
מסגרת המודל מודלים לדוגמה כלי ההמרה Pytorch Hugging Face
Torchvisionקישור TensorFlow Kaggle Models
Hugging Faceקישור Jax Hugging Face קישור יצירת מודל שפה גדול (LLM) לאופטימיזציה נוספת באמצעות Generative API [משתמשי PRO]
ספריית Generative API מספקת אבני בניין מובְנות של PyTorch ליצירת מודלים של Transformer כמו Gemma, TinyLlama ואחרים באמצעות הפשטות שמתאימות לניידים, שדרכן אנחנו יכולים להבטיח המרה וביצוע יעיל בזמן הריצה של הניידים שלנו, LiteRT. לעיון במסמכי ה-API הגנרטיבי
אופטימיזציה [משתמש PRO]
AI Edge Quantizer למפתחים מתקדמים הוא כלי לכימות מודלים של LiteRT שהומרו. היא נועדה לעזור למשתמשים מתקדמים להשיג ביצועים אופטימליים במודלים שדורשים הרבה משאבים (למשל, מודלים של AI גנרטיבי).
מידע נוסף זמין במסמכי התיעוד בנושא AI Edge Quantizer.
שילוב המודל באפליקציה בפלטפורמות קצה
LiteRT מאפשר להריץ מודלים של למידת מכונה באופן מלא במכשיר עם ביצועים גבוהים בפלטפורמות Android, iOS, אינטרנט, מחשב ו-IoT.
כדי לשלב מודל LiteRT בפלטפורמה הרצויה, אפשר להיעזר במדריכים הבאים:
| פלטפורמה נתמכת | מכשירים נתמכים | ממשקי API נתמכים |
|---|---|---|
| הפעלה ב-Android | ניידים של Android | C++/Kotlin |
| הפעלה ב-iOS/macOS | מכשירים ניידים עם iOS, מחשבי MacBook | C++/Swift |
| הפעלה באינטרנט באמצעות LiteRT.js | מכשיר עם Chrome, Firefox או Safari | JavaScript |
| הרצה ב-Linux | תחנת עבודה עם Linux או מכשירי IoT מבוססי-Linux | C++/Python |
| הפעלה ב-Windows | מחשבים נייחים או ניידים עם Windows | C++/Python |
| Run on IoT | מכשירים מוטמעים | C++ |
בקטעי הקוד הבאים מוצגת הטמעה בסיסית ב-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));
בחירת קצה עורפי
הדרך הכי פשוטה לשלב בקאנדים ב-LiteRT היא להסתמך על הבינה המובנית של זמן הריצה. בעזרת CompiledModel API, LiteRT מפשטת את ההגדרה באופן משמעותי, עם אפשרות לציין את הקצה העורפי של היעד. פרטים נוספים זמינים במדריך בנושא הסקת מסקנות במכשיר.
| Android | iOS / macOS | פיתוח אתרים | Linux | Windows | IoT | |
|---|---|---|---|---|---|---|
| מעבד (CPU) | XNNPACK | XNNPACK | XNNPACK | XNNPACK | XNNPACK | XNNPACK |
| GPU | OpenGL OpenCL |
Metal WebGPU |
WebGPU | WebGPU OpenCL |
WebGPU OpenCL |
WebGPU |
| NPU | MediaTek Qualcomm |
- | - | Qualcomm | - | Qualcomm |
מסמכים נוספים ותמיכה
מאגר GitHub של LiteRT-Samples לאפליקציות לדוגמה נוספות של LiteRT.
משתמשים קיימים ב-TensorFlow Lite יכולים לעיין במדריך להעברת נתונים.
דף הכלים של LiteRT לביצועים, ליצירת פרופילים, לדיווח על שגיאות וכו'.