Tworzenie LiteRT dla płyt ARM

Na tej stronie opisujemy, jak tworzyć biblioteki LiteRT na komputery z procesorami ARM.

LiteRT obsługuje 2 systemy kompilacji, a obsługiwane funkcje w każdym z nich nie są identyczne. Aby wybrać odpowiedni system kompilacji, zapoznaj się z tabelą poniżej.

Funkcja Bazel CMake
Wstępnie zdefiniowane łańcuchy narzędzi armhf, aarch64 armel, armhf, aarch64
Niestandardowe łańcuchy narzędzi trudniejsze w użyciu, łatwe w użyciu,
Wybierz operacje TF obsługiwana not supported
Delegat GPU dostępne tylko na Androidzie, dowolna platforma obsługująca OpenCL,
XNNPack obsługiwana obsługiwana
Python Wheel obsługiwana obsługiwana
C API obsługiwana obsługiwane
C++ API obsługiwane w przypadku projektów Bazel, obsługiwane w przypadku projektów CMake,

Kompilacja skrośna dla architektury ARM za pomocą CMake

Jeśli masz projekt CMake lub chcesz używać niestandardowego łańcucha narzędzi, lepiej użyj CMake do kompilacji krzyżowej. W tym celu dostępna jest osobna strona Kompilacja krzyżowa LiteRT z CMake.

Kompilacja krzyżowa dla architektury ARM za pomocą narzędzia Bazel

Jeśli masz projekt Bazel lub chcesz używać operacji TF, lepiej użyj systemu kompilacji Bazel. Do utworzenia biblioteki współdzielonej ARM32/64 użyjesz zintegrowanych łańcuchów narzędzi ARM GCC 8.3 z Bazel.

Architektura docelowa Konfiguracja Bazel Zgodne urządzenia
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 z 32-bitowym systemem Raspberry Pi OS
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 z Ubuntu 64-bitowym

Poniższe instrukcje zostały przetestowane na 64-bitowym komputerze z systemem Ubuntu 16.04.3 (AMD64) i obrazie Dockera TensorFlow w wersji deweloperskiej tensorflow/tensorflow:devel.

Aby skompilować LiteRT w Bazelu, wykonaj te czynności:

Krok 1. Instalowanie narzędzia Bazel

Bazel to podstawowy system kompilacji TensorFlow. Zainstaluj najnowszą wersję systemu kompilacji Bazel.

Krok 2. Klonowanie repozytorium TensorFlow

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

Krok 3. Kompilowanie pliku binarnego ARM

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

Zasoby wspólne znajdziesz w:bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so

Szczegółowe informacje znajdziesz na stronie LiteRT C API.

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

Zasoby wspólne znajdziesz w:bazel-bin/tensorflow/lite/libtensorflowlite.so

Obecnie nie ma prostego sposobu na wyodrębnienie wszystkich potrzebnych plików nagłówkowych, więc musisz uwzględnić wszystkie pliki nagłówkowe w folderze tensorflow/lite/ z repozytorium TensorFlow. Dodatkowo będziesz potrzebować plików nagłówkowych z FlatBuffers i Abseil.

itd.

Za pomocą łańcucha narzędzi możesz też tworzyć inne cele Bazel. Oto kilka przydatnych celów.

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image