הסבר על ספריית C++

ספריית 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.

ראו תחילת העבודה עם מיקרו-בקרים בהדרכה המפורטת של השימוש.

מערכת ה-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