7.9. TensorFlow Lite for Microcontrollers¶
TFLM הוא זמן הריצה שבו משתמשות רוב המצלמות כדי להריץ מודל טעון. הוא מנתח את קובץ ה-.tflite – FlatBuffer של אופרטורים, משקלים וצורות טנזורים – ועובר על רשימת האופרטורים לפי הסדר, מנתב כל אופרטור אל ליבה המייצרת את הטנזור הביניימי הבא.
טנזורי ביניים שוכנים ב-tensor arena בגודל קבוע המוקצה בזמן הטעינה. המצלמה קובעת את גודל ה-arena בשני מעברים: ראשית, נבנה מפרש זמני כנגד מקסימום הערימה הפנויה כך שהמודל יכול לדווח על זיכרון העבודה הדרוש לו; המפרש הקבוע מוקצה אז עם אותו גודל מדויק בתוספת מרווח קטן. מודלים קטנים יותר משאירים יותר ערימה פנויה עבור שאר הסקריפט.
TFLM הוא המנוע על ה-H7, ה-RT1062 וה-AE3.
7.9.1. מאתר האופרטורים¶
TFLM אינו נשלח עם כל ליבה. המצלמה מקשרת resolver המפרט את האופרטורים שהיא יכולה להריץ, ומודל הנטען כנגד ה-resolver נכשל בזמן הטעינה אם הוא מכיל אופרטור שאינו ברשימה. הגרסה הנשלחת רושמת את האופרטורים הנפוצים ברשתות ראייה ועיבוד אותות – שכבות ה-convolution וה-dense, שכבות ה-pool וה-activation, אופרטורי ה-reshape וה-concat, ואופרטורי ה-quantize וה-dequantize – כך שמודל שאומן כנגד אחת מהארכיטקטורות הסטנדרטיות (YOLO, MediaPipe, MobileNet) נטען ללא הרחבת הרשימה.
גרסת ה-AE3 רושמת בנוסף את אופרטור ה-Ethos-U. מודל מהודר ב-Vela הוא בכל מקרה .tflite רגיל, ו-TFLM עובר עליו כרגיל; ה-subgraphs המתויגים-Vela פוגעים באופרטור ה-Ethos-U ומנתבים אל הNPU.