LiteRT für ARM-Boards erstellen

Auf dieser Seite wird beschrieben, wie Sie die LiteRT-Bibliotheken für ARM-basierte Computer.

LiteRT unterstützt zwei Build-Systeme mit jeweils unterstützten Funktionen. Build-Systems nicht identisch sind. Orientieren Sie sich an der folgenden Tabelle, um einen geeigneten Build auszuwählen. System.

Funktion Bazel CMake
Vordefinierte Toolchains Armhf, Aarch64 Armel, Armhf, Aarch64
Benutzerdefinierte Toolchains schwieriger zu nutzen einfach zu verwenden
TF-Operationen auswählen unterstützt Nicht unterstützt [not_supported]
GPU-Delegierung nur für Android verfügbar jede Plattform, die OpenCL unterstützt
XNNPack unterstützt unterstützt
Python-Rad unterstützt unterstützt
C API unterstützt unterstützt
C++ API unterstützt für Bazel-Projekte unterstützt für CMake-Projekte

Cross-Kompilierung für ARM mit CMake

Wenn Sie ein CMake-Projekt haben oder eine benutzerdefinierte Toolchain verwenden möchten, müssen Sie für die Cross-Kompilierung mit CMake besser. Es gibt eine separate Cross-Compilation LiteRT mit CMake Seite dafür zur Verfügung.

Kreuzkompilierung für ARM mit Bazel

Wenn Sie ein Bazel-Projekt haben oder TF-Operationen verwenden möchten, sollten Sie stattdessen Bazel verwenden. zu erstellen. Sie verwenden das integrierte ARM GCC 8.3-Toolchains um eine gemeinsam genutzte ARM32/64-Bibliothek 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 Ubuntu 16.04.3 64-Bit-PC (AMD64) getestet und TensorFlow Developer Docker Image tensorflow/tensorflow:devel.

Führen Sie die folgenden Schritte aus, um LiteRT mit Bazel zu kompilieren:

Schritt 1: Bazel installieren

Bazel ist das primäre Build-System für TensorFlow. Neueste Version von das Bazel-Build-System verwendet.

Schritt 2: TensorFlow-Repository klonen

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

Schritt 3: ARM-Binärprogramm erstellen

C-Bibliothek
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

Sie finden die gemeinsam genutzte Bibliothek hier: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so

Prüfen LiteRT C API für die Details.

C++-Bibliothek
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

Sie finden die gemeinsam genutzte Bibliothek hier: bazel-bin/tensorflow/lite/libtensorflowlite.so

Derzeit gibt es keine einfache Möglichkeit, alle erforderlichen Headerdateien zu extrahieren. Deshalb müssen Sie alle Header-Dateien aus dem TensorFlow-Format zu erstellen. Außerdem benötigen Sie Header-Dateien aus FlatBuffers und Abseil.

usw.

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