TensorFlow Lite ל-Android

בעזרת TensorFlow Lite אפשר להריץ מודלים של למידת מכונה (ML) של TensorFlow באפליקציות ל-Android. מערכת TensorFlow Lite מספקת סביבות הפעלה מובנות מראש וניתנות להתאמה אישית להרצת מודלים ב-Android במהירות וביעילות, כולל אפשרויות להאצת חומרה.

מודלים של למידת מכונה

ב-TensorFlow Lite נעשה שימוש במודלים של TensorFlow שעוברים המרה לפורמט של מודל למידת מכונה קטן, נייד ויעיל יותר. אתם יכולים להשתמש במודלים שנוצרו מראש באמצעות TensorFlow Lite ב-Android, או ליצור מודלים משלכם ב-TensorFlow ולהמיר אותם לפורמט TensorFlow Lite.

בדף הזה מתואר איך להשתמש במודלים מובנים של למידת מכונה, ולא עוסק ביצירה, באימון, בבדיקה או בהמרה של מודלים. בדף Models מוסבר איך לבחור, לשנות, לבנות ולהמיר מודלים של למידת מכונה ל-TensorFlow Lite.

הפעלת מודלים ב-Android

מודל TensorFlow Lite שפועל בתוך אפליקציה ל-Android מקבל נתונים, מעבד את הנתונים ויוצר חיזוי על סמך הלוגיקה של המודל. כדי להפעיל מודל TensorFlow Lite, נדרשת סביבת זמן ריצה מיוחדת, והנתונים שמועברים למודל צריכים להיות בפורמט נתונים ספציפי שנקרא tensor. כשהמודל מעבד את הנתונים, שנקרא הֶקֵּשׁ, הוא יוצר את תוצאות החיזוי בתור מתאמים חדשים ומעביר אותם לאפליקציה ל-Android כדי לבצע פעולה כלשהי – למשל להציג את התוצאה למשתמש או להפעיל לוגיקה עסקית נוספת.

תהליך ביצוע פונקציונלי לדגמי TensorFlow Lite באפליקציות ל-Android

איור 1. תהליך ביצוע פונקציונלי לדגמי TensorFlow Lite באפליקציות ל-Android.

ברמת העיצוב הפונקציונלי, האפליקציה ל-Android צריכה את הרכיבים הבאים כדי להפעיל מודל של TensorFlow Lite:

  • סביבת זמן הריצה של TensorFlow Lite להפעלת המודל
  • גורם handler לקלט של מודלים שימיר נתונים ל-tensor
  • מטפל בפלט של המודל כדי לקבל tensors של תוצאות פלט ולפרש אותם כתוצאות חיזוי

בקטעים הבאים מתואר איך הספריות והכלים של TensorFlow Lite מספקים את הרכיבים הפונקציונליים האלה.

פיתוח אפליקציות עם TensorFlow Lite

בקטע הזה מתואר הנתיב המומלץ והנפוץ ביותר להטמעת TensorFlow Lite באפליקציה ל-Android. כדאי לשים לב במיוחד לקטעים של סביבת זמן הריצה וספריות הפיתוח. אם פיתחתם מודל מותאם אישית, הקפידו לעיין בקטע Advanced Developmentpaths (נתיבי פיתוח מתקדמים).

אפשרויות של סביבת זמן ריצה

יש כמה דרכים להפעיל סביבת זמן ריצה לביצוע מודלים באפליקציה ל-Android. אלה האפשרויות המועדפות:

באופן כללי, יש להשתמש בסביבת זמן הריצה שמסופקת על ידי שירותי Google Play, כי היא חסכונית יותר במקום מהסביבה הרגילה, מפני שהיא נטענת באופן דינמי, וכך האפליקציה קטנה יותר. בנוסף, תוכנת Google Play Services משתמשת בגרסה היציבה והעדכנית ביותר של זמן הריצה TensorFlow Lite, ומספקת תכונות נוספות וביצועים משופרים לאורך זמן. אם אתם מציעים את האפליקציה במכשירים שלא כוללים את שירותי Google Play או שאתם צריכים לנהל מקרוב את סביבת זמן הריצה של למידת המכונה, עליכם להשתמש בסביבת זמן הריצה הסטנדרטית של TensorFlow Lite. האפשרות הזו כוללת קוד נוסף לאפליקציה, וכך מאפשרת לכם לשלוט טוב יותר בזמן הריצה של למידת מכונה, אבל כדאי להגדיל את גודל ההורדה של האפליקציה.

כדי לגשת לסביבות זמן הריצה האלה באפליקציה ל-Android, צריך להוסיף את ספריות הפיתוח של TensorFlow Lite לסביבת הפיתוח של האפליקציה. בחלק הבא מוסבר איך להשתמש בסביבות זמן ריצה סטנדרטיות באפליקציה.

ספריות

ניתן לגשת לממשק ה-API של תרגום שיחה באמצעות שירותי Google Play. אתם יכולים להשתמש בספריות הליבה והתמיכה של TensorFlow Lite באפליקציה ל-Android. למידע על תכנות השימוש בספריות TensorFlow Lite וסביבות זמן ריצה, ראו כלי פיתוח ל-Android.

השגת מודלים

כדי להפעיל מודל באפליקציה ל-Android, נדרש מודל בפורמט TensorFlow Lite. אפשר להשתמש במודלים מוכנים מראש או ליצור מודל באמצעות TensorFlow ולהמיר אותו לפורמט Lite. למידע נוסף על השגת מודלים לאפליקציה שלכם ל-Android, ראו את הדף Models של TensorFlow Lite.

טיפול בנתוני הקלט

כל הנתונים שאתם מעבירים למודל ML צריכים להיות tensor עם מבנה נתונים ספציפי, שנקרא בדרך כלל shape של ה-tensor. כדי לעבד נתונים באמצעות מודל, קוד האפליקציה צריך להפוך נתונים מהפורמט המקורי שלו, כמו תמונה, טקסט או נתוני אודיו, ל-tensor בצורה הנדרשת למודל שלכם.

הרצת מסקנות

עיבוד הנתונים באמצעות מודל כדי ליצור תוצאת חיזוי נקרא הרצת הֶקֵּשׁ. כדי להפעיל הסקה באפליקציה ל-Android, צריך סביבת זמן ריצה של TensorFlow Lite, model ונתוני קלט.

המהירות שבה המודל יכול להסיק מסקנות במכשיר מסוים תלויה בגודל הנתונים המעובדים, במורכבות המודל ובמשאבי המחשוב הזמינים כמו זיכרון ומעבד (CPU), או מעבדים מיוחדים שנקראים האצים. מודלים של למידת מכונה יכולים לפעול מהר יותר במעבדים המיוחדים, כמו יחידות עיבוד גרפי (GPU) ויחידות עיבוד tensor (TPU), באמצעות מנהלי התקנים של חומרה של TensorFlow Lite שנקראים משתמשים שקיבלו גישה. למידע נוסף על נציגים והאצת חומרה של עיבוד מודלים, קראו את הסקירה הכללית על שיפור מהירות באמצעות חומרה.

טיפול בתוצאות הפלט

מודלים יוצרים את תוצאות החיזוי כ-tensors, והאפליקציה ל-Android צריכה לטפל בהם באמצעות פעולה או הצגת תוצאה למשתמש. תוצאות הפלט של המודל יכולות להיות פשוטות כמו מספר המתאים לתוצאה אחת (0 = כלב, 1 = חתול, 2 = ציפור) לסיווג תמונה, לתוצאות מורכבות הרבה יותר, כמו מספר תיבות תוחמות עבור מספר אובייקטים מסווגים בתמונה, עם חיזוי דירוגי ביטחון בין 0 ל-1.

מסלולי פיתוח מתקדמים

כשמשתמשים במודלים מתוחכמים ומותאמים אישית של TensorFlow Lite, יכול להיות שתצטרכו להשתמש בגישות פיתוח מתקדמות יותר מאלה שמתוארות למעלה. בקטעים הבאים מתוארות שיטות מתקדמות לביצוע מודלים ופיתוח שלהן ל-TensorFlow Lite באפליקציות ל-Android.

סביבות זמן ריצה מתקדמות

בנוסף לסביבות זמן הריצה הרגילות ולסביבות זמן הריצה של TensorFlow Lite של Google Play Services, יש סביבות זמן ריצה נוספות שאפשר להשתמש בהן באפליקציה ל-Android. השימוש לרוב בסביבות האלה הוא אם יש לכם מודל למידת מכונה שמשתמש בפעולות של למידת מכונה שלא נתמכות בסביבת זמן הריצה הרגילה של TensorFlow Lite.

TensorFlow Lite Flex runtime מאפשר לכלול אופרטורים ספציפיים שנדרשים למודל. אתם יכולים לפתח את TensorFlow Lite ל-Android כדי להפעיל את המודל בצורה מתקדמת, כך שתכלול אופרטורים ופונקציות נוספות שנדרשות להפעלת מודל למידת המכונה ב-TensorFlow. מידע נוסף זמין במאמר Build TensorFlow Lite ל-Android.

ממשקי API של C ו-C++

TensorFlow Lite מספק גם API להרצת מודלים באמצעות C ו-C++. אם באפליקציה שלכם נעשה שימוש ב-Android NDK, כדאי לשקול להשתמש ב-API הזה. כדאי גם להשתמש ב-API הזה אם אתם רוצים לשתף את הקוד בין מספר פלטפורמות. מידע נוסף על אפשרות הפיתוח הזו זמין בדף כלי פיתוח.

ביצוע מודלים מבוססי-שרת

באופן כללי, כדאי להריץ מודלים באפליקציה במכשיר Android כדי ליהנות מזמן אחזור קצר יותר ומשפר את פרטיות הנתונים למשתמשים. עם זאת, במקרים מסוימים פתרון טוב יותר הוא להריץ מודל בשרת בענן, מחוץ למכשיר. לדוגמה, אם יש לכם מודל גדול שלא ניתן לדחוס בקלות לגודל שמתאים למכשירי Android של המשתמשים, או אם הביצועים שלו סבירים במכשירים האלה. הגישה הזו יכולה להיות גם הפתרון המועדף עליכם, אם הביצועים העקביים של המודל במגוון רחב של מכשירים נמצאים בראש סדר העדיפויות.

ב-Google Cloud יש חבילה מלאה של שירותים להפעלת מודלים של למידת מכונה ב-TensorFlow. למידע נוסף, קראו את הדף מוצרי AI ולמידת מכונה של Google Cloud.

פיתוח ואופטימיזציה של מודלים בהתאמה אישית

סביר להניח שנתיבי פיתוח מתקדמים יותר יכללו פיתוח מודלים מותאמים אישית של למידת מכונה ואופטימיזציה של המודלים האלה לשימוש במכשירי Android. אם אתם מתכננים ליצור מודלים מותאמים אישית, הקפידו להשתמש בשיטות קוונטיזציה במודלים כדי לצמצם את עלויות הזיכרון והעיבוד. למידע נוסף על בניית מודלים עם ביצועים גבוהים לשימוש ב-TensorFlow Lite, קראו את המאמר שיטות מומלצות לביצועים בקטע 'דגמים'.