בדף הזה מוסבר איך ליצור את ספריות LiteRT למחשבים מבוססי ARM.
LiteRT תומך בשתי מערכות build, והתכונות הנתמכות מכל מערכת build לא זהות. כדאי לעיין בטבלה הבאה כדי לבחור את מערכת ה-Build המתאימה.
| תכונה | Bazel | CMake |
|---|---|---|
| שרשראות כלים מוגדרות מראש | armhf, aarch64 | armel, armhf, aarch64 |
| שרשראות כלים מותאמות אישית | קשה יותר לשימוש | קל לשימוש |
| בחירת פעולות TF | נתמך | לא אפשרי |
| GPU delegate | זמין רק ב-Android | כל פלטפורמה שתומכת ב-OpenCL |
| XNNPack | נתמך | נתמך |
| Python Wheel | נתמך | נתמך |
| C API | נתמך | נתמך |
| C++ API | נתמך בפרויקטים של Bazel | נתמך בפרויקטים של CMake |
עיבוד בין מערכות ל-ARM באמצעות CMake
אם יש לכם פרויקט CMake או שאתם רוצים להשתמש בשרשרת כלים בהתאמה אישית, מומלץ להשתמש ב-CMake לצורך קומפילציה חוצה. לשם כך יש דף נפרד בנושא Cross compilation LiteRT with CMake.
עיבוד בין מערכות ל-ARM באמצעות Bazel
אם יש לכם פרויקט Bazel או שאתם רוצים להשתמש בפעולות TF, כדאי להשתמש במערכת ה-build של Bazel. תשתמשו בערכות הכלים המשולבות של 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 (AMD64) ובתמונת Docker של TensorFlow devel 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 ומ-Abseil.
וכו'
אפשר גם ליצור יעדי Bazel אחרים באמצעות ערכת הכלים. הנה כמה יעדים שימושיים.
- //tensorflow/lite/tools/benchmark:benchmark_model
- //tensorflow/lite/examples/label_image:label_image