Kompilowanie pakietu koła zębatego Pythona TensorFlow Lite

Na tej stronie opisujemy, jak utworzyć bibliotekę Pythona tflite_runtime TensorFlow Lite dla procesorów x86_64 i różnych urządzeń ARM.

Poniższe instrukcje zostały przetestowane na 64-bitowym komputerze Ubuntu 16.04.3, macOS Catalina (x86_64) i Devel TensorFlow – obrazie Dockera tensorflow/tensorflow:devel.

Wymagania wstępne

Musisz mieć zainstalowany program CMake i kopię kodu źródłowego TensorFlow. Więcej informacji znajdziesz na stronie Tworzenie TensorFlow Lite za pomocą CMake.

Aby utworzyć pakiet PIP dla stacji roboczej, możesz uruchomić poniższe polecenia.

PYTHON=python3 tensorflow/lite/tools/pip_package/build_pip_package_with_cmake.sh native

Kompilacja krzyżowa ARM

W przypadku kompilacji krzyżowej ARM zalecamy użycie Dockera, ponieważ ułatwia on konfigurację środowiska kompilacji w wielu systemach. Aby określić architekturę docelową, potrzebujesz także opcji target.

W Makefile tensorflow/lite/tools/pip_package/Makefile dostępne jest narzędzie pomocnicze, które umożliwia wywołanie polecenia kompilacji przy użyciu wstępnie zdefiniowanego kontenera Dockera. Na hoście Dockera możesz uruchomić polecenie kompilacji w następujący sposób.

make -C tensorflow/lite/tools/pip_package docker-build \
  TENSORFLOW_TARGET=<target> PYTHON_VERSION=<python3 version>

Dostępne nazwy celów

Skrypt tensorflow/lite/tools/pip_package/build_pip_package_with_cmake.sh wymaga nazwy docelowej, aby określić architekturę docelową. Oto lista obsługiwanych celów.

Cel Architektura docelowa Komentarze
Armhf VFP ARMv7 z neonem Zgodny z Raspberry Pi 3 i 4
rpi0 ARMv6 Zgodny z Raspberry Pi Zero
aarch64 aarch64 (ARM 64-bitowa) Coral Mendel Linux 4.0
Raspberry Pi z Ubuntu Server 20.04.01 LTS 64-bitowym
natywna Twoja stacja robocza Wykorzystuje optymalizację „-mnative”
domyślnie Twoja stacja robocza Domyślna wartość docelowa

Przykłady kompilacji

Oto kilka przykładowych poleceń, których możesz użyć.

Cel armhf dla Pythona 3.7

make -C tensorflow/lite/tools/pip_package docker-build \
  TENSORFLOW_TARGET=armhf PYTHON_VERSION=3.7

element docelowy aarch64 dla Pythona 3.8

make -C tensorflow/lite/tools/pip_package docker-build \
  TENSORFLOW_TARGET=aarch64 PYTHON_VERSION=3.8

Jak używać niestandardowego łańcucha narzędzi?

Jeśli wygenerowane pliki binarne są niezgodne z Twoim miejscem docelowym, musisz użyć własnego łańcucha narzędzi lub udostępnić niestandardowe flagi kompilacji. (kliknij to, aby poznać środowisko docelowe). W takim przypadku musisz zmodyfikować tensorflow/lite/tools/cmake/download_toolchains.sh, aby użyć własnego łańcucha narzędzi. Skrypt pęku narzędzi definiuje te 2 zmienne dla skryptu build_pip_package_with_cmake.sh.

Zmienna Purpose przykład
ARMCC_PREFIX definiuje prefiks łańcucha narzędzi arm-linux-gnueabihf-
ARMCC_FLAGS flagi kompilacji -march=armv7-a -mfpu=neon-vfpv4