ट्रेनिंग वर्कलोड दो तरह के होते हैं:
- कंप्यूट-बाउंड
- कंप्यूट बाइंड नहीं है
कंप्यूट-बाउंड ट्रेनिंग, ट्रेनिंग में लगने वाले समय पर निर्भर करती है, न कि उस ट्रेनिंग डेटा या किसी अन्य वजह से. दूसरे शब्दों में, ट्रेनिंग में "सबसे बेहतर" समय तब तक रहता है, जब तक "आपके पास इसे खर्च करने का विकल्प होता है." किसी तरह तैयारी करके, आप लंबे या ज़्यादा समय के लिए ट्रेनिंग में देरी कर सकते हैं. (सही ट्यूनिंग के साथ, पुष्टि करने की सुविधा में गिरावट भी आनी चाहिए.)
सीमित कंप्यूट-बाउंड ट्रेनिंग को तेज़ करना, ट्रेनिंग को बेहतर बनाने के जैसा ही है. इसलिए, अगर वर्कलोड को कंप्यूट-सीमित करने की सुविधा दी जा रही है, तो इसका मतलब यह नहीं है कि परफ़ॉर्मेंस को बेहतर बनाने के लिए, ज़्यादा समय या फटाफट ट्रेनिंग लेना ही एक विकल्प है.
ट्रेनिंग की अवधि सीमित न होने पर, जब तक चाहें, ट्रेनिंग दी जा सकती है. हालांकि, हो सकता है कि मॉडल को ज़्यादा समय तक ट्रेनिंग देने से ज़्यादा मदद न मिले या ज़्यादा फ़िट होने लगे. जब ट्रेनिंग, कंप्यूट-बाउंड मोड के लिए नहीं होती है:
- आप ट्रेनिंग के स्तर को बहुत कम होने पर भी ट्रेनिंग दे सकते हैं. इसकी वजह यह हो सकती है कि अतिरिक्त ट्रेनिंग की वजह से ट्रेनिंग में थोड़ी कमी आ सकती है, लेकिन पुष्टि का नुकसान काफ़ी कम हो सकता है.
- खास तौर पर लर्निंग रेट में समय का नुकसान होने पर, यह आसानी से सेट हो सकता है. इसकी वजह यह है कि इन ट्रेनिंग का बजट के साथ खास तौर पर अच्छा इंटरैक्शन होता है. इसके उलट, कंप्यूट-बाउंड ट्रेनिंग पर कम ट्रेनिंग मिलने के बावजूद, हो सकता है कि लर्निंग रेट का नुकसान करने के लिए, शेड्यूल पूरा करना पड़े.
इस बात पर ध्यान दिए बिना कि दिया गया वर्कलोड कंप्यूट-बाउंड है या नहीं, आम तौर पर ग्रेडिएंट के अंतर को बढ़ाने वाले तरीके {0/} इनमें से कोई भी इसकी वजह से ग्रेडिएंट की संख्या में ज़्यादा बदलाव हो सकता है:
- छोटे बैच का इस्तेमाल करना.
- डेटा वृद्धि जोड़ना.
- नियमित बनाने के कुछ प्रकार जोड़ना (उदाहरण के लिए, साइट को नियमित करने के लिए हटाना).
तय करें कि ट्रेनिंग को कब तक कंप्यूट-बाउंड नहीं करना है
आपका लक्ष्य: ट्रेनिंग के चरणों को बर्बाद किए बिना मॉडल को सबसे अच्छे नतीजे तक पहुंचाने के लिए काफ़ी देर तक ट्रेन करना.
आपका मुख्य लक्ष्य यह है कि आप ट्रेनिंग के बेवजह के कदम को बर्बाद किए बिना मॉडल को सबसे अच्छे नतीजे तक पहुंचने के लिए काफ़ी समय तक ट्रेनिंग दें. समझ में न आने पर, ट्रेनिंग में ज़्यादा समय न लगाएं. अगर आपको ट्रेनिंग में ज़्यादा समय लगेगा, तो आपके आकलन वाली मेट्रिक (उदाहरण के लिए, सटीक, याद रखना, AUC या F1) को कभी भी गिरावट नहीं लेनी चाहिए. यह मानते हुए कि आपने रेट्रोस्पेक्टिव चेकपॉइंट को सही तरीके से इस्तेमाल किया है और ज़रूरत पड़ने पर चेकपॉइंट की जांच की है.
स्टडी में शामिल max_train_steps
नंबर को कभी भी ट्यून न करें. इसके बजाय, कोई मान चुनें और
सभी ट्रायल के लिए उसी मान का इस्तेमाल करें. इन ट्रायल से, ट्रेनिंग के चरण तय करें. इससे, max_train_steps
की पसंद को बेहतर बनाने के लिए, पहले से चेकपॉइंट चुनने की सुविधा मिलती है.
उदाहरण के लिए, अगर ट्रेनिंग के पहले 10% हिस्से में सबसे अच्छा कदम रखा जाता है, तो सबसे ज़्यादा चरण बहुत ज़्यादा हैं.
इसके अलावा, अगर ट्रेनिंग का आखिरी 25% हिस्सा लगातार सबसे अच्छा है,
तो आपको लंबे समय तक ट्रेनिंग करने और समय के नुकसान को वापस पाने से फ़ायदा हो सकता है.
आर्किटेक्चर या डेटा के बदलने पर (उदाहरण के लिए, डेटा में बढ़ोतरी करके) ट्रेनिंग के चरणों की सही संख्या बदली जा सकती है.
अगले सेक्शन में, max_train_steps
के लिए, उम्मीदवारों की शुरुआती वैल्यू चुनने का तरीका बताया गया है. इसमें यह बताया गया है कि ट्रेनिंग के लिए सेट किए गए रेट के हिसाब से, "पूरी तरह से फ़िट" होने के लिए, ज़रूरी चरणों की संख्या कितनी है.
अगर ट्रेनिंग की प्रोसेस में कोई सुधार होता है, तो max_train_steps
को कम किया जा सकता है. उदाहरण के लिए, बेहतर ऑप्टिमाइज़ किए गए ऑप्टिमाइज़र या बेहतर लर्निंग रेट के शेड्यूल के हिसाब से.
एल्गोरिदम, लर्निंग रेट स्वीप का इस्तेमाल करके max_train_step में शुरुआती उम्मीदवार चुनने के लिए
लर्निंग रेट स्वीप एल्गोरिदम की मदद से, max_train_steps
के लिए
शुरुआती उम्मीदवार चुना जा सकता है. नीचे दिया गया एल्गोरिदम यह मानता है कि ट्रेनिंग सेट के मुताबिक "न सिर्फ़ सही" है, बल्कि लगातार सीखने की दर वाले शेड्यूल का इस्तेमाल करके भी ऐसा किया जा सकता है.
- अगर पूरे ट्रेनिंग सेट में पूरी तरह से फ़िट होना मुमकिन है,
तो ट्रेनिंग कॉन्फ़िगरेशन
max_train_steps
की वैल्यू के साथ ऐसा कॉन्फ़िगरेशन होना ज़रूरी है जो ट्रेनिंग सेट के लिए पूरी तरह सही हो. ऐसा कोई कॉन्फ़िगरेशन ढूंढें और उसकी वैल्यूmax_train_steps
को शुरुआती पॉइंटN
के तौर पर इस्तेमाल करें. - डेटा को बेहतर बनाने और
नियमित करने के बिना, सीखने-सिखाने की लगातार दर स्वीप (यानी, ग्रिड सर्च से सीखने की दर)
को चलाएं. हर ट्रायल के लिए,
N
चरणों के लिए ट्रेनिंग होगी.max_train_steps
.
ध्यान दें: गलत खोज स्पेस का इस्तेमाल करने से, खुद को गुमराह किया जा सकता है.
उदाहरण के लिए, अगर स्टडी में सभी लर्निंग रेट बहुत कम हैं, तो हो सकता है कि आप गलत तरीके से यह समझ पाएं कि max_train_steps
की बहुत बड़ी वैल्यू की ज़रूरत है.
कम से कम यह जांचें कि स्टडी में सबसे सही लर्निंग रेट, खोज स्पेस की सीमा पर न हो.
तय करें कि ट्रेनिंग के लिए, कब तक ट्रेनिंग ज़रूरी है
कुछ मामलों में, ट्रेनिंग में होने वाले नुकसान से अनिश्चित समय के लिए सुधार होता रहता है. इसलिए, आपके कंपेटेशन और कंप्यूटेशनल रिसॉर्स सीमित तौर पर इस्तेमाल किए जाते हैं. लेकिन क्या आपको ज़्यादा से ज़्यादा समय से ट्रेनिंग लेनी चाहिए? ऐसा ज़रूरी नहीं है. नीचे दी गई चीज़ों पर विचार करें:
- बड़ी संख्या में छोटे प्रयोग चलाकर, ज़्यादा बेहतर तरीके से ट्यून किया जा सकता है. इससे, आपको "मॉडल की लंबाई" को तय मॉडल के साथ ज़्यादा से ज़्यादा सुरक्षित रखने की सुविधा मिलती है.
- ट्रायल के लिए प्रशिक्षण का समय आपके धैर्य की सीमा पर पहुंच गया है, इसलिए ट्यूनिंग प्रयोग आपके संभावित लॉन्च के उम्मीदवारों के लिए ज़्यादा प्रासंगिक हो जाते हैं, लेकिन आप उनमें से कुछ को पूरा कर सकते हैं.
- हो सकता है कि आप प्रोडक्शन के दौरान सिर्फ़ ~10% समय की ट्रेनिंग के दौरान कई सवालों के जवाब दे सकें. हालांकि, हो सकता है कि इस समयसीमा के नतीजे 70% प्रोडक्शन पर प्रयोगों पर लागू न हों. हालांकि, 100% पर ही फ़ैसला लिया जा सकता है.
हर राउंड में होने वाली ट्रेनिंग की चरण सीमा को बढ़ाने के साथ-साथ, कई राउंड के दौरान ट्यूनिंग करना एक सही तरीका है. आप जितने चाहें उतने राउंड चला सकते हैं. हालांकि, आम तौर पर एक से तीन राउंड सबसे ज़्यादा कारगर होते हैं. हालांकि, इन ज़रूरी शर्तों को पूरा करने के साथ ही, जल्द से जल्द इस अहम जानकारी को हल करने की कोशिश करें और इन चीज़ों के बारे में सोचें:
- ट्यूनिंग.
- आखिरी, सबसे लंबी दौड़ के लिए प्रासंगिकता.
दी गई हर ट्रायल की समयसीमा पर, काम की इनसाइट जनरेट होने के बाद, ट्रेनिंग का समय बढ़ाएं और ट्यूनिंग जारी रखें. ज़रूरत पड़ने पर, छोटे रन से अपने नतीजों की फिर से जांच करें. शुरुआत में, हम आपको दो तरह की ट्यूनिंग करने का सुझाव देते हैं:
- पहला चरण: कम अवधि में अच्छे मॉडल और ऑप्टिमाइज़र हाइपरपैरामीटर का पता लगाया जाता है.
- दूसरा चरण: फ़ाइनल मॉडल बनाने के लिए, बहुत कम समय तक अच्छे हाइपरपैरामीटर पॉइंट का इस्तेमाल किया जाता है.
पहले राउंड से दूसरे राउंड तक का सबसे बड़ा सवाल है:
सीखने की दर के नुकसान के शेड्यूल को कैसे अडजस्ट किया जाए.
राउंड के बीच लर्निंग रेट के शेड्यूल में बदलाव करते समय एक आम समस्या होती है. यह सीखने के लिए उन सभी अतिरिक्त चरणों का इस्तेमाल करता है जो बहुत छोटे होते हैं.
पहला चरण: बहुत कम समय के लिए ट्रेनिंग ली गई है
माफ़ करें, इस बात की कोई गारंटी नहीं है कि छोटे और अधूरे ट्रेनिंग से जुड़े अच्छे हाइपरपैरामीटर अब भी अच्छे विकल्प होंगे. ऐसा तब होता है, जब ट्रेनिंग की अवधि बढ़ाई जाती है. हालांकि, कुछ हाइपरपैरामीटर के लिए सही विकल्प अक्सर उपयोगी हो जाते हैं, ताकि पहला राउंड कारगर साबित हो. कम अवधि की ट्रेनिंग में मिले हाइपरपैरामीटर वैल्यू, जो लंबे समय तक की जाने वाली ट्रेनिंग में ट्रांसफ़र होती हैं? हमें नहीं पता. हमें और रिसर्च करने की ज़रूरत है. यहां दी गई जानकारी के आधार पर, यहां बताया गया है कि डेटा ट्रांसफ़र करने की संभावना कम है या नहीं:
- ट्रांसफ़र होने की बहुत संभावना है. शुरुआती ट्रेनिंग को कम करने के लिए, पहले चरण में ट्यूनिंग की जा सकती है. इसके लिए, कम ट्रेनिंग वाले चरणों का इस्तेमाल किया जाता है.
हो सकता है कि ये हाइपरपैरामीटर ट्रांसफ़र कर दिए जाएं:
- वॉर्मअप की लंबाई
- डेटा लेयर में इवेंट बनाने की प्रोसेस
- ट्रांसफ़र होने की संभावना है. आम तौर पर, मॉडल आर्किटेक्चर में कोई बड़ा बदलाव होता है, लेकिन कई उदाहरण हो सकते हैं.
- ट्रांसफ़र हो सकता है. ये हाइपरपैरामीटर ट्रांसफ़र हो सकते हैं:
- ऑप्टिमाइज़ेशन एल्गोरिदम और हाइपरपैरामीटर "कम रफ़्तार से" ट्रांसफ़र होंगे.
- डेटा बढ़ोतरी.
- नियमित करना. अगर {0/}
- ट्रांसफ़र नहीं हो सकता. लर्निंग रेट का शेड्यूल पूरी तरह से ट्रांसफ़र नहीं होता है. कंप्यूट-इफ़िशल बड़ी भाषा मॉडल की ट्रेनिंग से यह पता चलता है कि डिके शेड्यूल के लिए ट्रांसफ़र भी हो सकता है. हालांकि, हमें नहीं लगता कि यह सही है. उदाहरण के लिए, कम संख्या में ट्रेनिंग के चरणों में sqrt डिके को ट्यून करने और फिर बड़ी संख्या में बढ़ाने से, ज़्यादातर ट्रेनिंग बहुत छोटे चरणों में होती है. अगर आपको सबसे ज़्यादा ट्रेनिंग बजट की सीमा में सबसे ज़्यादा शेड्यूल बनाने हैं, तो "अच्छी परफ़ॉर्मेंस" दिख सकती है. हालांकि, इसे बेहतर बनाने पर, आपको इसमें अहम सुधार दिख सकते हैं. स्टोकास्टिक मेटा-ऑप्टिमाइज़ेशन में शॉर्ट-हॉरिज़ॉन्टल बायस को समझना, लर्निंग रेट को भूल से चुनने की कोशिश करने के खतरों के बारे में बताता है.
दूसरा राउंड: कम दौड़, लेकिन लंबी अवधि वाला
राउंड 1 से सबसे बेहतर हाइपरपैरामीटर कॉन्फ़िगरेशन चलाएं.
अनुमान: 📢 ट्रेनिंग की अवधि को बढ़ाने के लिए, ज़्यादा चरणों का इस्तेमाल करके
ज़्यादा लर्निंग रेट पर जाएं. उदाहरण के लिए, अगर लीनियर शेड्यूल का इस्तेमाल किया जा रहा है, तो नुकसान के समय को पहले राउंड से तय करके रखें और शुरुआत में lr
के कॉन्सटेंट की अवधि को बढ़ाएं. कोसाइन के नुकसान के लिए, पहले चरण से lr
के बेस आईडी को रखें और max_train_steps
को
ट्रेनिंग-ऑप्टिमाइज़ की गई बड़ी भाषा के मॉडल में बताए गए तरीके से आगे बढ़ाएं.
अतिरिक्त राउंड की टीमें, इन टीमों के लिए नीचे दी गई बातों को समझ सकती हैं:
- बेहद वयस्क मॉडलिंग
- ट्यूनिंग पाइपलाइन
- प्रोडक्शन ट्रेनिंग की बहुत लंबी और महंगी ट्रेनिंग
हालांकि, प्रशिक्षण के दौरान ज़्यादा नतीजे अक्सर बेकार ही होते हैं.
हमने पहले ही राउंड 1 से राउंड 2 में ट्रांसफ़र करने के तरीके को बताया है. अगर आपके लिए विश्लेषण का समय मायने नहीं रखता और अगर कंप्यूटिंग से जुड़े संसाधनों का बेहतर इस्तेमाल करना आपकी चिंता है, तो हमारा सुझाव है कि आप ट्रेनिंग में लगने वाले समय को तेज़ी से बढ़ाएं. साथ ही, ट्यूनिंग के अलग-अलग राउंड में अपनी स्टडी पूरी करें.
- हर राउंड में, व्यवस्थित तौर पर यह पक्का करें कि आपके चुने हुए विकल्प अच्छे नतीजे देते रहें.
- ऐसे पाइपलाइन से नए आइडिया लें जो पहले चरण से लेकर चरण i+1 तक, लंबे समय से चल रहे प्रयोगों का इस्तेमाल करके उन्हें धीरे-धीरे नुकसान पहुंचाते हैं.