मॉडल बनाएं और कनवर्ट करें

माइक्रोकंट्रोलर्स के पास सीमित रैम और स्टोरेज होता है, जो मशीन लर्निंग मॉडल के आकार में बाधा डालता है। इसके अलावा, माइक्रोकंट्रोलर्स के लिए TensorFlow Lite वर्तमान में संचालन के एक सीमित सबसेट का समर्थन करता है, इसलिए सभी मॉडल आर्किटेक्चर संभव नहीं हैं।

यह दस्तावेज़ माइक्रोकंट्रोलर पर चलने के लिए TensorFlow मॉडल को बदलने की प्रक्रिया की व्याख्या करता है। यह समर्थित संचालन की रूपरेखा भी देता है और सीमित स्मृति में फिट होने के लिए एक मॉडल को डिजाइन करने और प्रशिक्षण देने पर कुछ मार्गदर्शन देता है।

किसी मॉडल को बनाने और बदलने के एंड-टू-एंड चलाने योग्य उदाहरण के लिए, निम्नलिखित कोलाब देखें जो हैलो वर्ल्ड उदाहरण का हिस्सा है:

train_hello_world_model.ipynb

मॉडल रूपांतरण

एक प्रशिक्षित TensorFlow मॉडल को माइक्रोकंट्रोलर पर चलाने के लिए बदलने के लिए, आपको TensorFlow Lite कन्वर्टर Python API का उपयोग करना चाहिए। यह मॉडल को FlatBuffer में बदल देगा, मॉडल का आकार कम कर देगा, और TensorFlow Lite संचालन का उपयोग करने के लिए इसे संशोधित करेगा।

सबसे छोटा संभव मॉडल आकार प्राप्त करने के लिए, आपको प्रशिक्षण के बाद के परिमाणीकरण का उपयोग करने पर विचार करना चाहिए।

एक सी सरणी में कनवर्ट करें

कई माइक्रोकंट्रोलर प्लेटफॉर्म में नेटिव फ़ाइल सिस्टम सपोर्ट नहीं होता है। अपने प्रोग्राम से मॉडल का उपयोग करने का सबसे आसान तरीका यह है कि इसे सी सरणी के रूप में शामिल किया जाए और इसे अपने प्रोग्राम में संकलित किया जाए।

निम्नलिखित यूनिक्स कमांड एक सी स्रोत फ़ाइल उत्पन्न करेगी जिसमें टेन्सरफ्लो लाइट मॉडल char सरणी के रूप में होगा:

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 में बदलना महत्वपूर्ण है।

अपने प्रोग्राम में किसी मॉडल को शामिल करने और उपयोग करने के तरीके के उदाहरण के लिए, हैलो वर्ल्ड उदाहरण में evaluate_test.cc देखें।

मॉडल वास्तुकला और प्रशिक्षण

माइक्रोकंट्रोलर्स पर उपयोग के लिए एक मॉडल डिजाइन करते समय, मॉडल के आकार, वर्कलोड और उपयोग किए जाने वाले संचालन पर विचार करना महत्वपूर्ण है।

मॉडल का आकार

एक मॉडल इतना छोटा होना चाहिए कि वह आपके लक्ष्य डिवाइस की मेमोरी में आपके बाकी प्रोग्राम के साथ-साथ बाइनरी और रनटाइम दोनों में फिट हो सके।

एक छोटा मॉडल बनाने के लिए, आप अपने आर्किटेक्चर में कम और छोटी परतों का उपयोग कर सकते हैं। हालांकि, छोटे मॉडल के अंडरफिटिंग से पीड़ित होने की संभावना अधिक होती है। इसका मतलब है कि कई समस्याओं के लिए, स्मृति में फिट होने वाले सबसे बड़े मॉडल का प्रयास करना और उसका उपयोग करना समझ में आता है। हालाँकि, बड़े मॉडल का उपयोग करने से प्रोसेसर का वर्कलोड भी बढ़ जाएगा।

कार्यभार

मॉडल के आकार और जटिलता का कार्यभार पर प्रभाव पड़ता है। बड़े, जटिल मॉडल के परिणामस्वरूप उच्च कर्तव्य चक्र हो सकता है, जिसका अर्थ है कि आपके डिवाइस का प्रोसेसर अधिक समय काम कर रहा है और कम समय निष्क्रिय है। इससे बिजली की खपत और गर्मी उत्पादन में वृद्धि होगी, जो आपके आवेदन के आधार पर एक समस्या हो सकती है।

प्रचालन समर्थन

माइक्रोकंट्रोलर्स के लिए TensorFlow Lite वर्तमान में TensorFlow संचालन के एक सीमित सबसेट का समर्थन करता है, जो उस मॉडल आर्किटेक्चर को प्रभावित करता है जिसे चलाना संभव है। हम विशिष्ट आर्किटेक्चर के लिए संदर्भ कार्यान्वयन और अनुकूलन दोनों के संदर्भ में संचालन समर्थन के विस्तार पर काम कर रहे हैं।

समर्थित संचालन को micro_mutable_ops_resolver.h फ़ाइल में देखा जा सकता है