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

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

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

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

המרה של מודל

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

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

המרה למערך C

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

פקודת ה-unix הבאה תיצור קובץ מקור C שמכיל את מודל LiteRT כמערך 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.

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

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

גודל הדגם

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

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

עומס עבודה

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

תמיכה בפעולות

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

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