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