Cmake के साथ, TensorFlow Lite के क्रॉस कंपाइलेशन

इस पेज पर अलग-अलग ARM डिवाइसों के लिए, TensorFlow Lite लाइब्रेरी बनाने का तरीका बताया गया है.

नीचे दिए गए निर्देशों की जांच, Ubuntu 16.04.3 64-बिट पीसी (AMD64) , TensorFlow devel Docker इमेज tensorflow/tensorflow:devel पर की गई है.

ज़रूरी शर्तें

इसके लिए, आपके पास TensorFlow का सोर्स कोड इंस्टॉल और डाउनलोड करने का विकल्प होता है. ज़्यादा जानकारी के लिए, कृपया C Make की मदद से TensorFlow Lite बनाएं पेज देखें.

अपने टारगेट एनवायरमेंट की जांच करना

नीचे दिए गए उदाहरणों की जांच Raspबेरी Pi OS, Ubuntu Server 20.04 LTS, और Mendel Linux 4.0 में किया जाता है. आपके टारगेट glibc वर्शन और सीपीयू की क्षमताओं के आधार पर, आपको टूलचेन के अलग-अलग वर्शन और बिल्ड पैरामीटर का इस्तेमाल करना पड़ सकता है.

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.

एबीआई के साथ काम करने की सुविधा की जांच करना

अगर आपका टारगेट ARM 32-बिट है, तो VFP की उपलब्धता के आधार पर दो एबीआई उपलब्ध हैं. ar #{ और armel. इस दस्तावेज़ में ar Services का एक उदाहरण दिया गया है. आपको आर्मल टारगेट के लिए अलग-अलग टूलचेन का इस्तेमाल करना होगा.

सीपीयू की क्षमता की जांच की जा रही है

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 बाइनरी बनाने का तरीका बताया गया है जो कोरल मेंडल Linux 4.0 और Raspबेरी Pi (जिस पर Ubuntu Server 20.04.01 एलटीएस 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 के लिए बिल्ड चालू किया गया

इस निर्देश में ARMv7 को बनाने का तरीका बताया गया है. इसमें VFPv4 और NEON की सुविधा वाली बाइनरी बनाने का तरीका बताया गया है जो Raspबेरी Pi 3 और 4 के साथ काम करता है.

टूलचेन डाउनलोड करें

इन निर्देशों के तहत, ${HOME}/toolchains से कम में gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf toolchain इंस्टॉल किया जाता है.

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/

रैज़बेरी पाई ज़ीरो के लिए बिल्ड (ARMv6)

इस निर्देश में ARMv6 बाइनरी बनाने का तरीका बताया गया है, जो रैज़बेरी पाई ज़ीरो के साथ काम कर सके.

टूलचेन डाउनलोड करें

इन निर्देशों के तहत, ${HOME}/toolchains से कम में gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf toolchain इंस्टॉल किया जाता है.

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/