इस पेज में बताया गया है कि LiteRT लाइब्रेरी को कैसे बनाया और इस्तेमाल किया जाए CMake टूल.
निम्नलिखित निर्देशों का Ubuntu 16.04.3 64-बिट पीसी (AMD64) पर परीक्षण किया गया है , macOS Catalina (x86_64), Windows 10, और TensorFlow devel Docker इमेज tensorflow/tensorflow:devel.
पहला चरण. CMake टूल इंस्टॉल करें
इसके लिए CMake 3.16 या बाद वाला वर्शन चाहिए. Ubuntu पर, आप नीचे दिए गए काम कर सकते हैं आदेश.
sudo apt-get install cmake
या फ़ॉलो किया जा सकता है सीमेक इंस्टॉलेशन की आधिकारिक गाइड
दूसरा चरण. TensorFlow का क्लोन रिपॉज़िटरी
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
तीसरा चरण. CMake की बिल्ड डायरेक्ट्री बनाएं
mkdir tflite_build
cd tflite_build
चरण 4. कॉन्फ़िगरेशन के साथ CMake टूल चलाएं
बिल्ड रिलीज़ करें
यह डिफ़ॉल्ट रूप से, ऑप्टिमाइज़ की गई रिलीज़ बाइनरी जनरेट करता है. अगर आपको डिजिटल विज्ञापन से अपने वर्कस्टेशन पर, बस नीचे दिया गया निर्देश चलाएं.
cmake ../tensorflow_src/tensorflow/lite
बिल्ड डीबग करें
अगर आपको सिंबल की जानकारी वाला डीबग बिल्ड बनाना है, तो
-DCMAKE_BUILD_TYPE=Debug
विकल्प दें.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
कर्नेल यूनिट टेस्ट की मदद से बनाएं
कर्नेल टेस्ट चलाने के लिए, आपको
-DTFLITE_KERNEL_TEST=on
फ़्लैग. यूनिट टेस्ट के क्रॉस-कंपाइलेशन की खास बातें
अगले सब-सेक्शन में मिलेगा.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
इंस्टॉल किया जा सकने वाला पैकेज बनाएं
इंस्टॉल किया जा सकने वाला ऐसा पैकेज बनाना जिसे किसी दूसरे डिवाइस की डिपेंडेंसी के तौर पर इस्तेमाल किया जा सके
find_package(tensorflow-lite CONFIG)
के साथ प्रोजेक्ट बनाएं, इसके लिए
-DTFLITE_ENABLE_INSTALL=ON
विकल्प.
आपको लाइब्रेरी डिपेंडेंसी के अपने वर्शन भी देने चाहिए.
LiteRT पर निर्भर प्रोजेक्ट में भी इनका इस्तेमाल करना होगा. आप
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
का इस्तेमाल करें और <PackageName>_DIR
को सेट करें
वैरिएबल का इस्तेमाल करें.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_INSTALL=ON \
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON \
-DSYSTEM_FARMHASH=ON \
-DSYSTEM_PTHREADPOOL=ON \
-Dabsl_DIR=<install path>/lib/cmake/absl \
-DEigen3_DIR=<install path>/share/eigen3/cmake \
-DFlatBuffers_DIR=<install path>/lib/cmake/flatbuffers \
-Dgemmlowp_DIR=<install path>/lib/cmake/gemmlowp \
-DNEON_2_SSE_DIR=<install path>/lib/cmake/NEON_2_SSE \
-Dcpuinfo_DIR=<install path>/share/cpuinfo \
-Druy_DIR=<install path>/lib/cmake/ruy
क्रॉस-कंपाइलेशन
CMake की मदद से ARM64 या Android टारगेट आर्किटेक्चर के लिए बाइनरी बनाए जा सकते हैं.
LiteRT को क्रॉस-कंपाइल करने के लिए, आपको
-DCMAKE_TOOLCHAIN_FILE
के साथ SDK टूल (उदाहरण के लिए, Android के मामले में ARM64 SDK या NDK)
फ़्लैग करें.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Android क्रॉस-कंपाइलेशन की खास बातें
Android क्रॉस-कंपाइलेशन के लिए, आपको
Android NDK और उसके साथ NDK पाथ उपलब्ध कराएं
-DCMAKE_TOOLCHAIN_FILE
फ़्लैग ऊपर बताया गया है. आपको टारगेट एबीआई भी सेट करना होगा
-DANDROID_ABI
फ़्लैग के साथ.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
कर्नेल (इकाई) क्रॉस-कंपाइलेशन परीक्षणों की विशेषताएं
यूनिट टेस्ट के क्रॉस-कंपाइलेशन के लिए, होस्ट के लिएflac कंपाइलर की ज़रूरत होती है
आर्किटेक्चर. इस काम के लिए, CMakeLists में CMakeLists मौजूद है,
फ़्लैट बनाने के लिए tensorflow/lite/tools/cmake/native_tools/flatbuffers
होस्ट का इस्तेमाल करके पहले से एक अलग बिल्ड डायरेक्ट्री में CMake के साथ कंपाइलर
टूलचेन.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
फ़्लैट को कस्टम इंस्टॉलेशन लोकेशन पर इंस्टॉल किया जा सकता है (जैसे, ऐसी डायरेक्ट्री में जिसमें CMake की जगह दूसरी मूल रूप से बनाए गए टूल मौजूद हों बिल्ड डायरेक्ट्री):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
LiteRT क्रॉस-कंपाइलेशन के लिए, अतिरिक्त पैरामीटर
-DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
उस डायरेक्ट्री के बारे में बताता है जिसमें शामिल है
नेटिव flatc बाइनरी के साथ
-DTFLITE_KERNEL_TEST=on
फ़्लैग ऊपर बताया गया है.
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
टारगेट पर क्रॉस-कंपाइल्ड कर्नेल (यूनिट) टेस्ट लॉन्च किए गए
यूनिट टेस्ट को अलग-अलग एक्ज़ीक्यूटेबल के रूप में या CTest उपयोगिता का इस्तेमाल करके चलाया जा सकता है. अभी तक
क्योंकि CTest का संबंध है, अगर कम से कम एक पैरामीटर
TFLITE_ENABLE_XNNPACKor
TFLITE_EXTERNAL_DELEGATE`, LiteRT के लिए चालू है
बिल्ड के लिए इस्तेमाल किया जाता है, जिससे नतीजे दो अलग-अलग लेबल के साथ जनरेट होते हैं
(जिन टेस्ट के लिए एक्ज़ीक्यूट किया जा सकता है उनका इस्तेमाल करना): - सादा - इससे, उन टेस्ट की जानकारी मिलती है जिन पर टेस्ट किए जा रहे हैं
सीपीयू बैकएंड - डेलीगेट - यह उन टेस्ट के बारे में बताता है जिन्हें अतिरिक्त लॉन्च के लिए जाना जाता है
इस्तेमाल किए गए डेलिगेट स्पेसिफ़िकेशन के लिए इस्तेमाल किए गए आर्ग्युमेंट
CTestTestfile.cmake
और run-tests.cmake
(जैसा कि नीचे बताया गया है) दोनों
<build_dir>/kernels
में उपलब्ध है.
सीपीयू बैकएंड के साथ यूनिट टेस्ट लॉन्च करना (बशर्ते CTestTestfile.cmake
हो
मौजूदा डायरेक्ट्री में टारगेट पर मौजूद है):
ctest -L plain
डेलिगेट के वोटों का इस्तेमाल करके यूनिट टेस्ट करने के उदाहरण (अगर
इसमें CTestTestfile.cmake
और run-tests.cmake
फ़ाइल टारगेट पर मौजूद हैं
मौजूदा डायरेक्ट्री से जुड़ा हो):
cmake -E env TESTS_ARGUMENTS=--use_xnnpack=true ctest -L delegate
cmake -E env TESTS_ARGUMENTS=--external_delegate_path=<PATH> ctest -L delegate
अतिरिक्त प्रतिनिधि से जुड़ी जानकारी देने के इस तरीके की पहले से मालूम सीमा यूनिट परीक्षणों में लॉंंच आर्ग्युमेंट के साथ-साथ वह 0 अनुमानित रिटर्न वैल्यू हो. रिटर्न की अलग-अलग वैल्यू इस तौर पर रिपोर्ट की जाएंगी टेस्ट फ़ेलियर.
OpenCL जीपीयू डेलिगेट
अगर आपकी टारगेट मशीन पर OpenCL काम करता है, तो GPU प्रतिनिधि जो ये काम कर सकते हैं: अपने जीपीयू का फ़ायदा पाएं.
OpenCL जीपीयू डेलिगेट सपोर्ट को कॉन्फ़िगर करने के लिए:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
पांचवां चरण. LiteRT बनाएं
tflite_build
डायरेक्ट्री में,
cmake --build . -j
छठा चरण. बिल्ड LiteRT बेंचमार्क टूल और लेबल इमेज का उदाहरण (ज़रूरी नहीं)
tflite_build
डायरेक्ट्री में,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
LiteRT बनाने के लिए उपलब्ध विकल्प
यहां उपलब्ध विकल्पों की सूची दी गई है. आप इसे इससे ओवरराइड कर सकते हैं:
-D<option_name>=[ON|OFF]
. उदाहरण के लिए, -DTFLITE_ENABLE_XNNPACK=OFF
से
XNNPACK को बंद करना जो डिफ़ॉल्ट रूप से चालू रहता है.
विकल्प का नाम | सुविधा | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
RUY को चालू करें मैट्रिक्स गुणा लाइब्रेरी | चालू है | बंद है | बंद है | बंद है |
TFLITE_ENABLE_GPU
|
जीपीयू चालू करें प्रतिनिधि | बंद है | बंद है | लागू नहीं | लागू नहीं |
TFLITE_ENABLE_XNNPACK
|
XNNPACK सक्षम करें प्रतिनिधि | चालू है | चालू है | चालू है | चालू है |
TFLITE_ENABLE_MMAP |
MMAP को चालू करें | चालू है | चालू है | चालू है | लागू नहीं |
LiteRT का इस्तेमाल करने वाला CMake प्रोजेक्ट बनाएं
यह रही इसका CMakeLists.txt TFLite कम से कम उदाहरण.
LiteRT डायरेक्ट्री और लिंक के लिए, add_subdirectory() लेना ज़रूरी है
target_link_libraries() के साथ tensorflow-lite
.
cmake_minimum_required(VERSION 3.16)
project(minimal C CXX)
set(TENSORFLOW_SOURCE_DIR "" CACHE PATH
"Directory that contains the TensorFlow project" )
if(NOT TENSORFLOW_SOURCE_DIR)
get_filename_component(TENSORFLOW_SOURCE_DIR
"${CMAKE_CURRENT_LIST_DIR}/../../../../" ABSOLUTE)
endif()
add_subdirectory(
"${TENSORFLOW_SOURCE_DIR}/tensorflow/lite"
"${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)
add_executable(minimal minimal.cc)
target_link_libraries(minimal tensorflow-lite)
LiteRT C लाइब्रेरी बनाएं
अगर आपको LiteRT के लिए शेयर की गई लाइब्रेरी बनानी है, तो C API, इसके लिए, पहले चरण को फ़ॉलो करें चरण 3 पहले. इसके बाद, कमांड का इस्तेमाल किया जा सकता है.
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
यह निर्देश मौजूदा डायरेक्ट्री में शेयर की गई इस लाइब्रेरी को जनरेट करता है.
प्लैटफ़ॉर्म | लाइब्रेरी का नाम |
---|---|
Linux | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
Windows | tensorflowlite_c.dll |