בדף הזה נסביר איך לבנות את ספריות 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