בנייה והמרה של מודלים

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

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

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

המרת דגם

כדי להמיר מודל TensorFlow מאומן להפעלה על מיקרו-בקרים, עליך להשתמש ב- TensorFlow Lite ממיר Python API . פעולה זו תמיר את המודל ל- 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 for Microcontrollers תומך כיום בתת-קבוצה מוגבלת של פעולות TensorFlow, מה שמשפיע על ארכיטקטורות המודל שניתן להפעיל. אנו עובדים על הרחבת התמיכה בתפעול, הן מבחינת יישומי התייחסות והן מבחינת אופטימיזציות לארכיטקטורות ספציפיות.

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

,

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

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

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

המרת דגם

כדי להמיר מודל TensorFlow מאומן להפעלה על מיקרו-בקרים, עליך להשתמש ב- TensorFlow Lite ממיר Python API . פעולה זו תמיר את המודל ל- 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 for Microcontrollers תומך כיום בתת-קבוצה מוגבלת של פעולות TensorFlow, מה שמשפיע על ארכיטקטורות המודל שניתן להפעיל. אנו עובדים על הרחבת התמיכה בתפעול, הן מבחינת יישומי התייחסות והן מבחינת אופטימיזציות לארכיטקטורות ספציפיות.

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