Auf dieser Seite wird beschrieben, wie Sie die LiteRT-Bibliotheken für ARM-basierte Computer erstellen.
LiteRT unterstützt zwei Build-Systeme und die unterstützten Funktionen der einzelnen Build-Systeme sind nicht identisch. Wählen Sie anhand der folgenden Tabelle ein geeignetes Build-System aus.
| Funktion | Bazel | CMake |
|---|---|---|
| Vordefinierte Toolchains | armhf, aarch64 | armel, armhf, aarch64 |
| Benutzerdefinierte Toolchains | schwieriger zu verwenden | einfach zu verwenden |
| TF-Vorgänge auswählen | unterstützt | Nicht unterstützt [not_supported] |
| GPU-Delegate | Nur für Android verfügbar | jede Plattform, die OpenCL unterstützt |
| XNNPack | unterstützt | unterstützt |
| Python-Wheel | unterstützt | unterstützt |
| C-API | unterstützt | Unterstützt |
| C++ API | Unterstützung für Bazel-Projekte | Unterstützung für CMake-Projekte |
Cross-Kompilierung für ARM mit CMake
Wenn Sie ein CMake-Projekt haben oder eine benutzerdefinierte Toolchain verwenden möchten, sollten Sie CMake für die Cross-Compilation verwenden. Dafür gibt es eine separate Seite LiteRT mit CMake cross-compilieren.
Cross-Compilation für ARM mit Bazel
Wenn Sie ein Bazel-Projekt haben oder TF-Operationen verwenden möchten, sollten Sie das Bazel-Build-System verwenden. Sie verwenden die integrierten ARM GCC 8.3-Toolchains mit Bazel, um eine ARM32/64-Shared Library zu erstellen.
| Zielarchitektur | Bazel-Konfiguration | Kompatible Geräte |
|---|---|---|
| armhf (ARM32) | --config=elinux_armhf | RPI3, RPI4 mit 32 Bit Raspberry Pi OS |
| AArch64 (ARM64) | --config=elinux_aarch64 | Coral, RPI4 mit Ubuntu (64-Bit) |
Die folgende Anleitung wurde auf einem 64-Bit-PC mit Ubuntu 16.04.3 (AMD64) und dem TensorFlow-Docker-Image tensorflow/tensorflow:devel getestet.
So führen Sie die Cross-Compilation von LiteRT mit Bazel durch:
Schritt 1: Bazel installieren
Bazel ist das primäre Build-System für TensorFlow. Installieren Sie die aktuelle Version des Bazel-Build-Systems.
Schritt 2: TensorFlow-Repository klonen
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Schritt 3: ARM-Binärdatei erstellen
C-Bibliothek
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so
Sie finden eine gemeinsam genutzte Bibliothek unter:
bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.
Weitere Informationen finden Sie auf der Seite LiteRT C API.
C++-Bibliothek
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so
Sie finden eine gemeinsam genutzte Bibliothek unter:
bazel-bin/tensorflow/lite/libtensorflowlite.so.
Derzeit gibt es keine einfache Möglichkeit, alle erforderlichen Headerdateien zu extrahieren. Sie müssen daher alle Headerdateien in tensorflow/lite/ aus dem TensorFlow-Repository einfügen. Außerdem benötigen Sie Headerdateien von FlatBuffers und Abseil.
ETC
Sie können mit der Toolchain auch andere Bazel-Ziele erstellen. Hier sind einige nützliche Ziele:
- //tensorflow/lite/tools/benchmark:benchmark_model
- //tensorflow/lite/examples/label_image:label_image