本頁面說明如何為各種 ARM 裝置建構 TensorFlow Lite 程式庫。
下列操作說明已在 Ubuntu 16.04.3 64 位元 PC (AMD64)、TensorFlow devel docker 映像檔 tensorflow/tensorflow:devel 上經過測試。
必要條件
您需要安裝及下載 TensorFlow 原始碼,詳情請參閱「使用 CMake 建構 TensorFlow Lite」頁面。
檢查目標環境
以下範例是在 Raspberry Pi OS、Ubuntu Server 20.04 LTS 和 Mendel Linux 4.0 下測試。視您的目標 glibc 版本和 CPU 功能而定,您可能需要使用不同版本的工具鍊和建構參數。
正在檢查 glibc 版本
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 相容性
如果您的目標是 ARM 32 位元,則視 VFP 可用性而定,有兩種 ABI 可供使用。armhf 和 armel。本文件顯示一個 armhf 範例,您針對 armel 目標使用不同的工具鍊。
檢查 CPU 功能
如果是 ARMv7,應知道目標支援的 VFP 版本和 NEON 可用性。
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) 所建構
本操作說明會說明如何建構 AArch64 二進位檔,該二進位檔與 Coral Mendel Linux 4.0、Raspberry Pi (已安裝 Ubuntu Server 20.04.01 LTS 64 位元) 相容。
下載工具鍊
這些指令會在 ${HOME}/toolchains 下安裝 gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu
工具鍊。
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
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 的建構作業
本操作說明說明如何使用支援 VFPv4 和 NEON 的二進位檔建構 ARMv7,該二進位檔與 Raspberry Pi 3 和 4 相容。
下載工具鍊
這些指令會在 ${HOME}/toolchains 下安裝 gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
工具鍊。
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
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)
本操作說明說明如何建構與 Raaspberry Pi Zero 相容的 ARMv6 二進位檔。
下載工具鍊
這些指令會在 ${HOME}/toolchains 下安裝 gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
工具鍊。
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
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/