Zubnet AIसीखेंWiki › हाइपरपैरामीटर
प्रशिक्षण

हाइपरपैरामीटर

इसे भी कहा जाता है: प्रशिक्षण हाइपरपैरामीटर
प्रशिक्षण शुरू होने से पहले आप चुने वाले सेटिंग्स जो मॉडल के सीखने के तरीके को नियंत्रित करते हैं — पैरामीटर्स के विपरीत, जिन्हें मॉडल स्वयं सीखता है। हाइपरपैरामीटर्स में लर्निंग रेट (प्रत्येक अपडेट स्टेप कितना बड़ा होता है), बैच साइज (एक साथ कितने उदाहरण प्रोसेस करने हैं), एपोक्स की संख्या (डेटा के कितनी बार चलाना है), ऑप्टिमाइज़र चुनाव (एडम, एसजीडी, एडमडब्ल्यू), वेट डिकेय, ड्रॉपआउट रेट, और आर्किटेक्चर निर्णय जैसे कि लेयर की संख्या और छिपे हुए आयाम होते हैं। हाइपरपैरामीटर्स को सही ढंग से चुनना अक्सर एक मॉडल के बीच अंतर होता है जो सुंदर रूप से अभिसरण करता है और एक जो अर्थहीनता में अपसैद्धि करता है।

यह क्यों मायने रखता है

हाइपरपैरामीटर ट्यूनिंग वह जगह है जहां एमएल इंजीनियरिंग विज्ञान के एक भाग और कला के एक भाग के रूप में बन जाती है। आप पूर्ण डेटासेट और आर्किटेक्चर के साथ रह सकते हैं, लेकिन एक बहुत अधिक लर्निंग रेट ट्रेनिंग को बर्बाद कर देगा और एक बहुत कम लर्निंग रेट कभी भी अभिसार नहीं करेगा। हाइपरपैरामीटर के अनुभव करना किसी भी व्यक्ति के लिए आवश्यक है जो मॉडल के ट्रेनिंग या फाइन-ट्यूनिंग कर रहा है — और जानना कि कौन से सबसे अधिक महत्वपूर्ण हैं, कंप्यूटेशनल संसाधन के अत्यधिक मात्रा को बचाता है।

गहन अध्ययन

तीन hyperparameters हर प्रशिक्षण रन पर हावी होते हैं, और यह समझना कि वे कैसे interact करते हैं default मूल्यों को याद रखने से अधिक महत्वपूर्ण है। Learning rate नियंत्रित करता है कि हर update step पर मॉडल के weights कितना बदलते हैं — बहुत अधिक और loss विस्फोट होता है, बहुत कम और आप एक ऐसे minimum की ओर रेंगते हुए compute बर्बाद करते हैं जिस तक आप कभी नहीं पहुँचेंगे। एक बड़े भाषा मॉडल के pre-training के लिए विशिष्ट मूल्य 1e-4 और 6e-4 के बीच कहीं उतरते हैं, हालाँकि वह सीमा मॉडल आकार और optimizer के आधार पर बदलती है। Batch size निर्धारित करता है कि मॉडल अपने weights update करने से पहले कितने उदाहरण देखता है। बड़े batches अधिक स्थिर gradient अनुमान देते हैं लेकिन अधिक मेमोरी खर्च करते हैं और कभी-कभी सामान्यीकरण को नुकसान पहुँचा सकते हैं। Optimizer — लगभग हमेशा Adam का कुछ variant (AdamW वर्तमान मानक होने के नाते) — तय करता है कि weights को वास्तव में कैसे स्थानांतरित करने के लिए gradient जानकारी का उपयोग किया जाए। AdamW decoupled weight decay जोड़ता है, जो एक regularizer के रूप में कार्य करता है और weights को असीमित रूप से बढ़ने से रोकता है। ये तीनों गहराई से उलझे हुए हैं: अपने batch size को दोगुना करने का अक्सर अर्थ है कि आप अपने learning rate को बढ़ा सकते हैं (linear scaling नियम), और optimizers को बदलने से बदल सकता है कि कौन से learning rates भी स्थिर हैं। आप एक को अलगाव में tune नहीं कर सकते और साफ़ परिणामों की उम्मीद नहीं कर सकते।

Learning rate schedules

एक स्थिर learning rate लगभग कभी सही विकल्प नहीं होता, और यह उन चीज़ों में से एक है जो conventional wisdom की तरह लगती है लेकिन ठोस अनुभवजन्य समर्थन रखती है। अधिकांश सफल प्रशिक्षण रन एक warmup चरण के बाद decay के किसी रूप का उपयोग करते हैं। Warmup learning rate को शून्य के पास से शुरू करता है और इसे पहली कुछ सौ से कुछ हज़ार steps में रैंप करता है — यह randomly initialized मॉडल को कोई उपयोगी संरचना सीखने से पहले विशाल, विनाशकारी gradient steps लेने से रोकता है। Warmup के बाद, cosine decay सबसे लोकप्रिय schedule है: learning rate शेष प्रशिक्षण steps में अपने peak से लगभग शून्य तक एक आधा-cosine curve का अनुसरण करता है। यह मॉडल को एक उत्पादक learning rate पर एक लंबी अवधि देता है उसके बाद एक सौम्य cooldown जो इसे एक अच्छे minimum में बसने में मदद करता है। Linear decay भी काम करता है, लेकिन cosine default बन गया है क्योंकि यह विभिन्न architectures में लगातार समान या बेहतर प्रदर्शन करता है। कुछ हालिया कार्य cyclic schedules और warmup-stable-decay patterns का पता लगाते हैं, लेकिन यदि आप एक नया प्रोजेक्ट शुरू कर रहे हैं और कुछ विश्वसनीय चाहते हैं, तो warmup के साथ cosine decay सुरक्षित दाँव है।

Pre-training बनाम fine-tuning

जो hyperparameters मायने रखते हैं वे नाटकीय रूप से बदलते हैं इस आधार पर कि क्या आप शुरुआत से pre-train कर रहे हैं या एक मौजूदा मॉडल को fine-tune कर रहे हैं। Pre-training एक brute-force मामला है — आप learning rate, batch size, optimizer, और weight decay की परवाह करते हैं क्योंकि आप कुछ नहीं से representations बना रहे हैं। Fine-tuning एक पहले से प्रशिक्षित मस्तिष्क पर सर्जरी है, और नियम तदनुसार बदलते हैं। Learning rates एक परिमाण के क्रम या उससे अधिक से गिरते हैं: जहाँ pre-training 3e-4 का उपयोग कर सकता है, fine-tuning आम तौर पर 1e-5 से 5e-5 का उपयोग करता है, क्योंकि आप मॉडल को धकेलना चाहते हैं, उसे जो वह पहले से जानता है उसे नहीं overwrite करना चाहते। Fine-tuning में epochs की संख्या बहुत अधिक मायने रखती है — डेटा पर एक से तीन passes अक्सर पर्याप्त होते हैं, और आगे जाने से एक छोटे dataset पर catastrophic overfitting का जोखिम होता है। LoRA जैसी parameter-efficient विधियों के साथ, एक नया hyperparameter तस्वीर में प्रवेश करता है: rank, जो नियंत्रित करता है कि adapter में कितनी क्षमता है। Rank 8 से 64 अधिकांश use cases को कवर करता है, उच्च ranks अधिक trainable parameters की लागत पर expressiveness जोड़ते हैं। LoRA अपना खुद का alpha scaling factor भी पेश करता है, और alpha-से-rank अनुपात प्रभावी रूप से adapter के learning rate को नियंत्रित करता है। निष्कर्ष यह है कि fine-tuning में set करने के लिए कम hyperparameters हैं, लेकिन प्रत्येक अधिक संवेदनशील है क्योंकि आप एक ऐसे मॉडल पर operate कर रहे हैं जिसके पहले से ही मज़बूत priors हैं।

Search रणनीतियाँ

Grid search — पूर्वनिर्धारित grid पर मूल्यों के हर संयोजन की कोशिश करना — वह रणनीति है जिसे हर कोई पहले सीखता है और लगभग कोई बड़े पैमाने पर उपयोग नहीं करता। समस्या combinatorial है: पाँच hyperparameters प्रत्येक पाँच मूल्यों के साथ का अर्थ है 3,125 रन, और उन रनों में से अधिकांश space के उबाऊ, redundant क्षेत्रों का पता लगाते हैं। Random search, 2012 में Bergstra और Bengio द्वारा प्रस्तावित, embarrassingly सरल है और लगातार grid search से बेहतर प्रदर्शन करता है: बस उचित distributions से hyperparameter मूल्यों को sample करें और experiments के एक निश्चित बजट को चलाएँ। यह काम करता है क्योंकि सभी hyperparameters समान रूप से मायने नहीं रखते, और random sampling उन लोगों के महत्वपूर्ण मूल्यों को हिट करने की कहीं अधिक संभावना है जो मायने रखते हैं। Random search से परे, Bayesian optimization (Optuna या Weights & Biases Sweeps जैसे tools) यह एक मॉडल बनाता है कि hyperparameters प्रदर्शन को कैसे map करते हैं और तेज़ी से आशाजनक configurations सुझाने के लिए उस मॉडल का उपयोग करता है। Population-based training पूरी तरह से एक अलग दृष्टिकोण लेता है — यह कई प्रशिक्षण jobs को समानांतर में चलाता है, समय-समय पर सबसे अच्छा प्रदर्शन करने वालों के weights को copy करता है, और उनके hyperparameters को mutate करता है, इससे पहले के बजाय प्रशिक्षण के दौरान एक अच्छे configuration को प्रभावी ढंग से evolve करता है। हर रणनीति compute लागत के विरुद्ध exploration दक्षता का व्यापार करती है, लेकिन ईमानदार उत्तर यह है कि उचित बजट के साथ random search आपको 90% रास्ता मिल जाता है।

व्यवसायी का रहस्य

यहाँ वह हिस्सा है जो शायद ही कभी पाठ्यपुस्तकों में आता है: production सिस्टम में अधिकांश hyperparameters पहले सिद्धांतों से व्युत्पन्न नहीं हैं या कठोर खोज के माध्यम से नहीं मिले हैं। वे उन papers से copy किए गए हैं जो समान समस्याओं पर काम करते थे। जब कोई 7B parameter मॉडल को pre-train करता है, तो वे देखते हैं कि LLaMA ने किस learning rate का उपयोग किया, Chinchilla ने किस batch size की सिफ़ारिश की, GPT-3 ने किस weight decay की रिपोर्ट की — और वे वहाँ से शुरू करते हैं। यह आलस्य नहीं है; यह तर्कसंगत है। बड़े मॉडलों के लिए hyperparameter परिदृश्य विशाल है, हर experiment की लागत compute में हज़ारों डॉलर है, और प्रकाशित configurations अच्छी तरह से वित्त पोषित labs द्वारा पहले से किए गए implicit search के सैकड़ों हज़ारों डॉलर का प्रतिनिधित्व करते हैं। Hyperparameter tuning की कला, व्यवहार में, यह जानना है कि किस paper की settings से शुरू करना है, कौन से एक या दो knobs आपकी विशिष्ट स्थिति के लिए समायोजित करने लायक हैं, और कब कुछ इतनी ख़राब तरह से जा रहा है कि आपको tweak करने के बजाय वास्तव में search करने की आवश्यकता है। पहले सिद्धांत यह समझने के लिए मायने रखते हैं कि एक विकल्प क्यों काम करता है, लेकिन सफल पूर्ववर्तियों से copy करना यही है कि कैसे अधिकांश वास्तविक प्रशिक्षण रन उड़ान भरते हैं।

संबंधित अवधारणाएँ

← सभी शब्द
← Hume Ideogram →
ESC