Tworzenie LiteRT dla płyt ARM

Na tej stronie dowiesz się, jak tworzyć biblioteki LiteRT dla systemów ARM z komputerów.

LiteRT obsługuje 2 systemy kompilacji i obsługiwane funkcje nie są identyczne. Aby wybrać odpowiednią kompilację, skorzystaj z tej tabeli systemu.

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 GPU dostępne tylko na Androida dowolna platforma obsługująca OpenCL
XNNPack obsługiwana obsługiwana
Koło Python obsługiwana obsługiwana
C API obsługiwana obsługiwane
Interfejs API C++ obsługiwane w projektach Bazel obsługiwane w projektach CMake

Kompilacja danych dla architektur ARM i CMake

Jeśli masz projekt CMake lub chcesz użyć niestandardowego łańcucha narzędzi, lepiej korzystać z CMake do kompilacji krzyżowej. Dostępny jest osobny Kompilacja krzyżowa LiteRT z CMake strony, która to umożliwia.

Kompilacja danych dla architektur ARM z Badel

Jeśli masz projekt Bazel lub chcesz korzystać z operacji TF, lepiej jest używać systemu kompilacji. Użycie zintegrowanego narzędzia Łańcuchy narzędzi ARM GCC 8.3 za pomocą Bazel, aby utworzyć bibliotekę współdzieloną ARM32/64.

Architektura docelowa Konfiguracja w Bazelu Zgodne urządzenia
Armhf (ARM32) --config=elinux_armhf RPI3, RPI4 z 32-bitowym System operacyjny Malinowy Pi
AArch64 (ARM64) --config=elinux_aarch64 Koralowy, RPI4 z Ubuntu 64 wiertło

Poniższe instrukcje zostały przetestowane w systemie Ubuntu 16.04.3 64-bitowego komputera (AMD64) i obraz Devel w TensorFlow tensorflow/tensorflow:devel.

Aby skompilować krzyżowo LiteRT z Bazel, wykonaj te czynności:

Krok 1. Zainstaluj Bazel

Podstawowym systemem kompilacji dla TensorFlow jest Bazel. Zainstaluj najnowszą wersję aplikacji system kompilacji Bazel.

Krok 2. Klonowanie repozytorium TensorFlow

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

Krok 3. Utwórz plik binarny ARM

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

Zasoby wspólne możesz znaleźć w tych miejscach: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so

Sprawdź Interfejs API LiteRT C aby wyświetlić szczegóły.

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

Zasoby wspólne możesz znaleźć w tych miejscach: bazel-bin/tensorflow/lite/libtensorflowlite.so

Obecnie nie ma prostego sposobu wyodrębniania wszystkich potrzebnych plików nagłówka, musisz więc uwzględnić wszystkie pliki nagłówków w Tensorflow/lite/ z biblioteki TensorFlow z repozytorium. Potrzebne będą też pliki nagłówka z platformy FlatBuffers Abseil.

itd.

Możesz też za pomocą łańcucha narzędzi tworzyć inne cele w Bazelu. Oto kilka przydatnych celów.

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