Bu sayfada çeşitli ARM cihazları için TensorFlow Lite kitaplığının nasıl oluşturulacağı açıklanmaktadır.
Aşağıdaki talimatlar Ubuntu 16.04.3 64 bit PC (AMD64), TensorFlow devel docker image tensorflow/tensorflow:devel üzerinde test edilmiştir.
Önkoşullar
CMake'in kurulu olması ve TensorFlow kaynak kodunun indirilmesi gerekir. Ayrıntılar için lütfen CMake ile TensorFlow Lite Oluşturma sayfasını kontrol edin.
Hedef ortamınızı kontrol edin
Aşağıdaki örnekler Raspberry Pi OS, Ubuntu Server 20.04 LTS ve Mendel Linux 4.0 altında test edilmiştir. Hedef glibc sürümünüze ve CPU yeteneklerinize bağlı olarak, farklı araç zinciri sürümünü ve derleme parametrelerini kullanmanız gerekebilir.
Glibc sürümü kontrol ediliyor
ldd --version
ldd (Debian GLIBC 2.28-10) 2.28 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper.
ABI uyumluluğunu kontrol etme
Hedefiniz ARM 32 bit ise VFP kullanılabilirliğine bağlı olarak iki ABI mevcuttur. armhf ve armel . Bu belge bir armhf örneği göstermektedir, armel hedefleri için farklı bir takım zinciri kullanmanız gerekir.
CPU kapasitesi kontrol ediliyor
ARMv7 için hedefin desteklenen VFP sürümünü ve NEON kullanılabilirliğini bilmelisiniz.
cat /proc/cpuinfo
processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3
AArch64 (ARM64) için derleme
Bu talimat , Coral Mendel Linux 4.0 , Raspberry Pi ( Ubuntu Server 20.04.01 LTS 64-bit yüklü) ile uyumlu AArch64 ikili dosyasının nasıl oluşturulacağını gösterir.
Araç zincirini indirin
Bu komutlar gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu
araç zincirini ${HOME}/toolchains altına yükler.
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz
mkdir -p ${HOME}/toolchains
tar xvf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C ${HOME}/toolchains
CMake'i çalıştırın
ARMCC_PREFIX=${HOME}/toolchains/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-
ARMCC_FLAGS="-funsafe-math-optimizations"
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
-DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
-DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
../tensorflow/lite/
ARMv7 NEON için derleme etkin
Bu talimat, Raspberry Pi 3 ve 4 ile uyumlu VFPv4 ve NEON özellikli ikili dosya ile ARMv7'nin nasıl oluşturulacağını gösterir.
Araç zincirini indirin
Bu komutlar gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
araç zincirini ${HOME}/toolchains altına yükler.
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
mkdir -p ${HOME}/toolchains
tar xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C ${HOME}/toolchains
CMake'i çalıştırın
ARMCC_FLAGS="-march=armv7-a -mfpu=neon-vfpv4 -funsafe-math-optimizations -mfp16-format=ieee"
ARMCC_PREFIX=${HOME}/toolchains/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
-DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
-DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=armv7 \
../tensorflow/lite/
Raspberry Pi Zero (ARMv6) için derleme
Bu talimat, Raspberry Pi Zero ile uyumlu ARMv6 ikili dosyasının nasıl oluşturulacağını gösterir.
Araç zincirini indirin
Bu komutlar gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
araç zincirini ${HOME}/toolchains altına yükler.
curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
mkdir -p ${HOME}/toolchains
tar xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C ${HOME}/toolchains
CMake'i çalıştırın
ARMCC_FLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard -funsafe-math-optimizations"
ARMCC_PREFIX=${HOME}/toolchains/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
-DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
-DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=armv6 \
-DTFLITE_ENABLE_XNNPACK=OFF \
../tensorflow/lite/