00:00:00यह है डीप स्पीड (DeepSpeed), माइक्रोसॉफ्ट की ओपन-सोर्स लाइब्रेरी जो सीधे पायटॉर्च (PyTorch) से जुड़ जाती है और मेमोरी की असली समस्या को हल करती है।
00:00:07इसकी मदद से आप उन मॉडल्स को भी एक ही GPU पर चला सकते हैं जो आम तौर पर तुरंत क्रैश हो जाते हैं। बड़े मॉडल्स इसलिए फेल नहीं होते क्योंकि वे धीमे हैं।
00:00:14वे फेल होते हैं क्योंकि ऑप्टिमाइज़र स्टेट्स, ग्रेडिएंट्स और पैरामीटर्स आपकी VRAM को भर देते हैं। डीप स्पीड का राज़ है ZeRO, जो ट्रेनिंग स्टेट्स को बांट (shard) देता है।
00:00:23ताकि आप हर जगह एक ही चीज़ को बार-बार स्टोर न कर रहे हों। हमारे नए वीडियो अक्सर आते रहते हैं, तो सब्सक्राइब ज़रूर करें।
00:00:30अब चलिए सीधे शुरू करते हैं और इसे चला कर देखते हैं। मैं इसे गूगल कोलैब (Google Colab) पर चलाऊँगा क्योंकि मैं मैक (Mac) और M4 Pro पर हूँ।
00:00:40तो मेरे पास एनवीडिया (Nvidia) GPU नहीं है, जिससे चीज़ें थोड़ी मुश्किल हो जाती हैं, लेकिन मैं इसे कोलैब पर कर सकता हूँ।
00:00:46सबसे पहले मैं अपने GPU की जांच करूँगा, फिर हम अपने सभी पैकेज इंस्टॉल (pip install) कर सकते हैं।
00:00:51मैं पायटॉर्च, हगिंग फेस और डीप स्पीड जैसे टूल इंस्टॉल करूँगा और फिर आपके CUDA और कंपाइलर सेटअप की जाँच के लिए 'ds_report' चलाऊँगा।
00:00:59कुछ और चीज़ें इंस्टॉल करनी होंगी ताकि सब कुछ आसानी से चले।
00:01:02फिर हम अपनी कॉन्फ़िग JSON फ़ाइल बनाएंगे ताकि डीप स्पीड को कॉन्फ़िगर कर सकें। यह कॉन्फ़िग फ़ाइल ही असली चीज़ है।
00:01:09हम ZeRO स्टेज 2 से शुरू करेंगे, जो ऑप्टिमाइज़र स्टेट्स और ग्रेडिएंट्स को सभी GPU में बाँट देता है।
00:01:14इससे मेमोरी का इस्तेमाल बहुत कम हो जाता है, जबकि मॉडल पैरामीटर्स अपनी जगह बने रहते हैं। इस बारे में ज़्यादा मत सोचिए क्योंकि इसने मुझे भी काफी परेशान किया था।
00:01:22बस आधिकारिक डॉक्यूमेंट्स से शुरू करें, एक बार में एक ही चीज़ बदलें और बिना सोचे-समझे कुछ भी जोड़ने की इच्छा को रोकें।
00:01:28यह कॉन्फ़िग आपको हगिंग फेस और डीप स्पीड दोनों की वेबसाइट पर मिल जाएगी।
00:01:34और मैंने अपनी ज़्यादातर पायथन स्क्रिप्ट भी इन्हीं डॉक्यूमेंट्स से ली है।
00:01:37लेकिन मैंने अपने सिस्टम के हिसाब से इसमें थोड़े बदलाव किए हैं ताकि यह मैक सिस्टम पर बेहतर चल सके।
00:01:42अगर यह स्टेप फेल हो जाए तो यहीं रुक जाइए, क्योंकि डीप स्पीड की ज़्यादातर समस्याएँ CUDA मिसमैच की वजह से होती हैं, आपके मॉडल की वजह से नहीं।
00:01:48अब हम इसे चलाएंगे और देखेंगे कि यह कैसे काम करता है।
00:01:51मैं इस उदाहरण के लिए एक छोटे डेटासेट का इस्तेमाल करूँगा ताकि यह जल्दी काम करने लगे।
00:01:58और देखिए, कुछ ही मिनटों में काम हो गया। हम इसके स्टेप्स और पीक GPU मेमोरी भी देख सकते हैं।
00:02:03हाँ, इस बार ट्रेनिंग लॉस में कोई खास बदलाव या कमी नहीं आई।
00:02:08लेकिन बेहतर लॉस के लिए हम इसे ऑप्टिमाइज़ कर सकते हैं या बड़े डेटासेट का इस्तेमाल कर सकते हैं।
00:02:13यहाँ लोग अक्सर धोखा खा जाते हैं और फिर भी उनकी मेमोरी कम पड़ जाती है।
00:02:16ZeRO अलग-अलग स्टेज में आता है, और हर स्टेज एक सवाल का जवाब देती है: “मुझे एक GPU पर क्या-क्या स्टोर करना बंद कर देना चाहिए?”
00:02:24स्टेज 1 ऑप्टिमाइज़र स्टेट्स को बाँटता है, और स्टेज 2 वही काम ग्रेडिएंट्स के साथ भी करता है।
00:02:30अब आप उन चीज़ों को हटा रहे हैं जो चुपके से आपकी मेमोरी खा जाती हैं। इसके बाद आता है ZeRO स्टेज 3।
00:02:36यह सबसे बड़ा लेवल है। यह ऑप्टिमाइज़र स्टेट्स, ग्रेडिएंट्स और पैरामीटर्स, तीनों को बाँट देता है।
00:02:40इससे मेमोरी की सबसे ज़्यादा बचत होती है, लेकिन शायद यह भी काफी न हो।
00:02:45अगर मॉडल फिर भी फिट नहीं हो रहा, तो ZeRO Infinity इसे CPU या यहाँ तक कि NVMe पर भी ऑफ़लोड कर सकता है।
00:02:50हाँ, यहाँ आप स्केल के बदले थोड़ी स्पीड का त्याग कर रहे हैं। लेकिन कभी-कभी असली जीत मॉडल को किसी भी तरह फिट करने में ही होती है।
00:02:56अब अगर आप सोच रहे हैं कि मेमोरी ही आपकी इकलौती समस्या नहीं है, तो आप सही हैं। डीप स्पीड 3D पैरेललिज्म, पाइपलाइन और टेंसर पैरेललिज्म को भी सपोर्ट करता है।
00:03:04और इसमें 'मिक्सचर ऑफ एक्सपर्ट्स' (MoE) मॉडल्स के लिए इन-बिल्ट सपोर्ट भी है।
00:03:09ताकि स्पार्स (sparse) मॉडल्स आपकी कंप्यूटिंग पावर को ज़्यादा खर्च न करें।
00:03:12अब हमारे पास कई बेहतरीन विकल्प हैं। डीप स्पीड हगिंग फेस और एक्सेलरेट (Accelerate) के साथ बहुत अच्छे से जुड़ जाता है।
00:03:19इसलिए आपको सब कुछ खरोंच से बनाने की ज़रूरत नहीं है।
00:03:21आप बस वही लें जिसकी आपको ज़रूरत है और बाकी को छोड़ दें। अब बेंचमार्क आपके सेटअप पर बहुत निर्भर करते हैं।
00:03:27इसलिए हमेशा बड़े नंबरों पर आँख बंद करके भरोसा न करें। मैंने इसे कई बार चलाने की कोशिश की।
00:03:30लेकिन फिर वही बात, M4 Pro पर होने की वजह से मैं इस बेसिक मॉडल को और ज़्यादा ऑप्टिमाइज़ नहीं कर सका।
00:03:36तो कुछ कहना मुश्किल है, लेकिन दूसरे डीप स्पीड प्रोजेक्ट्स ने थ्रूपुट (throughput) में बड़ी बढ़त दिखाई है।
00:03:41खासकर तब जब मेमोरी एक बड़ी बाधा थी। अगर आप विंडोज़ या लिनक्स पर हैं, तो ये बड़े फायदे दे सकते हैं।
00:03:46तो सबसे सही तरीका यही है कि आप इसे खुद आज़माएँ। आधिकारिक कॉन्फ़िग से शुरुआत करें।
00:03:51मैंने भी यहाँ वही किया, मैक के लिए थोड़ा बदलाव किया और फिर CUDA की समस्याओं को सुलझाया।
00:03:56अगर आप 'ऑफलोड' ऑन करते हैं, तो CPU RAM पर नज़र रखें, और अगर आप आगे चलकर मल्टी-GPU इस्तेमाल करना चाहते हैं।
00:04:01तो 'एक्सेलरेट' उसमें आपकी मदद करेगा। डीप स्पीड असल में एक ऐसा बटन है जो कहता है, “आज मेरी मेमोरी कम नहीं पड़ेगी!”
00:04:07एक बार जब आप ZeRO और ऑफ़लोडिंग को समझ लेते हैं, तो यह बड़े मॉडल्स को सीमित हार्डवेयर पर चलाना संभव बना देता है।
00:04:14लेकिन शुरुआत में इसे सेट अप करना थोड़ा उलझन भरा ज़रूर हो सकता है।
00:04:17अगर इससे आपका GPU समय बचा या आपको ऐसे डेवलपर टूल्स पसंद हैं, तो सब्सक्राइब करें। मिलते हैं अगले वीडियो में!