ग्रेडिएंट संचय एक तकनीक है जिसका उपयोग तंत्रिका नेटवर्क और अन्य मशीन लर्निंग मॉडल, विशेष रूप से डीप लर्निंग में, बड़े बैच आकार के प्रभाव का अनुमान लगाने के लिए किया जाता है, जब मेमोरी की बाधाएं सभी नमूनों को एक साथ संसाधित करने से रोकती हैं। एक बड़े बैच पर एक ही फॉरवर्ड और बैकवर्ड पास में ग्रेडिएंट की गणना करने के बजाय, ऑप्टिमाइज़र कई छोटे मिनी-बैचों पर ग्रेडिएंट जमा करता है और केवल तब वजन अद्यतन करता है जब संचित ग्रेडिएंट वांछित प्रभावी बैच आकार तक पहुंच जाता है। यह दृष्टिकोण चिकित्सकों को बैच आकारों के साथ मॉडल प्रशिक्षित करने की अनुमति देता है जो अन्यथा एकल डिवाइस, जैसे GPU या TPU, की मेमोरी क्षमता से अधिक होते।
यह विधि स्टोकेस्टिक ग्रेडिएंट डिसेंट (SGD) से निकटता से संबंधित है, जो 1950 के दशक में रॉबिंस-मोनरो एल्गोरिदम के माध्यम से पेश किया गया एक पुनरावृत्त अनुकूलन एल्गोरिदम है। SGD में, पूरे डेटासेट पर गणना किए गए उद्देश्य फ़ंक्शन के वास्तविक ग्रेडिएंट का अनुमान डेटा के यादृच्छिक रूप से चयनित उपसमुच्चय पर ग्रेडिएंट द्वारा लगाया जाता है। एक सामान्य समझौता मिनी-बैच दृष्टिकोण है, जहां प्रत्येक चरण में छोटे नमूनों के सेट पर ग्रेडिएंट की गणना की जाती है। ग्रेडिएंट संचय मॉडल मापदंडों को अद्यतन करने से पहले कई मिनी-बैचों पर ग्रेडिएंट का औसत करके इस विचार का विस्तार करता है, प्रभावी रूप से बैच आकार को मेमोरी फुटप्रिंट से अलग करता है।
प्रेरणा और मेमोरी बाधाएं
बड़े मॉडल, जैसे बड़े भाषा मॉडल और ट्रांसफार्मर को प्रशिक्षित करने के लिए सक्रियण, ग्रेडिएंट और ऑप्टिमाइज़र स्टेट्स को संग्रहीत करने के लिए पर्याप्त मेमोरी की आवश्यकता होती है। बैच आकार सीधे मेमोरी खपत को प्रभावित करता है: बड़े बैचों को मध्यवर्ती गणनाओं के लिए अधिक मेमोरी की आवश्यकता होती है। सीमित मेमोरी वाले हार्डवेयर, जैसे उपभोक्ता GPU या एज डिवाइस पर, अधिकतम संभव बैच आकार छोटा हो सकता है। हालांकि, छोटे बैच आकार शोर ग्रेडिएंट अनुमान और अस्थिर प्रशिक्षण गतिशीलता का कारण बन सकते हैं। ग्रेडिएंट संचय फॉरवर्ड और बैकवर्ड पास के लिए छोटे बैचों के उपयोग की अनुमति देकर एक समाधान प्रदान करता है, जबकि कई चरणों में ग्रेडिएंट जमा करके एक बड़ा प्रभावी बैच आकार प्राप्त करता है, जिससे शिखर मेमोरी उपयोग में वृद्धि किए बिना ग्रेडिएंट स्थिरता में सुधार होता है।
ग्रेडिएंट संचय कैसे काम करता है
मानक मिनी-बैच प्रशिक्षण में, मॉडल आकार \(b\) के मिनी-बैच को संसाधित करता है, हानि की गणना करता है, ग्रेडिएंट प्राप्त करने के लिए बैकप्रोपेगेशन करता है, और तुरंत SGD या Adam जैसे ऑप्टिमाइज़र का उपयोग करके वजन अद्यतन करता है। ग्रेडिएंट संचय के साथ, प्रक्रिया संशोधित की जाती है: मॉडल \(k\) मिनी-बैचों को क्रमिक रूप से संसाधित करता है, प्रत्येक बैकवर्ड पास के बाद ग्रेडिएंट जमा करता है (आमतौर पर योग या औसत द्वारा)। \(k\) चरणों के बाद, संचित ग्रेडिएंट का उपयोग मॉडल वजन को अद्यतन करने के लिए किया जाता है, और ग्रेडिएंट संचायक को शून्य पर रीसेट कर दिया जाता है। प्रभावी बैच आकार \(k \times b\) है। यह दृष्टिकोण गणितीय रूप से \(k \times b\) के बैच आकार के साथ प्रशिक्षण के बराबर है जब हानि फ़ंक्शन नमूनों पर योग या औसत होता है, बशर्ते कि बैच नॉर्मलाइज़ेशन परतों को सावधानी से संभाला जाए।
लाभ और उपयोग के मामले
ग्रेडिएंट संचय व्यापक रूप से उन परिदृश्यों में उपयोग किया जाता है जहां बड़े बैच आकार फायदेमंद होते हैं लेकिन मेमोरी सीमाओं के कारण असंभव होते हैं। उदाहरण के लिए, जनरेटिव मॉडल को प्रशिक्षित करना या बड़े भाषा मॉडल को फाइन-ट्यून करना अक्सर प्रशिक्षण को स्थिर करने और अभिसरण में सुधार करने के लिए सैकड़ों या हजारों के बैच आकार की आवश्यकता होती है। ग्रेडिएंट जमा करके, शोधकर्ता सीमित मेमोरी वाले हार्डवेयर, जैसे एकल GPU या CPU-आधारित सिस्टम पर इन बड़े बैचों का अनुकरण कर सकते हैं। इसके अतिरिक्त, ग्रेडिएंट संचय प्रत्येक चरण में ग्रेडिएंट को सिंक्रनाइज़ किए बिना कई उपकरणों में प्रशिक्षण सक्षम करता है, जो वितरित प्रशिक्षण में संचार ओवरहेड को कम कर सकता है। यह विशेष रूप से अमेज़न वेब सर्विसेज, माइक्रोसॉफ्ट एज़्योर, और गूगल क्लाउड जैसे क्लाउड-आधारित प्लेटफार्मों के लिए प्रासंगिक है, जो अलग-अलग मेमोरी क्षमताओं वाले GPU इंस्टेंस प्रदान करते हैं।
बैच आकार और सीखने की दर से संबंध
ग्रेडिएंट संचय का उपयोग करते समय, प्रभावी बैच आकार बढ़ जाता है, जिसके लिए अक्सर सीखने की दर को समायोजित करने की आवश्यकता होती है। व्यवहार में, एक सामान्य अनुमान बैच आकार के साथ सीखने की दर को रैखिक रूप से स्केल करना है, जैसा कि बड़े-बैच प्रशिक्षण पर पिछले शोध में सुझाया गया है। हालांकि, इष्टतम स्केलिंग मॉडल आर्किटेक्चर, ऑप्टिमाइज़र और डेटासेट पर निर्भर करती है। ग्रेडिएंट संचय प्रति वजन अद्यतन देखे गए नमूनों की संख्या को नहीं बदलता है; यह केवल ग्रेडिएंट को एकत्र करने के तरीके को बदलता है। इसलिए, प्रभावी बैच आकार बढ़ने पर प्रशिक्षण चरणों की कुल संख्या घट जाती है, जो अभिसरण गति और अंतिम प्रदर्शन को प्रभावित कर सकती है। चिकित्सकों को वास्तविक बड़े-बैच प्रशिक्षण के बराबर परिणाम प्राप्त करने के लिए सीखने की दर और संचय चरणों को ट्यून करना चाहिए।
कार्यान्वयन संबंधी विचार
ग्रेडिएंट संचय को लागू करने में प्रशिक्षण लूप को संशोधित करना शामिल है। प्रत्येक फॉरवर्ड और बैकवर्ड पास के बाद, ग्रेडिएंट मॉडल के ग्रेडिएंट बफर में जमा होते हैं (उदाहरण के लिए, PyTorch के accumulate_grad या TensorFlow के GradientTape का उपयोग करके स्थायी चर के साथ)। ऑप्टिमाइज़र चरण केवल वांछित संख्या में संचय चरणों के बाद किया जाता है। हानि को उचित रूप से स्केल करना महत्वपूर्ण है: यदि हानि मिनी-बैच पर औसत है, तो संचित ग्रेडिएंट को सही ग्रेडिएंट परिमाण बनाए रखने के लिए संचय चरणों की संख्या से विभाजित किया जाना चाहिए। वैकल्पिक रूप से, यदि हानि का योग है, तो कोई स्केलिंग आवश्यक नहीं है। इसके अतिरिक्त, बैच नॉर्मलाइज़ेशन परतों को विशेष ध्यान देने की आवश्यकता होती है क्योंकि वे वर्तमान मिनी-बैच पर आंकड़ों की गणना करते हैं। ग्रेडिएंट संचय के साथ, नॉर्मलाइज़ेशन के लिए प्रभावी बैच आकार अभी भी मिनी-बैच आकार है, जो वास्तविक बड़े-बैच प्रशिक्षण की तुलना में अलग व्यवहार का कारण बन सकता है। कुछ फ्रेमवर्क डिवाइसों में सिंक्रनाइज़ बैच नॉर्मलाइज़ेशन के माध्यम से इसका स्वचालित संचालन प्रदान करते हैं।
अन्य तकनीकों के साथ तुलना
ग्रेडिएंट संचय की तुलना अक्सर ग्रेडिएंट चेकपॉइंटिंग से की जाती है, जो बैकप्रोपेगेशन के दौरान सक्रियणों की पुनर्गणना करके मेमोरी को कम करता है, और मिश्रित-परिशुद्धता प्रशिक्षण से, जो कम-परिशुद्धता अंकगणित का उपयोग करके मेमोरी को कम करता है। इन तकनीकों को जोड़ा जा सकता है: उदाहरण के लिए, मिश्रित परिशुद्धता के साथ ग्रेडिएंट संचय का उपयोग और भी बड़े प्रभावी बैच आकार को प्रशिक्षित करने की अनुमति देता है। कई GPU में वितरित प्रशिक्षण के विपरीत, ग्रेडिएंट संचय को उपकरणों के बीच संचार की आवश्यकता नहीं होती है, जिससे इसे लागू करना सरल हो जाता है और सिंक्रनाइज़ेशन ओवरहेड की संभावना कम होती है। हालांकि, यह अनुक्रमिक चरणों की संख्या बढ़ाता है, जो प्रशिक्षण को धीमा कर सकता है यदि मिनी-बैच आकार बहुत छोटा है और कई बैकवर्ड पास का ओवरहेड महत्वपूर्ण है।
सीमाएं और विकल्प
ग्रेडिएंट संचय वास्तविक बड़े-बैच प्रशिक्षण का पूर्ण विकल्प नहीं है। ग्रेडिएंट अनुमान विभिन्न मिनी-बैचों से गणना किए जाते हैं, जो डेटा शफलिंग और बैच नॉर्मलाइज़ेशन आंकड़ों के कारण मामूली अंतर पेश कर सकते हैं। कुछ मामलों में, यह अलग अभिसरण व्यवहार का कारण बन सकता है। विकल्पों में बड़े मेमोरी डिवाइस, जैसे सीरेब्रास सिस्टम या ग्रॉक एक्सेलेरेटर का उपयोग शामिल है, जो उच्च मेमोरी बैंडविड्थ और क्षमता प्रदान करते हैं, या बैच को उपकरणों में वितरित करने के लिए मॉडल समानांतरता और पाइपलाइन समानांतरता का उपयोग करना शामिल है। इसके अतिरिक्त, कुछ ऑप्टिमाइज़र, जैसे LAMB या LARS, बड़े बैच आकार को सीधे संभालने के लिए डिज़ाइन किए गए हैं, जो संभावित रूप से संचय की आवश्यकता को कम करते हैं।
ऐतिहासिक संदर्भ और अपनाना
कई मिनी-बैचों पर ग्रेडिएंट जमा करने की अवधारणा आधुनिक डीप लर्निंग से पहले की है, जिसकी जड़ें 1980 के दशक के "बंच-मोड बैक-प्रोपेगेशन एल्गोरिदम" में हैं। यह 2010 के दशक में प्रमुखता प्राप्त की क्योंकि डीप लर्निंग मॉडल आकार में बढ़ गए और मेमोरी बाधाएं एक बाधा बन गईं। आज, ग्रेडिएंट संचय प्रमुख डीप लर्निंग फ्रेमवर्क, जिसमें PyTorch, TensorFlow और JAX शामिल हैं, में एक मानक सुविधा है, और ओपनएआई, एंथ्रोपिक, और गूगल डीपमाइंड जैसे संगठनों में अत्याधुनिक मॉडलों को प्रशिक्षित करने में व्यापक रूप से उपयोग किया जाता है। यह अनुसंधान और उत्पादन वातावरण में एक सामान्य तकनीक है, विशेष रूप से सीमित हार्डवेयर पर बड़े मॉडलों को फाइन-ट्यून करने के लिए।
निष्कर्ष
ग्रेडिएंट संचय मेमोरी बाधाओं के तहत बड़े मॉडलों को प्रशिक्षित करने के लिए एक व्यावहारिक और व्यापक रूप से अपनाई गई तकनीक है। कई मिनी-बैचों पर ग्रेडिएंट जमा करके, यह आनुपातिक मेमोरी वृद्धि की आवश्यकता के बिना बड़े बैच आकारों के अनुकरण को सक्षम करता है। हालांकि यह कुछ ओवरहेड पेश करता है और सीखने की दर और नॉर्मलाइज़ेशन परतों के सावधानीपूर्वक ट्यूनिंग की आवश्यकता होती है, यह डीप लर्निंग चिकित्सक के टूलकिट में एक आवश्यक उपकरण बना हुआ है, विशेष रूप से बड़े पैमाने पर प्रशिक्षण और फाइन-ट्यूनिंग कार्यों के लिए।