עמוד זה מתאר כיצד לבנות את ספריות TensorFlow Lite עבור מחשבים מבוססי ARM.
TensorFlow Lite תומך בשתי מערכות בנייה והתכונות הנתמכות מכל מערכת בנייה אינן זהות. עיין בטבלה הבאה כדי לבחור מערכת בנייה נכונה.
תכונה | בזל | CMake |
---|---|---|
שרשרת כלים מוגדרת מראש | armhf, aarch64 | armel, armhf, aarch64 |
שרשרת כלים בהתאמה אישית | קשה יותר לשימוש | קל לשימוש |
בחר TF ops | נתמך | אינו נתמך |
נציג GPU | זמין רק עבור אנדרואיד | כל פלטפורמה שתומכת ב-OpenCL |
XNNPack | נתמך | נתמך |
גלגל פייתון | נתמך | נתמך |
C API | נתמך | נתמך |
C++ API | נתמך עבור פרויקטים של Bazel | נתמך עבור פרויקטים של CMake |
קומפילציה צולבת עבור ARM עם CMake
אם יש לך פרויקט CMake או אם אתה רוצה להשתמש בשרשרת כלים מותאמת אישית, מוטב שתשתמש ב- CMake להידור צולב. יש עמוד נפרד של אוסף TensorFlow Lite עם CMake זמין עבור זה.
קומפילציה צולבת עבור ARM עם Bazel
אם יש לך פרויקט של Bazel או אם אתה רוצה להשתמש ב-TF ops, מוטב שתשתמש במערכת הבנייה של Bazel. תשתמש בשרשרת הכלים המשולבת של ARM GCC 8.3 עם Bazel כדי לבנות ספרייה משותפת של ARM32/64.
ארכיטקטורת יעד | תצורת Bazel | מכשירים תואמים |
---|---|---|
armhf (ARM32) | --config=elinux_armhf | RPI3, RPI4 עם 32 סיביות Raspberry Pi OS |
AArch64 (ARM64) | --config=elinux_aarch64 | קורל, RPI4 עם אובונטו 64 סיביות |
ההוראות הבאות נבדקו על אובונטו 16.04.3 64-bit PC (AMD64) ועל TensorFlow devel docker image tensorflow/tensorflow:devel .
כדי להתאים את TensorFlow Lite עם Bazel, בצע את השלבים:
שלב 1. התקן את Bazel
Bazel היא מערכת הבנייה העיקרית עבור TensorFlow. התקן את הגרסה העדכנית ביותר של מערכת הבנייה של 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
.
בדוק את דף ה-API של TensorFlow Lite C לפרטים.
ספריית C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so
אתה יכול למצוא ספרייה משותפת ב: bazel-bin/tensorflow/lite/libtensorflowlite.so
.
נכון לעכשיו, אין דרך פשוטה לחלץ את כל קבצי הכותרות הדרושים, לכן עליך לכלול את כל קבצי הכותרות ב-tensorflow/lite/ ממאגר TensorFlow. בנוסף, תזדקק לקבצי כותרות מ-FlatBuffers ו- Abseil.
וכו
אתה יכול גם לבנות מטרות Bazel אחרות עם שרשרת הכלים. הנה כמה יעדים שימושיים.
- //tensorflow/lite/tools/benchmark:benchmark_model
- //tensorflow/lite/examples/label_image:label_image