मोबाइल और एम्बेडेड उपकरणों में सीमित कम्प्यूटेशनल संसाधन होते हैं, इसलिए अपने एप्लिकेशन संसाधन को कुशल बनाए रखना महत्वपूर्ण है। हमने सर्वोत्तम प्रथाओं और रणनीतियों की एक सूची तैयार की है जिनका उपयोग आप अपने TensorFlow Lite मॉडल के प्रदर्शन को बेहतर बनाने के लिए कर सकते हैं।
कार्य के लिए सर्वोत्तम मॉडल चुनें
कार्य के आधार पर, आपको मॉडल जटिलता और आकार के बीच एक समझौता करना होगा। यदि आपके कार्य को उच्च सटीकता की आवश्यकता है, तो आपको एक बड़े और जटिल मॉडल की आवश्यकता हो सकती है। जिन कार्यों के लिए कम सटीकता की आवश्यकता होती है, उनके लिए छोटे मॉडल का उपयोग करना बेहतर होता है क्योंकि वे न केवल कम डिस्क स्थान और मेमोरी का उपयोग करते हैं, बल्कि वे आम तौर पर तेज़ और अधिक ऊर्जा कुशल भी होते हैं। उदाहरण के लिए, नीचे दिए गए ग्राफ़ कुछ सामान्य छवि वर्गीकरण मॉडल के लिए सटीकता और विलंबता ट्रेडऑफ़ दिखाते हैं।
मोबाइल उपकरणों के लिए अनुकूलित मॉडलों का एक उदाहरण मोबाइलनेट्स हैं, जो मोबाइल विज़न अनुप्रयोगों के लिए अनुकूलित हैं। TensorFlow हब कई अन्य मॉडलों को सूचीबद्ध करता है जिन्हें विशेष रूप से मोबाइल और एम्बेडेड उपकरणों के लिए अनुकूलित किया गया है।
आप ट्रांसफर लर्निंग का उपयोग करके सूचीबद्ध मॉडलों को अपने डेटासेट पर पुनः प्रशिक्षित कर सकते हैं। TensorFlow Lite मॉडल मेकर का उपयोग करके ट्रांसफर लर्निंग ट्यूटोरियल देखें।
अपने मॉडल को प्रोफाइल करें
एक बार जब आप एक उम्मीदवार मॉडल चुन लेते हैं जो आपके कार्य के लिए सही है, तो अपने मॉडल को प्रोफाइल और बेंचमार्क करना एक अच्छा अभ्यास है। TensorFlow Lite बेंचमार्किंग टूल में एक अंतर्निहित प्रोफाइलर है जो प्रति ऑपरेटर प्रोफाइलिंग आँकड़े दिखाता है। इससे प्रदर्शन बाधाओं को समझने में मदद मिल सकती है और कौन से ऑपरेटर गणना समय पर हावी हैं।
आप अपने एंड्रॉइड एप्लिकेशन में मॉडल को प्रोफाइल करने के लिए, मानक एंड्रॉइड सिस्टम ट्रेसिंग का उपयोग करके, और जीयूआई आधारित प्रोफाइलिंग टूल के साथ समय के अनुसार ऑपरेटर इनवोकेशन को देखने के लिए टेन्सरफ्लो लाइट ट्रेसिंग का उपयोग कर सकते हैं।
ग्राफ़ में ऑपरेटरों को प्रोफ़ाइल और अनुकूलित करें
यदि कोई विशेष ऑपरेटर मॉडल में बार-बार दिखाई देता है और प्रोफाइलिंग के आधार पर, आप पाते हैं कि ऑपरेटर सबसे अधिक समय लेता है, तो आप उस ऑपरेटर को अनुकूलित करने पर विचार कर सकते हैं। यह परिदृश्य दुर्लभ होना चाहिए क्योंकि TensorFlow Lite में अधिकांश ऑपरेटरों के लिए अनुकूलित संस्करण हैं। हालाँकि, यदि आप उन बाधाओं को जानते हैं जिनमें ऑपरेटर को निष्पादित किया जाता है, तो आप कस्टम ऑप का तेज़ संस्करण लिखने में सक्षम हो सकते हैं। कस्टम ऑपरेटर गाइड देखें.
अपने मॉडल को अनुकूलित करें
मॉडल अनुकूलन का लक्ष्य छोटे मॉडल बनाना है जो आम तौर पर तेज़ और अधिक ऊर्जा कुशल हों, ताकि उन्हें मोबाइल उपकरणों पर तैनात किया जा सके। TensorFlow Lite कई अनुकूलन तकनीकों का समर्थन करता है, जैसे परिमाणीकरण।
विवरण के लिए मॉडल अनुकूलन दस्तावेज़ देखें।
धागों की संख्या घटाएँ
TensorFlow Lite कई ऑपरेटरों के लिए मल्टी-थ्रेडेड कर्नेल का समर्थन करता है। आप थ्रेड्स की संख्या बढ़ा सकते हैं और ऑपरेटरों के निष्पादन में तेजी ला सकते हैं। हालाँकि, थ्रेड्स की संख्या बढ़ाने से आपका मॉडल अधिक संसाधनों और शक्ति का उपयोग करेगा।
कुछ अनुप्रयोगों के लिए, विलंबता ऊर्जा दक्षता से अधिक महत्वपूर्ण हो सकती है। आप दुभाषिया थ्रेड्स की संख्या निर्धारित करके थ्रेड्स की संख्या बढ़ा सकते हैं। हालाँकि, मल्टी-थ्रेडेड निष्पादन, समवर्ती रूप से निष्पादित किए जाने वाले कार्यों के आधार पर बढ़ी हुई प्रदर्शन परिवर्तनशीलता की कीमत पर आता है। यह विशेष रूप से मोबाइल ऐप्स का मामला है। उदाहरण के लिए, पृथक परीक्षण सिंगल-थ्रेडेड बनाम 2x स्पीड-अप दिखा सकते हैं, लेकिन, यदि कोई अन्य ऐप एक ही समय में निष्पादित हो रहा है, तो इसके परिणामस्वरूप सिंगल-थ्रेडेड की तुलना में खराब प्रदर्शन हो सकता है।
अनावश्यक प्रतियाँ हटाएँ
यदि आपका एप्लिकेशन सावधानी से डिज़ाइन नहीं किया गया है, तो मॉडल में इनपुट फीड करते समय और आउटपुट पढ़ते समय अनावश्यक प्रतियां हो सकती हैं। अनावश्यक प्रतियों को हटाना सुनिश्चित करें. यदि आप जावा जैसे उच्च स्तरीय एपीआई का उपयोग कर रहे हैं, तो प्रदर्शन चेतावनियों के लिए दस्तावेज़ीकरण की सावधानीपूर्वक जांच करना सुनिश्चित करें। उदाहरण के लिए, यदि ByteBuffers
इनपुट के रूप में उपयोग किया जाता है तो जावा एपीआई बहुत तेज़ है।
प्लेटफ़ॉर्म विशिष्ट टूल के साथ अपने एप्लिकेशन को प्रोफ़ाइल करें
एंड्रॉइड प्रोफाइलर और इंस्ट्रूमेंट्स जैसे प्लेटफ़ॉर्म विशिष्ट उपकरण प्रचुर मात्रा में प्रोफ़ाइलिंग जानकारी प्रदान करते हैं जिसका उपयोग आपके ऐप को डीबग करने के लिए किया जा सकता है। कभी-कभी प्रदर्शन बग मॉडल में नहीं बल्कि एप्लिकेशन कोड के कुछ हिस्सों में हो सकता है जो मॉडल के साथ इंटरैक्ट करता है। अपने प्लेटफ़ॉर्म के लिए प्लेटफ़ॉर्म विशिष्ट प्रोफ़ाइलिंग टूल और सर्वोत्तम प्रथाओं से स्वयं को परिचित करना सुनिश्चित करें।
मूल्यांकन करें कि क्या आपके मॉडल को डिवाइस पर उपलब्ध हार्डवेयर एक्सेलेरेटर का उपयोग करने से लाभ होता है
TensorFlow Lite ने GPU, DSPs और न्यूरल एक्सेलेरेटर जैसे तेज़ हार्डवेयर वाले मॉडलों को गति देने के नए तरीके जोड़े हैं। आमतौर पर, इन त्वरक को प्रतिनिधि सबमॉड्यूल के माध्यम से उजागर किया जाता है जो दुभाषिया निष्पादन के कुछ हिस्सों को संभालते हैं। TensorFlow Lite प्रतिनिधियों का उपयोग इस प्रकार कर सकता है:
- एंड्रॉइड के न्यूरल नेटवर्क एपीआई का उपयोग करना। आप अपने मॉडल की गति और दक्षता में सुधार के लिए इन हार्डवेयर त्वरक बैकएंड का उपयोग कर सकते हैं। न्यूरल नेटवर्क्स एपीआई को सक्षम करने के लिए, एनएनएपीआई प्रतिनिधि गाइड देखें।
- GPU प्रतिनिधि क्रमशः OpenGL/OpenCL और Metal का उपयोग करके Android और iOS पर उपलब्ध है। उन्हें आज़माने के लिए, GPU प्रतिनिधि ट्यूटोरियल और दस्तावेज़ देखें।
- हेक्सागोन प्रतिनिधि एंड्रॉइड पर उपलब्ध है। यदि यह डिवाइस पर उपलब्ध है तो यह क्वालकॉम हेक्सागोन डीएसपी का लाभ उठाता है। अधिक जानकारी के लिए हेक्सागोन प्रतिनिधि ट्यूटोरियल देखें।
- यदि आपके पास गैर-मानक हार्डवेयर तक पहुंच है तो अपना स्वयं का प्रतिनिधि बनाना संभव है। अधिक जानकारी के लिए TensorFlow Lite प्रतिनिधियों को देखें।
ध्यान रखें कि कुछ त्वरक विभिन्न प्रकार के मॉडलों के लिए बेहतर काम करते हैं। कुछ प्रतिनिधि केवल फ़्लोट मॉडल या विशिष्ट तरीके से अनुकूलित मॉडल का समर्थन करते हैं। यह देखने के लिए प्रत्येक प्रतिनिधि को बेंचमार्क करना महत्वपूर्ण है कि क्या यह आपके आवेदन के लिए एक अच्छा विकल्प है। उदाहरण के लिए, यदि आपके पास बहुत छोटा मॉडल है, तो मॉडल को एनएन एपीआई या जीपीयू को सौंपना उचित नहीं होगा। इसके विपरीत, उच्च अंकगणितीय तीव्रता वाले बड़े मॉडलों के लिए त्वरक एक बढ़िया विकल्प हैं।
और अधिक मदद की आवश्यकता है
TensorFlow टीम आपके सामने आने वाली विशिष्ट प्रदर्शन समस्याओं के निदान और समाधान में मदद करने में प्रसन्न है। कृपया समस्या के विवरण के साथ GitHub पर समस्या दर्ज करें।