7.9. TensorFlow Lite for Microcontrollers#

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

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

TFLM הוא המנוע על ה-H7, ה-RT1062 וה-AE3.

Three columns side by side. Left: H7 and RT1062 run TFLM with CMSIS-NN kernels on a Cortex-M7. Middle: AE3 runs TFLM with CMSIS-NN and the Ethos-U operator on a Cortex-M55 with an Ethos-U55 NPU. Right: N6 runs STAI on a Neural-ART NPU.

המנוע שבמרכז predict() הוא מערך שונה בכל משפחת מצלמות.#

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.