इस सेक्शन में ट्रेनिंग पाइपलाइन के बारे में बताया गया है.
इनपुट पाइपलाइन को ऑप्टिमाइज़ करना
खास जानकारी: इनपुट-बाउंड पाइपलाइन की वजहें और इंटरवेंशन काफ़ी टास्क पर निर्भर होते हैं. प्रोफ़ाइलर का इस्तेमाल करें और सामान्य समस्याओं का पता लगाएं.
इनपुट-बाउंड पाइपलाइन का विश्लेषण करने के लिए, इनमें से किसी एक प्रोफ़ाइलर का इस्तेमाल करें:
- JAX के लिए Perfetto
- TensorFlow प्रोफ़ाइल के लिए TensorFlow
कुल मिलाकर, टास्क की वजह से और उसकी वजह से बहुत ज़्यादा काम होता है. बड़े पैमाने पर इंजीनियरिंग से जुड़ी चीज़ों (उदाहरण के लिए, डिस्क फ़ुटप्रिंट को कम करना) से इनपुट पाइपलाइन की परफ़ॉर्मेंस पर असर पड़ सकता है.
इनपुट-बाउंड पाइपलाइन की आम वजहें ये हैं:
- डेटा को ट्रेनिंग की प्रोसेस में शामिल नहीं किया गया है. इस वजह से I/O इंतज़ार का समय बढ़ जाता है. उदाहरण के लिए, किसी नेटवर्क पर ट्रेनिंग डेटा पढ़ने से I/O इंतज़ार का समय जनरेट हो सकता है.
- महंगे ऑनलाइन डेटा की प्री-प्रोसेसिंग. ऑफ़लाइन होने पर प्री-प्रोसेसिंग करें और नतीजों को सेव करें.
- डेटा पाइपलाइन को प्रीफ़ेच करने में रुकावट डालने वाली, अनजाने में आने वाली रुकावटें. उदाहरण के लिए, डिवाइस और होस्ट को CommonLoopUtils के बीच सिंक करते समय.
इनपुट-बाउंड पाइपलाइन के लिए, हम इन तरीकों का इस्तेमाल करने का सुझाव देते हैं:
- उदाहरण डालने के लिए, इंस्ट्रुमेंट इनपुट पाइपलाइन (उदाहरण के लिए, tf.data.Dataset.fetch).
- पाइपलाइन में इस्तेमाल नहीं की गई सुविधाओं और मेटाडेटा को जल्द से जल्द हटाएं.
- इनपुट पाइपलाइन के लिए, उदाहरण के तौर पर दिए गए कामों की संख्या को कॉपी करें. इसके लिए tf.data service का इस्तेमाल करें.
मॉडल की परफ़ॉर्मेंस का आकलन किया जा रहा है
खास जानकारी: ट्रेनिंग के बजाय बड़े साइज़ के बैच में इवैलुएशन करें. नियमित अंतरालों पर नहीं, बल्कि नियमित समय अंतरालों पर मूल्यांकन करें.
इवैलुएशन सेटिंग
मॉडल की परफ़ॉर्मेंस का आकलन करने के लिए, इन सेटिंग का इस्तेमाल किया जा सकता है:
- ऑनलाइन इवैलुएशन: जब मॉडल प्रोडक्शन प्रोडक्शन में अनुमान दिखा रहा हो, तो मेट्रिक इकट्ठा करें. आम तौर पर, ऑनलाइन जांच में मॉडल की क्वालिटी का सबसे वास्तविक आकलन दिया जाता है, क्योंकि यह मॉडल के इस्तेमाल के तरीके से मेल खाता है.
- ऑफ़लाइन इवैलुएशन: जब ऑफ़लाइन ट्रेनिंग, पुष्टि या टेस्ट सेट पर प्रोडक्शन मॉडल चलाया जाए, तो मेट्रिक इकट्ठा करें. समस्या के आधार पर, ऑफ़लाइन होने वाली जांच में कुछ हद तक शामिल किया जा सकता है और यह महंगा हो सकता है.
- समय-समय पर होने वाली इवैलुएशन: मॉडल ट्रेनिंग के दौरान ऐसी मेट्रिक इकट्ठा करें जो ऑफ़लाइन इवैलुएशन के लिए प्रॉक्सी हो सकती हैं और/या ऑफ़लाइन आकलन में इस्तेमाल किए गए डेटा के सबसेट पर हो सकती हैं. समय-समय पर होने वाले इवैलुएशन, सबसे ज़्यादा व्यावहारिक और आर्थिक विकल्प होते हैं, लेकिन हो सकता है कि इनमें प्रोडक्शन का माहौल पूरी तरह से शामिल न हो. ट्रेनिंग के दौरान मिले सिग्नल की विश्वसनीयता से समझौता किए बिना, ऑफ़लाइन आकलन की भरोसेमंद प्रॉक्सी का इस्तेमाल करें.
समय-समय पर जांच करना सेट अप करना
हमारा सुझाव है कि ट्रेनिंग के दौरान, समय-समय पर इन वजहों से आकलन करें:
- रीयल टाइम में ट्रेनिंग की प्रोग्रेस को मॉनिटर करने के लिए.
- रेट्रोस्पेक्टिव मॉडल चेकपॉइंट चुनने में मदद करना.
- ट्रेनिंग के आखिर में ट्रेनिंग कर्व की जांच करने के लिए.
सबसे आसान कॉन्फ़िगरेशन, ट्रेनिंग और समय-समय पर, दोनों का आकलन करने के लिए एक ही कंप्यूट इंस्टेंस की मदद से किया जाता है. ट्रेनिंग और इवैलुएशन के बीच समय-समय पर ऐसा करना पड़ता है. इस मामले में, आकलन करने के लिए इस्तेमाल किए जाने वाले बैच का साइज़, ट्रेनिंग के लिए इस्तेमाल किए जाने वाले बैच के साइज़ से कम होना चाहिए. इसकी वजह यह है कि मूल्यांकन के दौरान आपको मॉडल चालू रखने की ज़रूरत नहीं पड़ती. इससे, हर उदाहरण के लिए कंप्यूटेशनल ज़रूरी शर्तें कम हो जाती हैं.
नियमित अंतराल पर समय-समय पर मूल्यांकन करें, न कि समय अंतराल पर. समय अंतराल के आधार पर आकलन करने से, ट्रेनिंग कर्व को समझना मुश्किल हो सकता है. खास तौर पर तब, जब ट्रेनिंग में काम, प्रीमेट्री, नेटवर्क के इंतज़ार के समय वगैरह से जुड़ी परेशानियां आ सकती हैं.
समय-समय पर पुष्टि और जांच की मेट्रिक में समय-समय पर (इनमें शफ़ल किए गए ट्रेनिंग सेट, पुष्टि सेट, टेस्ट सेट स्प्लिट) का इस्तेमाल किया जाता है. साथ ही, इससे गड़बड़ियों को लागू करने के बारे में पता चल सकता है, जैसे:
- ट्रेनिंग डेटा के साथ ओवरलैप करने वाले टेस्ट डेटा की जांच करें.
- ट्रेनिंग डेटा शफ़ल नहीं किया जा रहा है.
नियमित अंतरालों पर मूल्यांकन करने से, इन समस्याओं को पकड़ना आसान हो सकता है.
आंशिक बैच तब हो सकते हैं, जब मूल्यांकन सेट बैच साइज़ से विभाजित नहीं होते. यह पक्का करें कि पैड किए गए उदाहरणों को सही तरीके से वेट किया गया है (जैसा कि बैच पर औसत नुकसान की गणना करने वाले वेटेड औसत पर बताया जाता है) और उनमें नुकसान के फ़ंक्शन का पक्षपात नहीं किया जाता. आम तौर पर, आप इन पैड किए गए उदाहरणों को शून्य का महत्व दे सकते हैं.
ऑफ़लाइन विश्लेषण का समर्थन करने के लिए प्रति मूल्यांकन में पर्याप्त जानकारी सेव करें. आम तौर पर, अलग-अलग उदाहरणों के आधार पर सुझाव सेव करें, क्योंकि डीबग करने में इनका कोई फ़ायदा नहीं होता. सेव किए गए मॉडल जैसी आर्टफ़ैक्ट जनरेट करने से, इवैलुएशन से जुड़ी नौकरियों के खत्म होने के बाद, ऐड-हॉक मॉडल की जांच करना आसान हो जाता है.
समय-समय पर होने वाले आकलन के लिए कोई सैंपल चुनना
हो सकता है कि समय-समय पर होने वाली इवैलुएशन से जुड़ी नौकरी, इतनी तेज़ी से न चले कि सही समय पर सेट की गई पूरी ऑफ़लाइन इवैलुएशन के दौरान मेट्रिक की गिनती कर ली जाए. समय-समय पर मूल्यांकन के लिए इस समस्या को अक्सर सैंपलिंग डेटा की ज़रूरत होती है. सैंपल वाला डेटासेट बनाते समय, सैंपल के साइज़ और असंतुलित डेटासेट से जुड़ी खास समस्याओं पर विचार करें.
सैंपल का साइज़
पक्का करें कि बार-बार होने वाले जॉब के लिए इस्तेमाल किए गए सैंपल वाले डेटासेट में शामिल परफ़ॉर्मेंस का आकलन, पूरे ऑफ़लाइन इवैलुएशन सेट की परफ़ॉर्मेंस से किया गया हो. इसका मतलब यह पक्का करें कि सैंपल किए गए डेटासेट और पूरे डेटासेट के बीच कोई अंतर न हो.
समय-समय पर होने वाले आकलन के लिए, जिस डेटासेट का इस्तेमाल किया जाता है वह इनमें से कोई एक होना चाहिए:
- मॉडल छोटा है, ताकि आसानी से मॉडल के अनुमान जनरेट किए जा सकें.
- ये दोनों काम करने के लिए काफ़ी हैं:
- मॉडल में सुधार को सही तरीके से मापें. इसका मतलब यह है कि मेज़रमेंट में लेबल का शोर नहीं होना चाहिए.
- क्रम में आने वाले सभी प्रयोगों के लिए कई आकलन शामिल करें और फिर भी सटीक अनुमान दें. इसका मतलब है कि समय के साथ, पुष्टि के लिए सेट किए गए तरीके के हिसाब से "ज़रूरत के हिसाब से" बदलाव से बचा जा सकता है. यह जांच, किसी जांच को होल्ड पर रखे जाने के हिसाब से सामान्य नहीं होती. हालांकि, इस बात पर बहुत कम ध्यान देना ज़रूरी है.
असंतुलित डेटासेट
असंतुष्ट डेटासेट के लिए, दुर्लभ माइनर क्लास में परफ़ॉर्मेंस अक्सर शोर करने वाली होती है. सिर्फ़ कुछ ही अल्पसंख्यकों के उदाहरणों वाले डेटासेट के लिए, सही तरीके से अनुमान लगाए गए उदाहरणों की संख्या को लॉग करें, ताकि सटीक जानकारी को बेहतर बनाया जा सके. उदाहरण के लिए, .05 की संवेदनशीलता में हुई बढ़ोतरी रोमांचक लगती है, लेकिन क्या सिर्फ़ एक और उदाहरण के सही होने की वजह से सुधार हुआ?
चेकपॉइंट सेव किया जा रहा है. साथ ही, चेकपॉइंट को सही तरीके से चुनकर, बेहतरीन चेकपॉइंट चुना जा रहा है
खास जानकारी: पहले से तय कदमों के हिसाब से ट्रेनिंग लें और पीछे की तरफ़ सबसे अच्छे चेकपॉइंट को चुनें.
ज़्यादातर डीप लर्निंग फ़्रेमवर्क, मॉडल चेकपॉइंट की सुविधा का इस्तेमाल करते हैं. इसका मतलब है कि मॉडल की मौजूदा स्थिति समय-समय पर डिस्क में सेव हो जाती है. COVID-19 की जांच के लिए असाइन किए गए टास्क की मदद से, ट्रेनिंग के दौरान दिन में आने वाली रुकावटों का पता लगाया जा सकता है. सबसे अच्छा चेकपॉइंट अक्सर आखिरी चेकपॉइंट नहीं होता, खास तौर पर जब पुष्टि सेट की परफ़ॉर्मेंस समय के साथ बढ़ती नहीं, बल्कि किसी खास वैल्यू में बदलती रहती है.
ट्रेनिंग के दौरान अब तक देखे गए N सबसे सही चेकपॉइंट को ट्रैक करने के लिए, पाइपलाइन सेट अप करें. ट्रेनिंग खत्म होने पर, मॉडल चुनने का मतलब सिर्फ़ सबसे सही चेकपॉइंट चुनना है. हम इस तरीके को सही विकल्प के तौर पर चुनने का सबसे सही तरीका मानते हैं. आम तौर पर, संभावित रूप से, शुरुआत में स्टॉप करने की सुविधा का इस्तेमाल करना ज़रूरी नहीं होता है. ऐसा इसलिए, क्योंकि मुफ़्त में आज़माने की सुविधा के लिए बजट की पहले से जानकारी दी जा रही होती है और अब तक देखे गए सबसे सही चेकपॉइंट को सुरक्षित रखा जाता है.
प्रयोग ट्रैकिंग सेट अप करना
खास जानकारी: अलग-अलग प्रयोग ट्रैक करते समय, कई ज़रूरी चीज़ें ट्रैक करें, जैसे कि स्टडी में चेकपॉइंट का सबसे अच्छा परफ़ॉर्मेंस और स्टडी की छोटी सी जानकारी.
हम एक स्प्रेडशीट में प्रयोग के नतीजों को ट्रैक करने का सुझाव देते हैं. हमारी स्प्रेडशीट में अक्सर ऐसे कॉलम होते हैं:
- अध्ययन का नाम
- स्टडी का कॉन्फ़िगरेशन जहां भी सेव है वहां एक लिंक.
- स्टडी के बारे में जानकारी या नोट.
- ट्रायल की संख्या
- स्टडी में सबसे अच्छे चेकपॉइंट के लिए पुष्टि के सेट पर परफ़ॉर्मेंस.
- ट्रेनिंग लॉन्च करने के लिए, फ़ीड को दोबारा बनाने के खास निर्देश या सबमिट नहीं किए गए बदलावों के बारे में जानकारी देना.
एक आसान ट्रैकिंग सिस्टम ढूंढें जो ऊपर दी गई कम से कम जानकारी कैप्चर करता हो. ट्रैक नहीं किए गए प्रयोग शायद मौजूद न हों.
बैच सामान्यीकरण लागू करने के विवरण
खास जानकारी: आज-कल, आप बैच नॉर्मलाइज़ेशन को लेयरनोर्म से बदल सकते हैं हालांकि, अगर आप इस बदलाव को नहीं कर पा रहे हैं, तो बैच का साइज़ या होस्ट की संख्या बदलते समय मुश्किल की जानकारी दी जाती है.
बैच का नॉर्मलाइज़ेशन मौजूदा बैच पर उनके औसत और बदलाव का इस्तेमाल करके, चालू करने की प्रक्रिया को सामान्य बनाता है. हालांकि, मल्टी-डिवाइस सेटिंग में, ये आंकड़े हर डिवाइस पर तब तक अलग होते हैं, जब तक कि उन्हें साफ़ तौर पर सिंक नहीं किया जाता. छोटी अवधि वाली रिपोर्ट (ज़्यादातर ImageNet पर) से पता चलता है कि सिर्फ़ ~64 उदाहरणों का इस्तेमाल करके सामान्य आंकड़ों की गिनती करने से, यह तरीका ज़्यादा कारगर होता है. ('घोस्ट बैच नॉर्मलाइज़ेशन' के बारे में ज़्यादा जानकारी पाने के लिए लंबे समय तक ट्रेनिंग लें: बेहतर बनाएं, ताकि न्यूरल नेटवर्क की बड़ी बैच ट्रेनिंग में सुधार किया जा सके.) की जानकारी देखें. बैच के साइज़ और कुल बैच के आंकड़ों का हिसाब लगाने के लिए इस्तेमाल किए जाने वाले उदाहरणों की संख्या को अलग करना, बैच के साइज़ की तुलना के लिए खास तौर पर मददगार होता है.
घोस्ट बैच नॉर्मलाइज़ेशन लागू करने का तरीका हमेशा उस मामले में सही नहीं होता है जब हर डिवाइस का बैच साइज़, वर्चुअल बैच साइज़ से ज़्यादा होता है. इस मामले में, आपको बैच नॉर्म स्टैटिस्टिक के उदाहरणों की सही संख्या पाने के लिए, हर डिवाइस पर बैच में सब-सैंपल करना होगा.
टेस्ट मोड के बैच नॉर्मलाइज़ेशन में इस्तेमाल किए जाने वाले एक्स्पोनेंशियल मूविंग ऐवरेज (ईएमए) ट्रेनिंग के आंकड़ों का सिर्फ़ एक ही मेल होते हैं. इसलिए, इन ईएमए को चेकपॉइंट पर सेव करने से पहले उन्हें सिंक करना होगा. हालांकि, बैच में सामान्य बनाने के कुछ सामान्य तरीके, इन ईएमए को सिंक नहीं करते. साथ ही, ईएमए को सिर्फ़ पहले डिवाइस से सेव करते हैं.
मल्टी-होस्ट पाइपलाइन के लिए ज़रूरी बातें
खास जानकारी: लॉगिंग, ईवल्स, आरएनजी, चेकपॉइंट, और डेटा शार्डिंग के लिए, मल्टी-होस्ट ट्रेनिंग की मदद से, गड़बड़ियों को आसानी से समझा जा सकता है!
मल्टी-होस्ट पाइपलाइन के लिए, ये काम करें:
- पक्का करें कि पाइपलाइन सिर्फ़ एक होस्ट पर लॉग इन और चेकपॉइंट करे.
- सभी टेस्टर की मदद से, बैच के लिए नॉर्मलाइज़ेशन के आंकड़े सिंक करें.
- सभी होस्ट में शार्ड की गई डेटा फ़ाइलों से परफ़ॉर्मेंस बेहतर होती है.
अहम जानकारी: पक्का करें कि आपके पास RNG सीड (सीडियन) के ऐसे सीड हों जो सभी होस्ट में एक जैसे हों (मॉडल की शुरुआत करने के लिए) और ऐसे सीड जिनमें सभी होस्ट अलग-अलग हों (डेटा शफ़ल/प्रीप्रोसेसिंग के लिए). इसलिए, उन्हें सही तरीके से मार्क करना न भूलें.