DistributedDataParallel की मूल बातें
Multi-GPU training का मानक तरीका
DistributedDataParallel की मूल बातें, CoddyKit पर Deep Learning Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Deep Learning Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Deep Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
DDP से परिचित हों
DistributedDataParallel, या DDP, PyTorch का multi-GPU training के लिए मुख्य tool है। यह हर GPU के लिए एक process चलाता है और हर model copy को sync रखता है।
हर GPU के लिए एक Process
पुराने DataParallel से अलग, DDP प्रत्येक GPU के लिए अलग process शुरू करता है। इससे Python का GIL बाधा नहीं बनता और scaling अधिक सुचारु होती है।
Rank और World Size
हर process को एक rank (उसकी id) मिलती है और वह world size (कुल processes) साझा करता है। आम तौर पर rank 0 ही logging और saving करता है।
import torch.distributed as dist
rank = dist.get_rank()
world = dist.get_world_size()Process Group प्रारंभ करें
किसी भी communication से पहले init_process_group कॉल करें। GPUs के लिए nccl backend तेज़ विकल्प है।
import torch.distributed as dist
dist.init_process_group(backend="nccl")हर Process को एक GPU दें
device सेट करने के लिए local rank का उपयोग करें, ताकि हर process के पास ठीक एक GPU हो। इससे सारा काम एक ही card पर जमा नहीं होता।
import torch
torch.cuda.set_device(local_rank)
model = model.to(local_rank)अपने Model को Wrap करें
मुख्य बात केवल एक line है: अपने model को DDP में wrap करें। इसके बाद backward pass के दौरान gradients अपने-आप sync होते हैं।
from torch.nn.parallel import DistributedDataParallel as DDP
model = DDP(model, device_ids=[local_rank])Gradients अपने-आप Sync होते हैं
backward() के दौरान DDP GPUs में gradients का औसत निकालने के लिए all-reduce करता है। आप सामान्य training code लिखते हैं और वह अपने-आप sync रहता है। ✨
DistributedSampler का उपयोग करें
हर GPU को अलग data दिखाने के लिए अपने DataLoader को DistributedSampler दें। यह हर process को dataset का एक-दूसरे से न मिलने वाला हिस्सा देता है।
from torch.utils.data.distributed import DistributedSampler
sampler = DistributedSampler(dataset)हर Epoch में फिर से Shuffle करें
हर epoch की शुरुआत में sampler.set_epoch(epoch) कॉल करें। इसके बिना हर GPU एक ही तरह से reshuffle करेगा और वास्तविक shuffling का लाभ नहीं मिलेगा।
for epoch in range(epochs):
sampler.set_epoch(epoch)
train_one_epoch()केवल Rank 0 पर Save करें
सभी copies समान होती हैं, इसलिए checkpoint केवल rank 0 से लें। हर process से save करने पर वही file कई बार लिखी जाएगी।
if rank == 0:
torch.save(model.module.state_dict(), "ckpt.pt")अंत में सफ़ाई करें
Training पूरी होने पर destroy_process_group कॉल करें, ताकि group सही ढंग से release हो और processes अटकें नहीं।
import torch.distributed as dist
dist.destroy_process_group()त्वरित जाँच
सोचें कि DDP model copies को sync कैसे रखता है।
पुनरावृत्ति
आपने DDP सेट अप कर लिया है: प्रक्रिया समूह शुरू किया, मॉडल को रैप किया, उसे DistributedSampler दिया और केवल रैंक 0 से सेव किया। ग्रेडिएंट अपने-आप सिंक हो जाते हैं।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “DistributedDataParallel की मूल बातें” पाठ निःशुल्क है?
हाँ—“DistributedDataParallel की मूल बातें” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Deep Learning Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Deep Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“DistributedDataParallel की मूल बातें” में मैं क्या सीखूँगा?
Multi-GPU training का मानक तरीका आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Deep Learning Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Deep Learning Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Deep Learning Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“DistributedDataParallel की मूल बातें” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Deep Learning Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Deep Learning Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Data बनाम Model Parallelism
- DistributedDataParallel की मूल बातें
- Sync Batch Norm और Sharded State
- torchrun के साथ Jobs लॉन्च करें