C++ लाइब्रेरी को समझना

The LiteRT for Microcontrollers C++ लाइब्रेरी TensorFlow रिपॉज़िटरी. इसे पढ़ने लायक, बदलाव करने में आसान, अच्छी तरह से टेस्ट किया गया, इंटिग्रेट करने में आसान, और सामान्य LiteRT के साथ काम करता है.

इस दस्तावेज़ में, C++ लाइब्रेरी का बेसिक स्ट्रक्चर बताया गया है और से अपना प्रोजेक्ट बनाने के बारे में जानकारी मिलती है.

फ़ाइल का स्ट्रक्चर

कॉन्टेंट बनाने micro रूट डायरेक्ट्री का स्ट्रक्चर सामान्य है. हालांकि, चूंकि यह TensorFlow की काफ़ी बड़ी रिपॉज़िटरी में, हमने स्क्रिप्ट बनाई हैं और पहले से जनरेट की गई ऐसी प्रोजेक्ट फ़ाइलें जो काम की सोर्स फ़ाइलों को अलग से उपलब्ध कराती हैं जिसमें अलग-अलग तरह के डेवलपमेंट एनवायरमेंट मौजूद हों.

मुख्य फ़ाइलें

माइक्रोकंट्रोलर्स के लिए LiteRT का इस्तेमाल करने से जुड़ी सबसे ज़रूरी फ़ाइलें अनुवादक, प्रोजेक्ट के रूट में मौजूद होते हैं. साथ ही, उनकी जांच भी की जाती है:

[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.
  • micro_error_reporter.h डीबग की जानकारी देता है.
  • micro_interpreter.h में मॉडल को हैंडल करने और चलाने के लिए कोड होता है.

माइक्रोकंट्रोलर का इस्तेमाल शुरू करना इस्तेमाल के बारे में सिलसिलेवार तरीके से निर्देश पाएं.

बिल्ड सिस्टम, प्लैटफ़ॉर्म के हिसाब से कुछ सुविधाएं लागू करता है फ़ाइलें शामिल हैं. ये प्लैटफ़ॉर्म के नाम वाली डायरेक्ट्री में मौजूद होते हैं, उदाहरण के लिए cortex-m.

इनके साथ ही कई अन्य डायरेक्ट्री भी मौजूद हैं:

  • kernel, जिसमें ऑपरेशन लागू करना और उससे जुड़ा कोड शामिल होता है.
  • tools, इसमें बिल्ड टूल और उनके आउटपुट मौजूद होते हैं.
  • examples, इसमें सैंपल कोड होता है.

नया प्रोजेक्ट शुरू करें

हमारा सुझाव है कि नए प्रोजेक्ट के लिए, टेंप्लेट के तौर पर Hey World के उदाहरण का इस्तेमाल करें. आपने लोगों तक पहुंचाया मुफ़्त में का इस्तेमाल करके उसका वर्शन अपनी पसंद के प्लैटफ़ॉर्म पर पा सकते हैं. इसके लिए, निर्देश पढ़ें.

Arduino लाइब्रेरी का इस्तेमाल करना

अगर आप Arduino का इस्तेमाल कर रहे हैं, तो hello World का उदाहरण इसमें शामिल होता है Arduino_TensorFlowLite Arduino लाइब्रेरी को मैन्युअल तरीके से इंस्टॉल किया जा सकता है Arduino IDE और Arduino Create में.

लाइब्रेरी जोड़ने के बाद, File -> Examples पर जाएं. आपको TensorFlowLite:hello_world नाम वाली सूची के निचले हिस्से के पास दिया गया उदाहरण. चुनें इसे और उदाहरण को लोड करने के लिए hello_world पर क्लिक करें. इसके बाद, उस दस्तावेज़ की कॉपी सेव की जा सकती है उदाहरण के लिए, और इसका इस्तेमाल अपने प्रोजेक्ट के आधार के तौर पर करें.

अन्य प्लैटफ़ॉर्म के लिए प्रोजेक्ट जनरेट करें

माइक्रोकंट्रोलर्स के लिए LiteRT, स्टैंडअलोन प्रोजेक्ट जनरेट करने की सुविधा देता है जिनमें Makefile का इस्तेमाल करके, सभी ज़रूरी सोर्स फ़ाइलें शामिल हों. मौजूदा इन एनवायरमेंट में Keil, Make, और Mbed ऐप्लिकेशन इस्तेमाल किए जा सकते हैं.

Make की मदद से इन प्रोजेक्ट को जनरेट करने के लिए, ऐप्लिकेशन का क्लोन बनाएं TensorFlow/tflite-micro रिपॉज़िटरी और इन कमांड को चलाएं:

make -f tensorflow/lite/micro/tools/make/Makefile generate_projects

इसमें कुछ मिनट लगेंगे, क्योंकि इसे डिपेंडेंसी. इसके पूरा होने के बाद, आपको बनाए गए कुछ फ़ोल्डर दिखेंगे gen/linux_x86_64/prj/ जैसे पाथ में ( सटीक पाथ, आपके होस्ट के ऑपरेटिंग सिस्टम पर निर्भर करता है). इन फ़ोल्डर में जनरेट की गई प्रोजेक्ट और सोर्स फ़ाइलें शामिल हैं.

कमांड चलाने के बाद, आपको hello World के प्रोजेक्ट यहां दिखेंगे gen/linux_x86_64/prj/hello_world. इसके लिए उदाहरण के लिए, hello_world/keil में Keil प्रोजेक्ट होगा.

टेस्ट करना

लाइब्रेरी बनाने और इसके सभी यूनिट टेस्ट चलाने के लिए, नीचे दिए गए कमांड का इस्तेमाल करें:

make -f tensorflow/lite/micro/tools/make/Makefile test

व्यक्तिगत जांच चलाने के लिए, <test_name> को बदलकर नीचे दिए गए निर्देश का इस्तेमाल करें टेस्ट का नाम:

make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>

प्रोजेक्ट के मेकफ़ाइल में, आपको जांच के नाम मिल सकते हैं. उदाहरण के लिए, examples/hello_world/Makefile.inc, नमस्ते दुनिया का उदाहरण.

बाइनरी बनाएं

किसी दिए गए प्रोजेक्ट के लिए, चलाई जा सकने वाली बाइनरी बनाने के लिए (जैसे कि किसी ऐप्लिकेशन के लिए), <project_name> को अपनी पसंद के प्रोजेक्ट से बदलकर, नीचे दिए गए निर्देश का इस्तेमाल करें इसे बनाने के लिए:

make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin

उदाहरण के लिए, नीचे दिया गया कमांड Hey World के लिए एक बाइनरी बनाएगा ऐप्लिकेशन:

make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin

डिफ़ॉल्ट रूप से, होस्ट के ऑपरेटिंग सिस्टम के लिए प्रोजेक्ट को कंपाइल किया जाएगा. यहां की यात्रा पर हूं कोई दूसरा टारगेट आर्किटेक्चर तय करें, TARGET= और TARGET_ARCH= का इस्तेमाल करें. कॉन्टेंट बनाने नीचे दिए गए उदाहरण में, सामान्य के लिए Hey World का उदाहरण बनाने का तरीका बताया गया है Cortex-m0:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin

टारगेट तय होने पर, टारगेट से जुड़ी सभी उपलब्ध सोर्स फ़ाइलें मूल कोड की जगह पर इस्तेमाल किया जा सकता है. उदाहरण के लिए, सबडायरेक्ट्री examples/hello_world/cortex_m_generic में SparkFun Edge इस्तेमाल करने की सुविधा शामिल है constants.cc और output_handler.cc फ़ाइलों का है, जिनका उपयोग तब किया जाएगा जब लक्ष्य cortex_m_generic बताया गया है.

प्रोजेक्ट के मेकफ़ाइल में, प्रोजेक्ट के नाम देखे जा सकते हैं. उदाहरण के लिए, examples/hello_world/Makefile.inc, नमस्ते के लिए बाइनरी नाम बताता है दुनिया का उदाहरण.

ऑप्टिमाइज़ किए गए कर्नेल

tensorflow/lite/micro/kernels के रूट में रेफ़रंस कर्नेल ये हैं पूरी तरह C/C++ में लागू किया गया हो, और प्लैटफ़ॉर्म के हिसाब से हार्डवेयर शामिल नहीं किया गया हो ऑप्टिमाइज़ेशन.

कर्नेल के ऑप्टिमाइज़ किए गए वर्शन सबडायरेक्ट्री में दिए जाते हैं. उदाहरण के लिए, kernels/cmsis-nn में कई ऑप्टिमाइज़ किए गए कर्नेल हैं, जो Arm's का इस्तेमाल करते हैं सीएमएसआईएस-एनएन लाइब्रेरी.

ऑप्टिमाइज़ किए गए कर्नेल का इस्तेमाल करके प्रोजेक्ट जनरेट करने के लिए, नीचे दिए गए कमांड का इस्तेमाल करें, <subdirectory_name> को उस सबडायरेक्ट्री के नाम से बदला जा रहा है जिसमें यह शामिल है ऑप्टिमाइज़ेशन:

make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects

आप अपने खुद के ऑप्टिमाइज़ेशन जोड़ने के लिए, उनके लिए एक नया सब-फ़ोल्डर बना सकते हैं. बुध नए ऑप्टिमाइज़ किए गए तरीकों के लिए पुल अनुरोधों को बढ़ावा दें.

Arduino लाइब्रेरी जनरेट करें

अगर आपको लाइब्रेरी का नया बिल्ड जनरेट करना है, तो ये काम किए जा सकते हैं TensorFlow रिपॉज़िटरी से ली गई स्क्रिप्ट:

./tensorflow/lite/micro/tools/ci_build/test_arduino.sh

इससे जुड़ी लाइब्रेरी यहां देखी जा सकती है gen/arduino_x86_64/prj/tensorflow_lite.zip.

नए डिवाइसों पर पोर्ट करना

माइक्रोकंट्रोलर्स के लिए, LiteRT को नए प्लैटफ़ॉर्म पर पोर्ट करने से जुड़े दिशा-निर्देश यहाँ डिवाइस मिल सकते हैं micro/docs/new_platform_support.md.