LiteRT מאפשר להריץ מודלים של TensorFlow, PyTorch ו-JAX באפליקציות ל-Android. מערכת LiteRT מספקת סביבות הפעלה מוכנות להתאמה אישית להרצת מודלים ב-Android במהירות וביעילות, כולל אפשרויות להאצת חומרה.
לדוגמה, אפליקציות Android שמשתמשות ב-LiteRT מפורטות במאגר LiteRT samples.
מודלים של למידת מכונה
ב-LiteRT נעשה שימוש במודלים של TensorFlow, PyTorch ו-JAX שמומרים לפורמט קטן יותר, נייד ויעיל יותר של מודל למידת מכונה. אתם יכולים להשתמש במודלים מוכנים מראש עם LiteRT ב-Android, או ליצור מודלים משלכם ולהמיר אותם לפורמט LiteRT.
בדף הזה נסביר איך משתמשים במודלים של למידת מכונה שכבר נוצרו, ולא נסביר איך יוצרים, מארגנים, בודקים או ממירים מודלים. מידע נוסף על בחירת מודלים של למידת מכונה, שינוי, יצירה והמרה שלהם ל-LiteRT זמין בדף מודלים.
הפעלת מודלים ב-Android
מודל LiteRT שפועל בתוך אפליקציה ל-Android מקבל נתונים, מעבד אותם ויוצר חיזוי על סמך הלוגיקה של המודל. כדי להריץ מודל LiteRT, נדרשת סביבה ייעודית בסביבת זמן הריצה, והנתונים שמעבירים למודל צריכים להיות בפורמט נתונים ספציפי שנקרא tensor. כשמודל מעבד את הנתונים, שנקרא הסקה, הוא יוצר תוצאות חיזוי כטנסורים חדשים ומעביר אותן לאפליקציה ל-Android כדי שתוכל לבצע פעולה, כמו הצגת התוצאה למשתמש או ביצוע לוגיקה עסקית נוספת.
איור 1. תהליך ביצוע פונקציונלי למודלים של LiteRT באפליקציות ל-Android.
ברמת העיצוב הפונקציונלי, כדי להריץ מודל LiteRT באפליקציה ל-Android צריך את הרכיבים הבאים:
- סביבת זמן ריצה של LiteRT להרצת המודל
- מנהל קלט של מודל להמרת נתונים ל-tensors
- מתבצע טיפול בפלט של המודל כדי לקבל טנסורים של תוצאות הפלט ולפרש אותם בתור תוצאות חיזוי
בקטעים הבאים נסביר איך הספריות והכלים של LiteRT מספקים את הרכיבים הפונקציונליים האלה.
פיתוח אפליקציות באמצעות LiteRT
בקטע הזה מתוארת הדרך המומלצת והנפוצה ביותר להטמעת LiteRT באפליקציית Android. כדאי להתמקד במיוחד בקטעים סביבת זמן הריצה וספריות הפיתוח. אם פיתחתם מודל מותאם אישית, כדאי לעיין בקטע נתיבי פיתוח מתקדמים.
אפשרויות לסביבת זמן ריצה
יש כמה דרכים להפעיל סביבה בסביבת זמן ריצה להרצת מודלים באפליקציה ל-Android. אלה האפשרויות המועדפות:
- LiteRT בסביבת זמן הריצה של Google Play Services (מומלץ)
- סביבת זמן ריצה של LiteRT עצמאית
באופן כללי, מומלץ להשתמש בסביבת זמן הריצה ששירותי Google Play מספקים, כי היא חסכונית יותר במרחב מאשר הסביבה הרגילה, כי היא נטענת באופן דינמי, וכך גודל האפליקציה קטן יותר. בנוסף, Google Play Services משתמש באופן אוטומטי בגרסה היציבה והעדכנית ביותר של סביבת זמן הריצה של LiteRT, כך שתוכלו ליהנות מתכונות נוספות ומביצועים משופרים לאורך זמן. אם אתם מציעים את האפליקציה שלכם במכשירים שלא כוללים את Google Play Services, או אם אתם צריכים לנהל בקפידה את סביבת זמן הריצה של ה-ML, כדאי להשתמש בסביבת זמן הריצה הרגילה של LiteRT. האפשרות הזו מצרפת קוד נוסף לאפליקציה, ומאפשרת לכם לשלוט יותר בזמן הריצה של ה-ML באפליקציה, אבל היא מגדילה את גודל ההורדה של האפליקציה.
כדי לגשת לסביבות זמן הריצה האלה באפליקציית Android, מוסיפים ספריות פיתוח של LiteRT לסביבת הפיתוח של האפליקציה. בקטע הבא מוסבר איך משתמשים בסביבות זמן ריצה רגילות באפליקציה.
ספריות
אפשר לגשת ל-Interpreter API באמצעות שירותי Google Play. אתם יכולים להשתמש בליבה ובספריות התמיכה של LiteRT באפליקציה ל-Android. פרטי תכנות על שימוש בספריות ובסביבות זמן ריצה של LiteRT מפורטים במאמר כלים לפיתוח ל-Android.
אחזור מודלים
כדי להריץ מודל באפליקציה ל-Android, צריך מודל בפורמט LiteRT. אפשר להשתמש במודלים מוכנים מראש או ליצור מודל ולהמיר אותו לפורמט Lite. מידע נוסף על קבלת מודלים לאפליקציה ל-Android זמין בדף מודלים של LiteRT.
טיפול בנתוני קלט
כל נתון שאתם מעבירים למודל למידת מכונה חייב להיות טינסור עם מבנה נתונים ספציפי, שנקרא לרוב הצורה של הטינסור. כדי לעבד נתונים באמצעות מודל, קוד האפליקציה צריך להמיר את הנתונים מהפורמט המקורי שלהם, כמו תמונה, טקסט או נתוני אודיו, לתוך טינסור בצורך הנדרשת למודל.
הרצת מסקנות
עיבוד נתונים באמצעות מודל כדי ליצור תוצאת חיזוי נקרא הסקה. כדי להריץ הסקת מסקנות באפליקציית Android, נדרשת סביבת זמן ריצה של LiteRT, מודל ונתוני קלט.
המהירות שבה מודל יכול ליצור מסקנה במכשיר מסוים תלויה בגודל הנתונים שעוברים עיבוד, במורכבות המודל ובמשאבי המחשוב הזמינים, כמו זיכרון ו-CPU, או מעבדים מיוחדים שנקראים מאיצים. מודלים של למידת מכונה יכולים לפעול מהר יותר במעבדים המיוחדים האלה, כמו יחידות עיבוד גרפי (GPU) ויחידות עיבוד טינסורים (TPU), באמצעות מנהלי חומרה של LiteRT שנקראים נציגים. מידע נוסף על הענקת גישה (delegate) ועל האצת חומרה של עיבוד המודלים זמין במאמר סקירה כללית על האצת חומרה.
טיפול בתוצאות הפלט
המודלים יוצרים תוצאות חיזוי כטנסורים, וצריך לטפל בהם באפליקציה ל-Android על ידי ביצוע פעולה או הצגת תוצאה למשתמש. תוצאות הפלט של המודל יכולות להיות פשוטות כמו מספר שתואם לתוצאה אחת (0 = כלב, 1 = חתול, 2 = ציפור) לסיווג תמונה, ועד לתוצאות מורכבות הרבה יותר, כמו כמה תיבות מלבניות למספר אובייקטים מסווגים בתמונה, עם דירוגים של רמת ביטחון בתחזית בין 0 ל-1.
דרכים מתקדמות לפיתוח
כשמשתמשים במודלים מתוחכמים יותר ומותאמים אישית יותר של LiteRT, יכול להיות שתצטרכו להשתמש בגישות פיתוח מתקדמות יותר ממה שמתואר למעלה. בקטעים הבאים מתוארות שיטות מתקדמות להרצת מודלים ולפיתוח שלהם ל-LiteRT באפליקציות ל-Android.
סביבות זמן ריצה מתקדמות
בנוסף לסביבת זמן הריצה הרגילה ולסביבות זמן הריצה של שירותי Google Play ל-LiteRT, יש סביבות זמן ריצה נוספות שאפשר להשתמש בהן עם אפליקציית Android. הסיבה העיקרית לשימוש בסביבות האלה היא אם יש לכם מודל למידת מכונה שמשתמש בפעולות ML שלא נתמכות בסביבת זמן הריצה הרגילה של LiteRT.
- זמן ריצה גמיש ל-LiteRT
- סביבת זמן ריצה מותאמת אישית של LiteRT
זמן הריצה הגמיש של LiteRT מאפשר לכם לכלול אופרטורים ספציפיים שנדרשים למודל שלכם. כאפשרות מתקדמת להרצת המודל, אפשר ליצור LiteRT ל-Android כך שיכלול אופרטורים ופונקציות אחרות שנדרשות להרצת מודל הלמידה החישובית של TensorFlow. למידע נוסף, ראו פיתוח LiteRT ל-Android.
ממשקי API ל-C ול-C++
ב-LiteRT יש גם ממשק API להרצת מודלים באמצעות C ו-C++. אם האפליקציה שלכם משתמשת ב-Android NDK, כדאי לכם להשתמש בממשק ה-API הזה. כדאי גם לשקול להשתמש ב-API הזה אם אתם רוצים לשתף קוד בין כמה פלטפורמות. מידע נוסף על אפשרות הפיתוח הזו זמין בדף כלים לפיתוח.
ביצוע מודל מבוסס-שרת
באופן כללי, מומלץ להריץ מודלים באפליקציה במכשיר Android כדי ליהנות מזמן אחזור קצר יותר ומפרטיות נתונים משופרת למשתמשים. עם זאת, יש מקרים שבהם הפעלת מודל בשרת בענן, מחוץ למכשיר, היא פתרון טוב יותר. לדוגמה, אם יש לכם מודל גדול שקשה לדחוס אותו בקלות לגודל שמתאים למכשירי Android של המשתמשים, או אם אי אפשר להריץ אותו במכשירים האלה עם ביצועים סבירים. הגישה הזו עשויה להתאים גם אם העדיפות העליונה שלכם היא לקבל ביצועים עקביים של המודל במגוון רחב של מכשירים.
ב-Google Cloud יש חבילת שירותים מלאה להרצת מודלים של AI. למידע נוסף, אפשר לעיין בדף מוצרי AI ולמידת מכונה ב-Google Cloud.
פיתוח מודלים מותאמים אישית ואופטימיזציה שלהם
נתיבי פיתוח מתקדמים יותר צפויים לכלול פיתוח של מודלים מותאמים אישית של למידת מכונה ואופטימיזציה של המודלים האלה לשימוש במכשירי Android. אם אתם מתכננים ליצור מודלים בהתאמה אישית, כדאי לשקול להחיל על המודלים שיטות של קצירה כדי לצמצם את עלויות הזיכרון והעיבוד. למידע נוסף על יצירת מודלים עם ביצועים גבוהים לשימוש עם LiteRT, ראו שיטות מומלצות לשיפור הביצועים בקטע 'מודלים'.