בניית LiteRT ללוחות ARM

בדף הזה נסביר איך לבנות את ספריות LiteRT ב-ARM במחשבים.

ב-LiteRT יש תמיכה בשתי מערכות 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 או אם אתם רוצים להשתמש ב-toolchain בהתאמה אישית, כדי להשתמש טוב יותר ב-CMake לאוסף תמונות, יש LiteRT עם CMake לדף הזה.

אוסף מוצלב של ARM עם Bazel

אם יש לכם פרויקט ב-Bazel או אם אתם רוצים להשתמש בתפעול TF, עדיף להשתמש ב-Bazel. של מערכת ה-build. אתם תשתמשו צרור כלים של ARM GCC 8.3 עם Bazel כדי לבנות ספרייה משותפת של ARM32/64.

ארכיטקטורת יעד הגדרת Bazel מכשירים תואמים
Armhf (ARM32) --config=elinux_armhf RPI3, RPI4 עם 32 ביט מערכת הפעלה Raspberry Pi
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 עם Ubuntu 64 ביט

ההוראות הבאות נבדקו ב-Ubuntu 16.04.3 64-bit PC (AMD64) ובתמונה של TensorFlow Docer, tensorflow/tensorflow:devel.

כדי לבצע הידור משולב של LiteRT עם 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

לבדיקה LiteRT C API כדי לקרוא את הפרטים.

ספריית C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

אפשר למצוא ספרייה משותפת במקומות הבאים: bazel-bin/tensorflow/lite/libtensorflowlite.so

נכון לעכשיו, אין דרך פשוטה לחלץ את כל קובצי הכותרות הדרושים. לכן צריך לכלול את כל קובצי הכותרות ב-tensorflow/lite/ מ-TensorFlow של מאגר הנתונים. בנוסף, צריך קובצי כותרת מ-FlatBuffers אבסייל.

וכו'

אפשר גם לבנות יעדים נוספים של Bazel באמצעות 'צרור הכלים'. הנה כמה הצעות שימושיות יעדים.

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image