LiteRT für ARM-Boards erstellen

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