עמוד זה מתאר כיצד לבנות את ספריית TensorFlow Lite עבור התקני ARM שונים.
ההוראות הבאות נבדקו על אובונטו 16.04.3 64-bit PC (AMD64) , TensorFlow devel docker image tensorflow/tensorflow:devel .
דרישות מוקדמות
אתה צריך את קוד המקור של TensorFlow מותקן והורדת CMake. אנא עיין בדף Build TensorFlow Lite עם CMake לפרטים.
בדוק את סביבת היעד שלך
הדוגמאות הבאות נבדקות תחת Raspberry Pi OS, Ubuntu Server 20.04 LTS ומנדל 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-bit, ישנם שני ABI זמינים בהתאם לזמינות ה-VFP. armhf ו ארמל . מסמך זה מציג דוגמה של armhf, עליך להשתמש בשרשרת כלים שונה עבור מטרות ארמל.
בדיקת יכולת מעבד
עבור 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 20.04.01 LTS 64-bit מותקן).
הורד את שרשרת הכלים
פקודות אלו מתקינות את 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/
Build עבור ARMv7 NEON מופעל
הוראה זו מראה כיצד לבנות ARMv7 עם VFPv4 ו-NEON בינארי התואם ל-Raspberry Pi 3 ו-4.
הורד את שרשרת הכלים
פקודות אלה מתקינות את 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.
הורד את שרשרת הכלים
פקודות אלה מתקינות את 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/