माइक्रोकंट्रोलर की रैम और स्टोरेज सीमित होती है. इस वजह से, मशीन लर्निंग मॉडल का साइज़. इसके अलावा, फ़िलहाल, माइक्रोकंट्रोलर सिर्फ़ कुछ कार्रवाइयों के साथ काम करते हैं. इसलिए, सभी मॉडल आर्किटेक्चर संभव हैं.
इस दस्तावेज़ में, TensorFlow के मॉडल को बदलने की प्रोसेस के बारे में बताया गया है इस्तेमाल किए जा सकते हैं. यह समर्थित ऑपरेशन की व्याख्या भी करता है और कुछ सीमित मेमोरी में फ़िट करने के लिए मॉडल को डिज़ाइन और ट्रेनिंग देने के बारे में दिशा-निर्देश.
मॉडल बनाने और उसे रूपांतरित करने के शुरू से अंत तक चलने वाले उदाहरण के लिए, देखें सभी को नमस्ते उदाहरण के लिए.
मॉडल कन्वर्ज़न
किसी प्रशिक्षित TensorFlow मॉडल को माइक्रोकंट्रोलर पर चलाने के लिए, आपको
यह
LiteRT कन्वर्टर Python एपीआई.
यह मॉडल को
FlatBuffer
, मॉडल का साइज़ कम करके,
और LiteRT ऑपरेशन का इस्तेमाल करने के लिए इसमें बदलाव करें.
सबसे छोटा मॉडल आकार प्राप्त करने के लिए, आपको पोस्ट-ट्रेनिंग क्वांटाइज़ेशन.
C अरे में बदलें
कई माइक्रोकंट्रोलर प्लैटफ़ॉर्म में नेटिव फ़ाइल सिस्टम काम नहीं करता. कॉन्टेंट बनाने अपने प्रोग्राम से किसी मॉडल को इस्तेमाल करने का सबसे आसान तरीका, उसे किसी C कलेक्शन के तौर पर शामिल करना और इसे अपने प्रोग्राम में इकट्ठा करें.
नीचे दिया गया यूनिक्स कमांड एक ऐसी C सोर्स फ़ाइल जनरेट करेगा जिसमें
char
कलेक्शन के तौर पर LiteRT मॉडल:
xxd -i converted_model.tflite > model_data.cc
आउटपुट कुछ ऐसा दिखेगा:
unsigned char converted_model_tflite[] = {
0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
// <Lines omitted>
};
unsigned int converted_model_tflite_len = 18200;
फ़ाइल जनरेट करने के बाद, उसे अपने प्रोग्राम में शामिल किया जा सकता है. हां
बेहतर मेमोरी के लिए अरे के एलान को const
में बदलना ज़रूरी है
दक्षता के लिए, एम्बेड किए गए प्लैटफ़ॉर्म पर विज्ञापन दिखाने में मदद मिलती है.
अपने प्रोग्राम में मॉडल शामिल करने और इस्तेमाल करने के उदाहरण के लिए, यह देखें
hello_world_test.cc
नमस्ते World के उदाहरण में.
मॉडल आर्किटेक्चर और ट्रेनिंग
माइक्रोकंट्रोलर पर इस्तेमाल के लिए मॉडल डिज़ाइन करते समय, इन बातों पर ध्यान देना ज़रूरी है मॉडल का साइज़, वर्कलोड, और इस्तेमाल की जाने वाली कार्रवाइयों की जानकारी.
मॉडल का साइज़
मॉडल का साइज़ इतना छोटा होना चाहिए कि वह आपके टारगेट किए गए डिवाइस की मेमोरी में फ़िट हो सके आपके बचे हुए प्रोग्राम को बाइनरी और रनटाइम, दोनों के तौर पर इस्तेमाल किया जा सकता है.
छोटा मॉडल बनाने के लिए, आप अपने आर्किटेक्चर. हालांकि, छोटे मॉडल में अंडरफ़िटिंग का खतरा ज़्यादा होता है. इसका मतलब है कि कई समस्याओं के लिए, सबसे बड़े मॉडल को जो मेमोरी में फ़िट हो जाएगा. हालांकि, बड़े मॉडल का इस्तेमाल करने से भी प्रोसेसर का वर्कलोड बढ़ गया.
वर्कलोड
मॉडल के साइज़ और जटिलता का असर वर्कलोड पर पड़ता है. बड़ा, जटिल इन मॉडल की वजह से ज़्यादा ड्यूटी साइकल हो सकती है. इसका मतलब है कि आपके डिवाइस का प्रोसेसर काम करने में ज़्यादा समय बिताता है और डिवाइस पर कम समय बिताता है. इससे बैटरी ज़्यादा खर्च होगी बिजली की खपत और हीट पंप के लिए इस्तेमाल किया जाता है. आपके पास का इस्तेमाल करें.
कार्रवाइयों से जुड़ी सहायता
फ़िलहाल, माइक्रोकंट्रोलर्स के लिए LiteRT सीमित तौर पर उपलब्ध है TensorFlow की कार्रवाइयां, जो उस मॉडल के आर्किटेक्चर पर असर डालती हैं जो संभव है चलाने के लिए. हम ऑपरेशन सहायता को बढ़ाने पर काम कर रहे हैं, दोनों के लिए खास आर्किटेक्चर के लिए रेफ़रंस को लागू करने और ऑप्टिमाइज़ करने के बारे में बताया गया है.
फ़ाइल में, इसके साथ काम करने वाली कार्रवाइयों को देखा जा सकता है
micro_mutable_ops_resolver.h