סקירה כללית על המרת מודלים של TensorFlow

מודלים של למידת מכונה (ML) שבהם אתם משתמשים עם LiteRT נבנים ומאומנים במקור באמצעות ספריות וכלים של TensorFlow core. אחרי שיוצרים מודל באמצעות TensorFlow Core, אפשר להמיר אותו למודל ML קטן ויעיל יותר בפורמט שנקרא מודל LiteRT. בקטע הזה מוסבר איך להמיר מודלים של TensorFlow לפורמט מודל LiteRT.

תהליך העבודה של ההמרה

יש כמה דרכים להמיר מודלים של TensorFlow לפורמט LiteRT, בהתאם לתוכן של מודל ה-ML. השלב הראשון בתהליך הזה הוא הערכה של המודל כדי לקבוע אם אפשר להמיר אותו ישירות. ההערכה הזו קובעת אם התוכן של המודל נתמך על ידי סביבות זמן הריצה הרגילות של LiteRT, על סמך פעולות TensorFlow שבהן נעשה שימוש. אם המודל שלכם משתמש בפעולות שלא נכללות בקבוצת הפעולות הנתמכות, יש לכם אפשרות לשנות את המודל או להשתמש בטכניקות מתקדמות של המרות.

בתרשים הבא מוצגים השלבים הכלליים בהמרת מודל.

תהליך העבודה של המרת TFLite

איור 1. תהליך עבודה של המרות ב-LiteRT.

בקטעים הבאים מתואר תהליך ההערכה וההמרה של מודלים לשימוש ב-LiteRT.

פורמטים של מודלים לקלט

אפשר להשתמש בכלי ההמרה עם פורמטים של מודלים מהסוגים הבאים:

אפשר לשמור את המודלים של Keras ושל פונקציות קונקרטיות כ-SavedModel ולהמיר אותם באמצעות הנתיב המומלץ.

אם יש לכם מודל Jax, אתם יכולים להשתמש ב-API‏ TFLiteConverter.experimental_from_jax כדי להמיר אותו לפורמט LiteRT. חשוב לזכור שממשק ה-API הזה כפוף לשינויים בזמן שהוא במצב ניסיוני.

הערכת המרות

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

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

המרות לפי מודל

הכלי להמרת LiteRT לוקח מודל TensorFlow ויוצר מודל LiteRT (פורמט FlatBuffer שעבר אופטימיזציה ומזוהה על ידי סיומת הקובץ .tflite). אפשר לטעון SavedModel או להמיר ישירות מודל שיוצרים בקוד.

הכלי להמרה מקבל 3 דגלים (או אפשרויות) עיקריים שבאמצעותם אפשר להתאים אישית את ההמרה עבור המודל שלכם:

  1. דגלי תאימות מאפשרים לציין אם ההמרה צריכה לאפשר אופרטורים מותאמים אישית.
  2. דגלי אופטימיזציה מאפשרים לכם לציין את סוג האופטימיזציה שיוחל במהלך ההמרה. טכניקת האופטימיזציה הנפוצה ביותר היא קוונטיזציה אחרי אימון.
  3. דגלים של מטא-נתונים מאפשרים להוסיף מטא-נתונים למודל שהומר, וכך קל יותר ליצור קוד wrapper ספציפי לפלטפורמה כשפורסים מודלים במכשירים.

אפשר להמיר את המודל באמצעות Python API או באמצעות הכלי Command line. במדריך Convert TF model (המרת מודל TF) מפורטות הוראות להפעלת הכלי להמרה במודל.

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

המרות מתקדמות

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

  • מידע נוסף על שיקולי התאימות של מודלים ב-TensorFlow וב-LiteRT זמין במאמר סקירה כללית על תאימות מודלים.
  • בנושאים שמופיעים בקטע 'סקירה כללית של תאימות המודל' מוסבר על טכניקות מתקדמות לשינוי המבנה של המודל, כמו המדריך Select operators.
  • רשימה מלאה של הפעולות וההגבלות מופיעה בדף LiteRT Ops.

השלבים הבאים