בניית TensorFlow Lite עבור לוחות ARM

עמוד זה מתאר כיצד לבנות את ספריות 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