ספריית LiteRT for Microcontrollers C++ היא חלק מאגר של TensorFlow הוא נועד להיות קריא, קל לשינוי, מאומת היטב, קל לשילוב, ותואם ל-LiteRT הרגיל.
המסמך הבא מתאר את המבנה הבסיסי של ספריית C++ שמספק מידע על יצירת פרויקט משלכם.
מבנה הקובץ
micro
לספריית הבסיס יש מבנה פשוט יחסית. אבל מאחר שהוא ממוקם
במאגר TensorFlow המקיף שלנו, יצרנו סקריפטים
קובצי פרויקט שנוצרו מראש ומספקים בנפרד את קובצי המקור הרלוונטיים
בסביבות פיתוח מוטמעות שונות.
קבצים של מפתחות
הקבצים החשובים ביותר לשימוש ב-LiteRT למיקרו-בקרים רכיב התרגום נמצא ברמה הבסיסית (root) של הפרויקט, והוא מלווה בבדיקות:
[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.
micro_error_reporter.h
יוצר מידע על תוצאות ניפוי הבאגים.micro_interpreter.h
שמכיל קוד לטיפול ולהרצה של מודלים.
ראו תחילת העבודה עם מיקרו-בקרים בהדרכה המפורטת של השימוש.
מערכת ה-build מספקת הטמעות ספציפיות לפלטפורמה של
. הם נמצאים בספרייה עם שם הפלטפורמה. לדוגמה
cortex-m
קיימות כמה ספריות נוספות, כולל:
kernel
שכולל הטמעות של פעולות ואת הקוד המשויך.tools
שכולל כלי build ואת הפלט שלהם.examples
שכולל קוד לדוגמה.
יצירת פרויקט חדש
אנחנו ממליצים להשתמש בדוגמה Hello World כתבנית לפרויקטים חדשים. שלך יכולים לקבל גרסה שלו לפלטפורמה שבחרתם על ידי ביצוע הפעולות הבאות בקטע הזה.
שימוש בספריית Arduino
אם משתמשים ב-Arduino, הדוגמה Hello World כלולה
Arduino_TensorFlowLite
ספריית Arduino, שאותה אפשר להתקין באופן ידני
Arduino IDE וב-Arduino Create.
אחרי הוספת הספרייה, צריך לעבור אל File -> Examples
. אתם אמורים לראות
דוגמה לתחתית הרשימה בשם TensorFlowLite:hello_world
. יש לבחור באחת מהאפשרויות הבאות
ולוחצים על hello_world
כדי לטעון את הדוגמה. לאחר מכן תוכל לשמור עותק של
ולהשתמש בה כבסיס לפרויקט שלכם.
יצירת פרויקטים לפלטפורמות אחרות
LiteRT למיקרו-בקרים יכול ליצור פרויקטים עצמאיים
שמכילים את כל קובצי המקור הנחוצים, באמצעות Makefile
. הערך הנוכחי
הסביבות הנתמכות הן Keil, Maker ו-Mbed.
כדי ליצור את הפרויקטים האלה באמצעות Maker, משכפלים מאגר של TensorFlow/tflite-micro ומריצים את הפקודה הבאה:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
הפעולה תימשך כמה דקות, מכיוון שהיא צריכה להוריד כמה שרשראות כלים גדולות
של יחסי התלות. בסיום התהליך, אמורות להופיע כמה תיקיות שנוצרו
בתוך נתיב כמו gen/linux_x86_64/prj/
הנתיב המדויק תלוי במערכת ההפעלה של המארח). התיקיות האלה כוללות את
של הפרויקט וקובצי המקור.
אחרי הרצת הפקודה, תוכלו למצוא את הפרויקטים של Hello World ב-
gen/linux_x86_64/prj/hello_world
. עבור
לדוגמה, hello_world/keil
יכיל את פרויקט Keil.
הרצת הבדיקות
כדי ליצור את הספרייה ולהריץ את כל בדיקות היחידה שלה, משתמשים בפקודה הבאה:
make -f tensorflow/lite/micro/tools/make/Makefile test
כדי להריץ בדיקה ספציפית, צריך להשתמש בפקודה הבאה ולהחליף את <test_name>
בשם הבדיקה:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
שמות הבדיקות מופיעים בקובצי ה-Makefile של הפרויקט. לדוגמה,
examples/hello_world/Makefile.inc
מציין את שמות הבדיקות של Hello
דוגמה בעולם.
יצירת קבצים בינאריים
כדי לפתח קובץ בינארי שניתן להרצה לפרויקט נתון (כמו אפליקציה לדוגמה),
משתמשים בפקודה הבאה ומחליפים את <project_name>
בפרויקט הרצוי
כדי ליצור:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
לדוגמה, הפקודה הבאה תיצור קובץ בינארי של פקודת Hello World. יישום:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
כברירת מחדל, הפרויקט יעבור הידור (compile) למערכת ההפעלה המארחת. שפת תרגום
מציינים ארכיטקטורת יעד אחרת, משתמשים ב-TARGET=
וב-TARGET_ARCH=
.
הדוגמה הבאה ממחישה איך לבנות את הדוגמה Hello World
cortex-m0:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
כשמצוין יעד, כל קובצי המקור הזמינים הספציפיים ליעד
שבו נעשה שימוש במקום הקוד המקורי. לדוגמה, ספריית המשנה
examples/hello_world/cortex_m_generic
מכיל הטמעות של SparkFun Edge
מהקבצים constants.cc
ו-output_handler.cc
, שבהם ייעשה שימוש כאשר
היעד cortex_m_generic
צוין.
שמות הפרויקטים מופיעים בתיקיית ה-Makefiles של הפרויקט. לדוגמה,
examples/hello_world/Makefile.inc
מציין את השמות הבינאריים של Hello
דוגמה בעולם.
ליבות (kernel) שעברו אופטימיזציה
ליבות ההפניה ברמה הבסיסית (root) של tensorflow/lite/micro/kernels
הן
מוטמעות רק ב-C/C++ ולא כוללות חומרה ספציפית לפלטפורמה
ואופטימיזציות.
גרסאות ליבה (kernel) שעברו אופטימיזציה מסופקות בספריות משנה. לדוגמה,
kernels/cmsis-nn
מכיל מספר ליבה (kernel) שעברו אופטימיזציה שמשתמשות בארכיטקטורת Arm
ספריית CMSIS-NN.
כדי ליצור פרויקטים באמצעות ליבה (kernel) שעברו אופטימיזציה, צריך להשתמש בפקודה הבאה:
מחליפים את <subdirectory_name>
בשם של ספריית המשנה שמכילה את
אופטימיזציות:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
אפשר להוסיף אופטימיזציות משלכם על ידי יצירת תיקיית משנה חדשה עבורן. רביעי לעודד בקשות משיכה להטמעות חדשות שעברו אופטימיזציה.
יצירת ספריית Arduino
אם אתם צריכים ליצור build חדש של הספרייה, אפשר להריץ את ממאגר TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
הספרייה שתתקבל נמצאת
gen/arduino_x86_64/prj/tensorflow_lite.zip
יציאה למכשירים חדשים
הנחיות להעברת LiteRT למיקרו-בקרים לפלטפורמות חדשות
מכשירים נמצאים ב-
micro/docs/new_platform_support.md