หน้านี้อธิบายวิธีสร้างไลบรารี TensorFlow Lite สำหรับอุปกรณ์ ARM ต่างๆ
คำแนะนำต่อไปนี้ได้รับการทดสอบบน Ubuntu 16.04.3 64-bit PC (AMD64) , TensorFlow devel docker image tensorflow/tensorflow:devel
ข้อกำหนดเบื้องต้น
คุณต้องติดตั้ง CMake และดาวน์โหลดซอร์สโค้ด TensorFlow โปรดตรวจสอบหน้า Build TensorFlow Lite ด้วย CMake เพื่อดูรายละเอียด
ตรวจสอบสภาพแวดล้อมเป้าหมายของคุณ
ตัวอย่างต่อไปนี้ได้รับการทดสอบภายใต้ Raspberry Pi OS, Ubuntu Server 20.04 LTS และ Mendel Linux 4.0 ขึ้นอยู่กับเวอร์ชัน glibc เป้าหมายและความสามารถของ CPU คุณอาจต้องใช้เวอร์ชันของ toolchain และ build พารามิเตอร์ที่แตกต่างกัน
กำลังตรวจสอบเวอร์ชัน 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 บิต จะมี ABI สองตัวที่พร้อมใช้งาน ขึ้นอยู่กับความพร้อมใช้งานของ VFP armhf และ armel เอกสารนี้แสดงตัวอย่าง armhf คุณต้องใช้ toolchain ที่แตกต่างกันสำหรับเป้าหมาย 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 บิต )
ดาวน์โหลด toolchain
คำสั่งเหล่านี้ติดตั้ง gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu
toolchain ภายใต้ ${HOME}/toolchains
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 ที่เปิดใช้งาน
คำแนะนำนี้แสดงวิธีการสร้าง ARMv7 ด้วยไบนารีที่เปิดใช้งาน VFPv4 และ NEON ซึ่งเข้ากันได้กับ Raspberry Pi 3 และ 4
ดาวน์โหลด toolchain
คำสั่งเหล่านี้ติดตั้ง gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
toolchain ภายใต้ ${HOME}/toolchains
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)
คำแนะนำนี้แสดงวิธีการสร้างไบนารี ARMv6 ซึ่งเข้ากันได้กับ Raspberry Pi Zero
ดาวน์โหลด toolchain
คำสั่งเหล่านี้ติดตั้ง gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
toolchain ภายใต้ ${HOME}/toolchains
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/