DataParallel के साथ मल्टी-GPU प्रशिक्षण
nn.DataParallel, GPU मेमोरी संतुलन, bandwidth bottlenecks और DDP कब बेहतर होता है।
DataParallel के साथ मल्टी-GPU प्रशिक्षण, CoddyKit पर पाइथन के साथ एआई सीखें का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह पाइथन के साथ एआई सीखें सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। पाइथन के साथ एआई सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
एकाधिक GPU क्यों
आधुनिक मॉडल और बैच एकल GPU की मेमोरी और गणना क्षमता से बड़े हो जाते हैं। एकाधिक GPU का उपयोग करके आप बड़े मॉडल प्रशिक्षित कर सकते हैं या कम वास्तविक समय में बड़े बैच संसाधित कर सकते हैं। PyTorch ऐसा करने के कई तरीके देता है; सबसे सरल तरीका DataParallel है।
डेटा समानांतरता
डेटा समानांतरता प्रत्येक GPU पर मॉडल की एक प्रतिकृति बनाती है और प्रत्येक इनपुट बैच को उनके बीच बाँटती है। प्रत्येक GPU अपने हिस्से पर गणना करता है, फिर सभी प्रतिकृतियों को समकालिक रखने के लिए ग्रेडिएंट को संयोजित किया जाता है।
nn.DataParallel
nn.DataParallel मॉडल को एक ही पंक्ति में लपेटता है। आप उपयोग किए जाने वाले GPU आईडी देते हैं और PyTorch इनपुट को बाँटने तथा आउटपुट एकत्र करने का काम अपने-आप संभालता है।
import torch
import torch.nn as nn
model = MyModel().cuda()
model = nn.DataParallel(model, device_ids=[0, 1])बैच का स्वचालित विभाजन
फॉरवर्ड पास के दौरान DataParallel सूचीबद्ध GPU के बीच बैच को आयाम 0 के आधार पर विभाजित करता है। दो GPU पर 64 का बैच, 32-32 के दो उप-बैचों में बदल जाता है। प्रत्येक GPU अपने उप-बैच पर उसी मॉडल को समानांतर रूप से चलाता है।
# batch of 64 with device_ids=[0, 1]
# GPU 0 processes samples 0..31
# GPU 1 processes samples 32..63ग्रेडिएंट का औसत
बैकवर्ड पास में, प्रत्येक GPU के ग्रेडिएंट को प्राथमिक device पर एकत्र करके औसत किया जाता है (व्यवहार में उनका योग लेकर स्केल किया जाता है), ताकि मॉडल का अपडेट पूरे बैच को प्रतिबिंबित करे। अगले step के लिए प्रतिकृतियों को फिर से समकालिक किया जाता है।
एक सामान्य प्रशिक्षण लूप
सबसे अच्छी बात यह है कि आपका प्रशिक्षण लूप लगभग नहीं बदलता। आप डेटा को प्राथमिक GPU पर भेजकर हमेशा की तरह लिपटे हुए मॉडल को कॉल करते हैं; DataParallel पर्दे के पीछे वितरण संभालता है।
for x, y in loader:
x, y = x.cuda(), y.cuda()
optimizer.zero_grad()
out = model(x) # auto-split across GPUs
loss = criterion(out, y)
loss.backward() # gradients averaged
optimizer.step()GPU 0 का असंतुलन
DataParallel में एक प्रसिद्ध कमी है: प्राथमिक GPU (आमतौर पर GPU 0) सभी आउटपुट एकत्र करके हानि की गणना करता है, इसलिए उस पर अतिरिक्त मेमोरी और गणना का भार पड़ता है। कई GPU होने पर GPU 0 बाधा बन जाता है और अन्य GPU से पहले उसकी मेमोरी समाप्त हो सकती है।
एक प्रक्रिया, अनेक थ्रेड
DataParallel एक एकल Python प्रक्रिया में चलता है और GPU चलाने के लिए थ्रेड का उपयोग करता है। Python का वैश्विक इंटरप्रेटर लॉक तथा बाँटने और एकत्र करने का अतिरिक्त भार स्केलिंग की दक्षता सीमित करते हैं, विशेष रूप से 2 से 4 GPU से अधिक होने पर।
DDP को प्राथमिकता क्यों
इन कारणों से, गंभीर एकाधिक-GPU कार्यों के लिए DistributedDataParallel (DDP) की अनुशंसा की जाती है। DDP प्रत्येक GPU के लिए एक प्रक्रिया चलाता है, कुशल ऑल-रिड्यूस द्वारा ग्रेडिएंट को समकालिक करता है और GPU 0 की बाधा से बचता है, जिससे लगभग रैखिक स्केलिंग मिलती है।
DataParallel कब पर्याप्त है
एक मशीन पर 2 GPU के साथ त्वरित प्रयोगों के लिए DataParallel स्वीकार्य है, जहाँ इसकी एक-पंक्ति वाली सरलता इसकी अक्षमता से अधिक लाभदायक होती है। बहु-नोड प्रशिक्षण या अनेक GPU के लिए इसके बजाय DDP चुनिए।
सामान्य गलती: सेव करना
लिपटे हुए मॉडल के state dict में module. उपसर्ग होता है। साफ़ चेकपॉइंट सेव करने के लिए model.module.state_dict() सेव कीजिए, ताकि बाद में उसे सही ढंग से खुले हुए मॉडल में लोड किया जा सके।
torch.save(model.module.state_dict(), "model.pt")त्वरित जाँच
DataParallel के बारे में अपने ज्ञान की जाँच कीजिए।
पुनरावलोकन
आपने DataParallel के साथ एकाधिक-GPU प्रशिक्षण सीखा:
nn.DataParallel(model, device_ids=[0, 1])मॉडल की प्रतिकृतियाँ बनाता है और बैचों को बाँटता है- प्रत्येक step पर GPU के बीच ग्रेडिएंट का औसत निकाला जाता है
- GPU 0 का असंतुलन और एकल-प्रक्रिया वाली संरचना स्केलिंग को सीमित करते हैं
- अनेक GPU या बहु-नोड प्रशिक्षण के लिए DDP को प्राथमिकता दीजिए
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 53
- पाठ
- 225
अक्सर पूछे जाने वाले प्रश्न
क्या “DataParallel के साथ मल्टी-GPU प्रशिक्षण” पाठ निःशुल्क है?
हाँ — पाइथन के साथ एआई सीखें अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “DataParallel के साथ मल्टी-GPU प्रशिक्षण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। पाइथन के साथ एआई सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“DataParallel के साथ मल्टी-GPU प्रशिक्षण” में मैं क्या सीखूँगा?
nn.DataParallel, GPU मेमोरी संतुलन, bandwidth bottlenecks और DDP कब बेहतर होता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ पाइथन के साथ एआई सीखें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या पाइथन के साथ एआई सीखें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर पाइथन के साथ एआई सीखें शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“DataParallel के साथ मल्टी-GPU प्रशिक्षण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस पाइथन के साथ एआई सीखें पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर पाइथन के साथ एआई सीखें पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- DataParallel के साथ मल्टी-GPU प्रशिक्षण
- DistributedDataParallel (DDP)
- AMP के साथ Mixed Precision प्रशिक्षण
- Hugging Face Accelerate के साथ कुशल प्रशिक्षण