Kompilowanie TensorFlow Lite dla płyt ARM

Na tej stronie dowiesz się, jak tworzyć biblioteki TensorFlow Lite dla komputerów z procesorami ARM.

TensorFlow Lite obsługuje 2 systemy kompilacji, a obsługiwane funkcje z każdego z nich nie są identyczne. Z poniższej tabeli dowiesz się, jak wybrać odpowiedni system kompilacji.

Funkcja Bazel CMake
Wstępnie zdefiniowane łańcuchy narzędzi Armhf, Aarch64 Armel, Armhf, aarch64
Niestandardowe łańcuchy narzędzi trudniejsze w użyciu. łatwa w użyciu
Wybierz operacje TF obsługiwana not supported
Przedstawiciel ds. procesora graficznego dostępne tylko na Androidzie dowolna platforma obsługująca OpenCL.
XNNPack obsługiwana obsługiwana
Koło Pythona obsługiwana obsługiwana
C API obsługiwana obsługiwane
Interfejs API C++ obsługiwane w przypadku projektów Bazel obsługiwane w projektach CMake

Kompilacja krzyżowa platformy ARM z CMake

Jeśli masz projekt CMake lub chcesz użyć niestandardowego łańcucha narzędzi, do kompilacji krzyżowej lepiej użyć CMake. Dostępna jest oddzielna strona do kompilacji krzyżowej TensorFlow Lite z CMake.

Kompilacja krzyżowa na architekturze ARM za pomocą bazy danych

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

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

Podane niżej instrukcje zostały przetestowane na 64-bitowym komputerze Ubuntu 16.04.3 (AMD64) i w deweloperskim obrazie Dockera TensorFlow tensorflow/tensorflow:devel.

Aby skompilować TensorFlow Lite w Bazel, wykonaj te czynności:

Krok 1. Zainstaluj aplikację Bazel

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

Krok 2. Klonowanie repozytorium TensorFlow

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

Krok 3. Kompilacja pliku binarnego ARM

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

Udostępniane zasoby znajdziesz tutaj: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Więcej informacji znajdziesz na stronie TensorFlow Lite C API.

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

Udostępniane zasoby znajdziesz tutaj: bazel-bin/tensorflow/lite/libtensorflowlite.so.

Obecnie nie ma prostego sposobu na wyodrębnienie wszystkich potrzebnych plików nagłówka, dlatego wszystkie pliki nagłówka należy uwzględnić w Tensorflow/lite/ z repozytorium TensorFlow. Dodatkowo potrzebne są pliki nagłówka z FlatBuffers i Abseil.

itd.

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

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