יצירה והמרה של מודלים

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

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

תוכלו לראות דוגמה מקצה לקצה לבניית מודל ולהמרת המודל, תוכלו לראות את הדוגמה של Hello World.

המרה לפי מודל

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

כדי להשיג את גודל המודל הקטן ביותר האפשרי, כדאי להשתמש בקוונטיזציה אחרי אימון.

המרה למערך C

להרבה פלטפורמות מיקרו-בקרים אין תמיכה מובנית במערכת קבצים. הדרך הקלה ביותר להשתמש במודל מהתוכנה היא לכלול אותו כמערך C ולהדר אותו בתוכנה.

פקודת unix הבאה תיצור קובץ מקור מסוג C שמכיל את מודל TensorFlow Lite כמערך char:

xxd -i converted_model.tflite > model_data.cc

הפלט ייראה בערך כך:

unsigned char converted_model_tflite[] = {
  0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
  // <Lines omitted>
};
unsigned int converted_model_tflite_len = 18200;

לאחר יצירת הקובץ, אפשר לכלול אותו בתוכנית. חשוב לשנות את הצהרת המערך ל-const כדי לשפר את יעילות הזיכרון בפלטפורמות מוטמעות.

כדי לראות איך לכלול מודל בתוכנית ולהשתמש בו, ראו hello_world_test.cc בדוגמה של Hello World (שלום עולם).

ארכיטקטורת מודלים ואימון

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

גודל הדגם

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

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

עומס עבודה

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

תמיכה בתפעול

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

הפעולות הנתמכות מופיעות בקובץ micro_mutable_ops_resolver.h