توضح هذه الصفحة كيفية إنشاء مكتبة TensorFlow Lite لمختلف أجهزة ARM.
تم اختبار الإرشادات التالية على Ubuntu 16.04.3 PC 64 بت (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)، قد تحتاج إلى استخدام إصدار مختلف من سلسلة الأدوات وبناء المعلمات.
التحقق من إصدار 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.
التحقق من قدرة وحدة المعالجة المركزية
بالنسبة إلى 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 بت ).
تحميل سلسلة الأدوات
تقوم هذه الأوامر بتثبيت 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
قم بتشغيل كميك
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.
تحميل سلسلة الأدوات
تقوم هذه الأوامر بتثبيت 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
قم بتشغيل كميك
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
قم بتشغيل كميك
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/