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