मोबाइल और एम्बेड किए गए डिवाइसों में कंप्यूटेशनल रिसॉर्स सीमित होते हैं, इसलिए यह आपके ऐप्लिकेशन के संसाधन को ज़्यादा कारगर बनाए रखने के लिए ये ज़रूरी हैं. हमने एक सूची तैयार की है TensorFlow को बेहतर बनाने के सबसे सही तरीकों और रणनीतियों के बारे में बताया है लाइट मॉडल की परफ़ॉर्मेंस.
टास्क के लिए सबसे सही मॉडल चुनें
टास्क के हिसाब से, आपको मॉडल कॉम्प्लेक्सिटी के बीच तालमेल बनाना होगा और साइज़. अगर आपके टास्क को बहुत ज़्यादा सही तरीके से इस्तेमाल करने की ज़रूरत है, तो आपको बड़े और लंबे जटिल मॉडल की है. जिन कामों में कम सटीक जानकारी की ज़रूरत होती है उनके लिए, बेहतर तरीके से छोटा मॉडल, क्योंकि वे न केवल कम डिस्क स्थान और मेमोरी का उपयोग करते हैं, बल्कि साथ ही, ये ऊर्जा की ज़्यादा बचत करते हैं. उदाहरण के लिए, नीचे दिए गए ग्राफ़ दिखाते हैं कि इमेज की कैटगरी तय करने वाले कुछ सामान्य मॉडल की सटीक जानकारी और इंतज़ार का समय.
मोबाइल डिवाइस के लिए ऑप्टिमाइज़ किए गए मॉडल का एक उदाहरण है MobileNets, जिन्हें मोबाइल के लिए ऑप्टिमाइज़ किया गया है विज़न ऐप्लिकेशन. Kaggle मॉडल में कई अन्य ऐसे मॉडल जो खास तौर पर मोबाइल और एम्बेड किए गए डिवाइसों के लिए ऑप्टिमाइज़ किए गए हैं.
ट्रांसफ़र का इस्तेमाल करके, सूची में दिए गए मॉडल को अपने डेटासेट पर फिर से ट्रेनिंग दी जा सकती है सीखना.
अपने मॉडल की प्रोफ़ाइल बनाएं
जब आप अपने काम के लिए सही उम्मीदवार मॉडल चुन लेंगे, तो अपने मॉडल की प्रोफ़ाइल बनाने और उसके लिए मानदंड तय करने का अच्छा तरीका है. LiteRT मानदंड टूल इसमें पहले से एक प्रोफ़ाइलर मौजूद है, जो हर ऑपरेटर की प्रोफ़ाइलिंग आंकड़े दिखाता है. यह काम कर सकता है यह समझने में मदद मिलती है कि परफ़ॉर्मेंस में किस तरह की रुकावटें हैं और कौनसे ऑपरेटर कंप्यूटेशन टाइम.
LiteRT का भी इस्तेमाल किया जा सकता है ट्रेसिंग जो स्टैंडर्ड Android सिस्टम ट्रेस करने की सुविधा का इस्तेमाल करके, आपके Android ऐप्लिकेशन के मॉडल को स्कैन करते हैं. साथ ही, जीयूआई आधारित प्रोफ़ाइलिंग की मदद से, समय के हिसाब से ऑपरेटर के बोले जाने वाले अनुरोधों को विज़ुअलाइज़ करें टूल.
ग्राफ़ में मौजूद ऑपरेटर की प्रोफ़ाइल बनाएं और उन्हें ऑप्टिमाइज़ करें
अगर कोई खास ऑपरेटर, मॉडल में बार-बार दिखता है और प्रोफ़ाइल बनाते समय, आपको पता चलता है कि ऑपरेटर सबसे ज़्यादा समय का इस्तेमाल करता है. उस ऑपरेटर को ऑप्टिमाइज़ करने का तरीका क्या है. ऐसा TensorFlow जैसा होना चाहिए Lite में ज़्यादातर ऑपरेटर के लिए, वर्शन ऑप्टिमाइज़ किए गए हैं. हालांकि, आपके पास ये विकल्प हैं अगर आपको उन पाबंदियों के बारे में पता है जिनमें ऑपरेटर चलाया जाता है. कस्टम ऑपरेटर गाइड देखें.
अपने मॉडल को ऑप्टिमाइज़ करना
मॉडल ऑप्टिमाइज़ेशन का मकसद ऐसे छोटे मॉडल बनाना है जो आम तौर पर ज़्यादा तेज़ हों और ताकि उन्हें मोबाइल डिवाइसों पर डिप्लॉय किया जा सके. LiteRT, क्वांटाइज़ेशन जैसी कई ऑप्टिमाइज़ेशन तकनीकों के साथ काम करता है.
ज़्यादा जानकारी के लिए, मॉडल ऑप्टिमाइज़ेशन दस्तावेज़ देखें.
थ्रेड की संख्या को कम करें
LiteRT, कई ऑपरेटर के लिए मल्टी-थ्रेड कर्नेल के साथ काम करते हैं. आप थ्रेड की संख्या बढ़ाने और ऑपरेटर के एक्ज़िक्यूशन को तेज़ करने में मदद मिलती है. बढ़ रहा है हालांकि, थ्रेड की संख्या से आपके मॉडल में ज़्यादा संसाधनों का इस्तेमाल होगा और पावर.
कुछ ऐप्लिकेशन के लिए, ऊर्जा की बचत करने के बजाय इंतज़ार का समय ज़्यादा अहम हो सकता है. आपने लोगों तक पहुंचाया मुफ़्त में इंटरप्रेटर की संख्या सेट करके, थ्रेड की संख्या बढ़ाई जा सकती है थ्रेड. हालांकि, मल्टी-थ्रेडेड एक्ज़ीक्यूशन के लिए बेहतर परफ़ॉर्मेंस की लागत आती है इस बात पर निर्भर करता है कि एक साथ अन्य कौन-कौनसी कार्रवाइयां की जा रही हैं. यह है मोबाइल ऐप्लिकेशन के मामले में यह काफ़ी अहम है. उदाहरण के लिए, आइसोलेटेड टेस्ट में दो गुना पॉइंट दिख सकते हैं स्पीड-अप बनाम सिंगल-थ्रेडेड, लेकिन अगर कोई दूसरा ऐप्लिकेशन एक ही समय पर एक्ज़ीक्यूट किया जा रहा है, इसकी वजह से परफ़ॉर्मेंस, सिंगल-थ्रेड के मुकाबले खराब हो सकती है.
ग़ैर-ज़रूरी कॉपी हटाएं
अगर आपके ऐप्लिकेशन को ध्यान से डिज़ाइन नहीं किया गया है, तो उसकी अनुमति नहीं है
इनपुट को फ़ीड करते समय और मॉडल से आउटपुट को पढ़ते समय. पक्का करें कि
अतिरिक्त कॉपी हटानी होगी. अगर आप Java जैसे उच्च लेवल के एपीआई का इस्तेमाल कर रहे हैं, तो
परफ़ॉर्मेंस से जुड़ी चेतावनियों के लिए, दस्तावेज़ को ध्यान से पढ़ें. उदाहरण के लिए,
Java API बहुत तेज़ काम करता है, अगर ByteBuffers
का इस्तेमाल
इनपुट.
प्लैटफ़ॉर्म के हिसाब से टूल की मदद से, अपने ऐप्लिकेशन की प्रोफ़ाइल बनाएं
प्लैटफ़ॉर्म के हिसाब से टूल, जैसे कि Android प्रोफ़ाइलर और वाद्ययंत्रों से कमाई होती है का इस्तेमाल करें. कभी-कभी हो सकता है कि प्रदर्शन बग मॉडल में नहीं, बल्कि ऐप्लिकेशन कोड के उन हिस्सों में हो मॉडल के साथ इंटरैक्ट करते हैं. प्लैटफ़ॉर्म के बारे में अच्छे से जान लें प्रोफ़ाइल बनाने के खास टूल और सबसे सही तरीके बताए गए हैं.
यह मूल्यांकन करना कि आपके मॉडल को डिवाइस पर उपलब्ध हार्डवेयर ऐक्सेलरेटर का इस्तेमाल करने से फ़ायदा मिलता है या नहीं
LiteRT ने तेज़ हार्डवेयर की मदद से, मॉडल को तेज़ी से चलाने के लिए नए तरीके जोड़े हैं जैसे कि जीपीयू, डीएसपी, और न्यूरल ऐक्सेलरेटर. आम तौर पर, ये ऐक्सेलरेटर डेलीगेट सबमॉड्यूल की मदद से दिखाया गया, जो के कुछ हिस्से होते हैं. LiteRT इन लोगों का इस्तेमाल करके, अपने संपर्कों का ऐक्सेस दे सकते हैं:
- जीपीयू डेलिगेट की सुविधा, Android और iOS पर उपलब्ध है. इसके लिए, OpenGL/OpenCL और Metal का इस्तेमाल किया जा रहा है. क्रम से. इन्हें आज़माने के लिए, GPU प्रतिनिधि की वेबसाइट देखें.
- अगर आपके पास गैर-मानक हार्डवेयर. LiteRT देखें डेलिगेट के ईमेल पते देखें.
ध्यान रखें कि कुछ ऐक्सेलरेटर अलग-अलग तरह के मॉडल के लिए बेहतर काम करते हैं. कुछ सूचनाएं मिल रही हैं डेलिगेट, सिर्फ़ फ़्लोट मॉडल या किसी खास तरीके से ऑप्टिमाइज़ किए गए मॉडल का इस्तेमाल करते हैं. हां हर प्रतिनिधि को मानदंड देना होगा कि क्या वह अच्छा है को चुनें. उदाहरण के लिए, यदि आपका मॉडल बहुत छोटा है, तो यह यह मॉडल को जीपीयू को सौंपने लायक नहीं है. इसके उलट, एक्सेलरेटर यह विकल्प, अंकगणित की ज़्यादा तीव्रता वाले बड़े मॉडल के लिए सही विकल्प है.