CMake के साथ क्रॉस संकलन TensorFlow Lite

यह पृष्ठ वर्णन करता है कि विभिन्न ARM उपकरणों के लिए TensorFlow Lite लाइब्रेरी कैसे बनाई जाए।

निम्नलिखित निर्देशों का परीक्षण उबंटू 16.04.3 64-बिट पीसी (एएमडी64), टेन्सरफ्लो डेवेल डॉकर इमेज टेन्सरफ्लो/टेन्सरफ्लो:डेवेल पर किया गया है।

आवश्यक शर्तें

आपको CMake इंस्टॉल और TensorFlow सोर्स कोड डाउनलोड करना होगा। कृपया विवरण के लिए बिल्ड टेन्सरफ्लो लाइट विद सीएमके पेज देखें।

अपने लक्षित परिवेश की जाँच करें

निम्नलिखित उदाहरण रास्पबेरी पाई ओएस, उबंटू सर्वर 20.04 एलटीएस और मेंडल लिनक्स 4.0 के तहत परीक्षण किए गए हैं। आपके लक्ष्य ग्लिबैक संस्करण और सीपीयू क्षमताओं के आधार पर, आपको टूलचेन और बिल्ड पैरामीटर के विभिन्न संस्करण का उपयोग करने की आवश्यकता हो सकती है।

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.

एबीआई संगतता की जाँच करना

यदि आपका लक्ष्य एआरएम 32-बिट है, तो वीएफपी उपलब्धता के आधार पर दो एबीआई उपलब्ध हैं। आर्मएचएफ और आर्मेल । यह दस्तावेज़ एक आर्मएचएफ उदाहरण दिखाता है, आपको आर्मल लक्ष्यों के लिए विभिन्न टूलचेन का उपयोग करने की आवश्यकता है।

सीपीयू क्षमता की जाँच करना

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 बाइनरी कैसे बनाई जाए जो कोरल मेंडल लिनक्स 4.0 , रास्पबेरी पाई ( उबंटू सर्वर 20.04.01 एलटीएस 64-बिट स्थापित के साथ) के साथ संगत है।

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

ये कमांड ${HOME}/टूलचेन के अंतर्गत 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

सीएमके चलाएँ

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 के लिए निर्माण सक्षम

यह निर्देश दिखाता है कि VFPv4 और NEON सक्षम बाइनरी के साथ ARMv7 कैसे बनाया जाए जो रास्पबेरी पाई 3 और 4 के साथ संगत है।

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

ये कमांड ${HOME}/टूलचेन के अंतर्गत gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf टूलचेन इंस्टॉल करते हैं।

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/

रास्पबेरी पाई ज़ीरो (ARMv6) के लिए निर्माण

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

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

ये कमांड ${HOME}/टूलचेन के अंतर्गत gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf टूलचेन इंस्टॉल करते हैं।

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/