בדף הזה נסביר איך ליצור את ספריות TensorFlow Lite למחשבים מבוססי ARM.
ב-TensorFlow Lite יש תמיכה בשתי מערכות build, ותכונות נתמכות מכל מערכת build הן לא זהות. בטבלה הבאה תוכלו לבחור מערכת build מתאימה.
תכונה | Bazel | CMake |
---|---|---|
רשתות כלים מוגדרות מראש | Armhf, aarch64 | Armel, Armhf, aarch64 |
שרשראות כלים בהתאמה אישית | קשה יותר לשימוש | קל לשימוש |
בחירת פעולות TF | נתמך | לא אפשרי |
הענקת גישה ל-GPU | זמינה רק ב-Android | כל פלטפורמה שתומכת ב-OpenCL |
XNNPack | נתמך | נתמך |
גלגל Python | נתמך | נתמך |
C API | נתמך | נתמך |
API של C++ | תמיכה בפרויקטים של Bazel | תמיכה בפרויקטים של CMake |
עיבוד מוצלב ל-ARM עם CMake
אם יש לכם פרויקט ב-CMake, או אם אתם רוצים להשתמש בשרשרת כלים בהתאמה אישית, עדיף להשתמש ב-CMake עבור קומפילציה צולבת. לשם כך יש דף נפרד ל-Cross compilation TensorFlow Lite עם CMake.
עיבוד מוצלב ל-ARM עם Bazel
אם יש לכם פרויקט של Bazel או שאתם רוצים להשתמש ב-TF Ops, עדיף לכם להשתמש במערכת Bazel Build. תשתמשו בשרשראות הכלים המשולבות של ARM32/64 עם Bazel כדי ליצור ספרייה משותפת מסוג ARM32/64.
ארכיטקטורת יעד | הגדרת Bazel | מכשירים תואמים |
---|---|---|
Armhf (ARM32) | --config=elinux_armhf | RPI3, RPI4 עם מערכת הפעלה Raspberry Pi 32 סיביות |
AArch64 (ARM64) | --config=elinux_aarch64 | קורל, RPI4 עם Ubuntu 64 ביט |
ההוראות הבאות נבדקו ב-Ubuntu 16.04.3 64-bit PC (AMD64) וב-TensorFlow devel reporter image tensorflow/tensorflow:devel.
כדי לבצע הידור של TensorFlow Lite עם Bazel:
שלב 1. להתקנת Bazel
Bazel היא מערכת ה-build הראשית של TensorFlow. מתקינים את הגרסה האחרונה של מערכת ה-build של Bazel.
שלב 2. מאגר שכפול TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
שלב 3. יצירת קובץ בינארי של ARM
ספריית C
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so
אפשר למצוא ספרייה משותפת ב:
bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so
.
הפרטים מופיעים בדף TensorFlow Lite C API.
ספריית C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so
אפשר למצוא ספרייה משותפת ב:
bazel-bin/tensorflow/lite/libtensorflowlite.so
.
בשלב הזה אין דרך פשוטה לחלץ את כל קובצי הכותרות הנדרשים, ולכן צריך לכלול את כל קובצי הכותרות ב-tensorflow/lite/ מהמאגר של TensorFlow. בנוסף, צריך קובצי כותרת מ-FlastBuffers ומ-Abseil.
וכו'
אפשר גם לבנות יעדים אחרים של Bazel באמצעות שרשרת הכלים. הנה כמה יעדים שימושיים.
- //tensorflow/lite/tools/benchmark:benchmark_model
- //tensorflow/lite/examples/label_image:label_image