एज डिवाइसों में अक्सर, कम मेमोरी या कंप्यूटेशनल पावर की कमी होती है. अलग-अलग ऑप्टिमाइज़ेशन को मॉडल पर लागू किया जा सकता है, ताकि उन्हें इनके अंदर चलाया जा सके करना है. इसके अतिरिक्त, कुछ ऑप्टिमाइज़ेशन विशेषज्ञों के हार्डवेयर की मदद से तेज़ी से अनुमान लगाया जा सकता है.
LiteRT और TensorFlow मॉडल ऑप्टिमाइज़ेशन टूलकिट में, इन कामों के लिए टूल उपलब्ध कराए जाते हैं अनुमान को ऑप्टिमाइज़ करने की जटिलता को कम करें.
हमारा सुझाव है कि आप आवेदन के दौरान मॉडल ऑप्टिमाइज़ेशन पर विचार करें डेवलपमेंट प्रोसेस है. इस दस्तावेज़ में, ऑप्टिमाइज़ेशन के लिए कुछ सबसे सही तरीकों के बारे में बताया गया है किनारे के हार्डवेयर पर डिप्लॉयमेंट के लिए, TensorFlow के मॉडल.
मॉडल को ऑप्टिमाइज़ क्यों करना चाहिए
ऐप्लिकेशन के लिए, मॉडल ऑप्टिमाइज़ेशन कई मुख्य तरीकों से मदद कर सकता है डेवलपमेंट.
साइज़ छोटा करने वाले विज्ञापन
किसी मॉडल का साइज़ कम करने के लिए, ऑप्टिमाइज़ेशन के कुछ तरीकों का इस्तेमाल किया जा सकता है. इससे छोटा मॉडल के ये फ़ायदे हैं:
- छोटा स्टोरेज साइज़: छोटे मॉडल आपके डिवाइस का कम स्टोरेज इस्तेमाल करते हैं उपयोगकर्ताओं का डिवाइस. उदाहरण के लिए, छोटे मॉडल का इस्तेमाल करने वाला Android ऐप्लिकेशन, अपने मोबाइल डिवाइस पर कम स्टोरेज बचा सकते हैं.
- डाउनलोड का साइज़ छोटा होता है: छोटे मॉडल को डाउनलोड करने के लिए कम समय और बैंडविड्थ की ज़रूरत होती है उपयोगकर्ताओं का डेटा डाउनलोड करें डिवाइस.
- कम मेमोरी का इस्तेमाल: छोटे मॉडल चलते समय कम रैम का इस्तेमाल करते हैं, जो आपके ऐप्लिकेशन के अन्य हिस्सों के लिए मेमोरी खाली करता है, और बेहतर परफ़ॉर्मेंस और स्थिरता के लिए मदद करते हैं.
क्वांटाइज़ेशन की मदद से, इन सभी मामलों में मॉडल का साइज़ कम हो सकता है. और वह भी कुछ सटीक भी. काट-छांट करने और क्लस्टरिंग से, डाउनलोड करने के लिए मॉडल करना होगा.
इंतज़ार के समय में कमी
इंतज़ार का समय, किसी दिए गए वाक्य के साथ किसी एक अनुमान को चलाने में लगने वाला समय है मॉडल. ऑप्टिमाइज़ेशन के कुछ टाइप, कंप्यूटेशन (हिसाब लगाना) की ज़रूरत को कम कर सकते हैं का इस्तेमाल करें. इससे इंतज़ार का समय कम हो जाता है. इंतज़ार के समय से भी बिजली की खपत पर असर पड़ता है.
फ़िलहाल, क्वांटाइज़ेशन का इस्तेमाल, इंतज़ार के समय को कम करने के लिए किया जा सकता है. इसके लिए, अनुमान के दौरान होने वाली ऐसी कैलकुलेशन ज़्यादा सटीक होता है.
ऐक्सेलरेटर के साथ काम करने की सुविधा
कुछ हार्डवेयर ऐक्सेलरेटर, जैसे कि Edge TPU, इसकी मदद से अनुमान को बहुत तेज़ी से चलाया जा सकता है सही तरीके से ऑप्टिमाइज़ किए गए मॉडल.
आम तौर पर, इस तरह के डिवाइसों के मॉडल को खास तरीका है. हर हार्डवेयर ऐक्सेलरेटर के दस्तावेज़ देखें और उनके बारे में ज़्यादा जानें ज़रूरतें.
ट्रेड-ऑफ़
ऑप्टिमाइज़ेशन की वजह से, मॉडल सटीक होने में बदलाव हो सकता है. इसे ऐसा होना चाहिए को आवेदन तैयार करने की प्रोसेस के दौरान चुना जाता है.
सटीक होने के बदलाव इस बात पर निर्भर करते हैं कि किस मॉडल को ऑप्टिमाइज़ किया जा रहा है. का अनुमान लगाना मुश्किल हो जाता है. आम तौर पर, साइज़ या इंतज़ार के समय की सटीक जानकारी नहीं मिलेगी. आपके अनुरोध पर निर्भर पहले से है, तो इसका असर आपके उपयोगकर्ताओं पर हो भी सकता है और नहीं भी अनुभव. बहुत कम मामलों में, ऑप्टिमाइज़ेशन की प्रोसेस की वजह से, कुछ मॉडल को कुछ सटीक वैल्यू मिल सकती है.
ऑप्टिमाइज़ेशन के टाइप
फ़िलहाल, LiteRT क्वांटाइज़ेशन, ट्रिमिंग, और क्लस्टरिंग.
ये TensorFlow मॉडल ऑप्टिमाइज़ेशन का हिस्सा हैं टूलकिट, जो TensorFlow के साथ काम करने वाले मॉडल ऑप्टिमाइज़ेशन तकनीकों के लिए संसाधन लाइट.
क्वांटाइज़ेशन
क्वांटाइज़ेशन यह फ़ंक्शन, मॉडल की वैल्यू को दिखाने के लिए इस्तेमाल की जाने वाली संख्याओं की शुद्धता को कम करके काम करता है पैरामीटर, जो डिफ़ॉल्ट रूप से 32-बिट फ़्लोटिंग पॉइंट नंबर होते हैं. इस वजह से छोटे मॉडल का साइज़ और तेज़ी से हिसाब लगाने में मदद करता है.
LiteRT में इस तरह के क्वांटाइज़ेशन (क्वांटाइज़ेशन) की सुविधा उपलब्ध है:
तकनीक | डेटा से जुड़ी ज़रूरी शर्तें | साइज़ छोटा करने वाले विज्ञापन | सटीक जानकारी | काम करने वाला हार्डवेयर |
---|---|---|---|---|
ट्रेनिंग के बाद फ़्लोट 16 की संख्या का पता लगाना | कोई डेटा नहीं मिला | 50% तक | सटीक तरीके से न मिलने वाला नुकसान | सीपीयू, जीपीयू |
ट्रेनिंग के बाद डाइनैमिक रेंज क्वांटाइज़ेशन | कोई डेटा नहीं मिला | 75% तक | सटीक होने की सबसे छोटी कमी | सीपीयू, जीपीयू (Android) |
ट्रेनिंग के बाद पूर्णांक की संख्या बढ़ाना | बिना लेबल वाला प्रतिनिधि सैंपल | 75% तक | सटीक होने में थोड़ी कमी | सीपीयू, जीपीयू (Android), EdgeTPU |
क्वांटाइज़ेशन अवेयर ट्रेनिंग | लेबल किया गया ट्रेनिंग डेटा | 75% तक | सटीक होने की सबसे छोटी कमी | सीपीयू, जीपीयू (Android), EdgeTPU |
यहां दिए गए डिसिज़न ट्री की मदद से, डेटा कैलकुलेट करने के तरीकों को चुना जा सकता है आपके मॉडल के लिए बस अपेक्षित मॉडल आकार के आधार पर उपयोग करना चाहते हैं और ज़्यादा सटीक होता है.
ट्रेनिंग के बाद को क्वांटाइज़ेशन के समय और सटीक होने के नतीजे नीचे दिए गए हैं और ऐसे कुछ मॉडल पर क्वांटाइज़ेशन अवेयर ट्रेनिंग दी गई है. इंतज़ार के समय के सभी आंकड़े इस पर मापे जाते हैं एक बड़े कोर वाले सीपीयू का इस्तेमाल करने वाले Pixel 2 डिवाइस. जैसे-जैसे टूलकिट बेहतर होता जाएगा वैसे-वैसे यह बेहतर होगा यहां दिए गए नंबर:
मॉडल | टॉप-1 ऐक्यूरसी (मूल) | टॉप-1 ऐक्यूरसी (पोस्ट ट्रेनिंग को क्वांटाइज़ किया गया) | टॉप-1 ऐक्यूरसी (क्वांटाइज़ेशन अवेयर ट्रेनिंग) | इंतज़ार का समय (मूल) (मि॰से॰) | इंतज़ार के समय (पोस्ट ट्रेनिंग की मात्रा के हिसाब से) (मि॰से॰) | इंतज़ार का समय (क्वांटाइज़ेशन अवेयर ट्रेनिंग) (मि॰से॰) | साइज़ (मूल) (एमबी) | साइज़ (ऑप्टिमाइज़ किया गया) (एमबी) |
---|---|---|---|---|---|---|---|---|
Mobilenet-v1-1-224 | 0.709 | 0.657 | 0.70 | 124 | 112 | 64 | 16.9 | 4.3 |
Mobilenet-v2-1-224 | 0.719 | 0.637 | 0.709 | 89 | 98 | 54 | 14 | 3.6 |
Inception_v3 | 0.78 | 0.772 | 0.775 | 1130 | 845 | 543 | 95.7 | 23.9 |
Resnet_v2_101 | 0.770 | 0.768 | लागू नहीं | 3973 | 2868 | लागू नहीं | 178.3 | 44.9 |
int16 ऐक्टिवेशन और int8 वेट के साथ फ़ुल इंटीजर क्वांटाइज़ेशन
Int16 ऐक्टिवेशन के साथ क्वांटाइज़ेशन एक पूरी इंटीजर क्वांटाइज़ेशन स्कीम है, जिसमें int16 में ऐक्टिवेशन और वेट int8. इस मोड में, क्वांटाइज़्ड मॉडल को ज़्यादा सटीक int8 में ऐक्टिवेशन और वेट, दोनों के साथ पूर्णांक क्वांटाइज़ेशन स्कीम समान मॉडल आकार बनाए रखना. इसका सुझाव तब दिया जाता है, जब चालू करना संवेदनशील हो की अहमियत को समझ सकते हैं.
ध्यान दें: फ़िलहाल, सिर्फ़ ऑप्टिमाइज़ नहीं किए गए रेफ़रंस कर्नेल लागू किए गए हैं इस क्वांटाइज़ेशन स्कीम के लिए, TFLite में उपलब्ध है. इसलिए डिफ़ॉल्ट रूप से int8 कर्नेल की तुलना में धीमा होगा. इस मोड के सभी फ़ायदों का इस्तेमाल करने पर जिसे फ़िलहाल खास हार्डवेयर या कस्टम सॉफ़्टवेयर से ऐक्सेस किया जा सकता हो.
इस मोड का फ़ायदा लेने वाले कुछ मॉडल के लिए सटीक नतीजे नीचे दिए गए हैं.
मॉडल | सटीक होने की मेट्रिक का टाइप | सटीक (फ़्लोट32 ऐक्टिवेशन) | सटीक (int8 ऐक्टिवेशन) | सटीक (int16 ऐक्टिवेशन) |
---|---|---|---|---|
Wav2letter | डब्ल्यूईआर | 6.7% | 7.7% | 7.2% |
DeepSpeech 0.5.1 (अनरोल किया गया) | CER | 6.13% | 43.67% | 6.52% |
YoloV3 | mAP(IOU=0.5) | 0.577 | 0.563 | 0.574 |
MobileNetV1 | टॉप-1 ऐक्यूरसी | 0.7062 | 0.694 | 0.6936 |
MobileNetV2 | टॉप-1 ऐक्यूरसी | 0.718 | 0.7126 | 0.7137 |
MobileBert | F1(एग्ज़ैक्ट मैच) | 88.81(81.23) | 2.08(0) | 88.73(81.15) |
काट-छांट करना
काट-छांट करने की प्रोसेस ऐसे पैरामीटर को हटा देते हैं जिनका इस मॉडल पर मामूली असर पड़ता है सुझाव. काटे-छांटे गए मॉडल का साइज़, डिस्क पर एक जैसा होता है और उनका रनटाइम भी एक जैसा होता है इंतज़ार का समय, लेकिन ज़्यादा असरदार तरीके से कंप्रेस किया जा सकता है. इससे छांटने में मदद मिलती है यह तकनीक मॉडल के डाउनलोड साइज़ को कम करने में मदद करती है.
आने वाले समय में, LiteRT उन मॉडल के लिए इंतज़ार के समय को कम करने की सुविधा देगा जिनमें काट-छांट की गई है.
गुच्छ
क्लस्टरिंग यह किसी मॉडल की हर लेयर के वेट को, पहले से तय संख्या में ग्रुप करके काम करता है इनमें से हर एक क्लस्टर की वैल्यू के लिए, सेंट्रोइड वैल्यू शेयर की जाती है. अलग-अलग क्लस्टर में बांटा जा सकता है. इससे किसी मॉडल में यूनीक वेट की वैल्यू की संख्या कम हो जाती है, इस तरह, यह डिवाइस की जटिलता को कम कर देता है.
इस वजह से, क्लस्टर किए गए मॉडल ज़्यादा असरदार तरीके से कंप्रेस किए जा सकते हैं. डिप्लॉयमेंट के फ़ायदे, छांटने से मिलते-जुलते हैं.
डेवलपमेंट वर्कफ़्लो
शुरुआती बिंदु के तौर पर, देखें कि क्या मॉडल होस्ट मॉडल आपके ऐप्लिकेशन के लिए काम कर सकते हैं. अगर नहीं, तो हम यह सुझाव दिया जाता है कि उपयोगकर्ता ट्रेनिंग के बाद की संख्यात्मक विश्लेषण के साथ शुरुआत करें टूल के तौर पर उपलब्ध रहेगा, क्योंकि यह ज़्यादा से ज़्यादा लोगों के लिए लागू होता है और उसके लिए ट्रेनिंग डेटा की ज़रूरत नहीं होती.
ऐसे मामलों में जहां सटीक और इंतज़ार के समय वाले टारगेट को पूरा नहीं किया जाता या हार्डवेयर एक्सेलरेटर सहायता ज़रूरी है, क्वांटाइज़ेशन के बारे में जागरूकता ट्रेनिंग तो यह बेहतर विकल्प है. अतिरिक्त ऑप्टिमाइज़ेशन तकनीकें TensorFlow मॉडल ऑप्टिमाइज़ेशन टूलकिट.
अगर आपको अपने मॉडल के साइज़ को और कम करना है, तो काट-छांट की जा सकती है और/या अपने मॉडल की मात्रा तय करने से पहले क्लस्टरिंग करें.