De basis van DistributedDataParallel
De standaardroute voor training met meerdere GPU's.
De basis van DistributedDataParallel is een gratis Deep Learning Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Deep Learning Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Deep Learning Academy bevat in totaal 4 lessen.
Maak kennis met DDP
DistributedDataParallel, of DDP, is PyTorch's standaardtool voor training met meerdere GPU's. Het voert één proces per GPU uit en houdt alle modelkopieën synchroon.
Eén proces per GPU
In tegenstelling tot het oudere DataParallel start DDP een afzonderlijk proces voor elke GPU. Dit omzeilt Python's GIL en schaalt veel beter.
Rank en world size
Elk proces krijgt een rank (de id ervan) en deelt de world size (het totale aantal processen). Rank 0 is meestal het proces dat logt en opslaat.
import torch.distributed as dist
rank = dist.get_rank()
world = dist.get_world_size()Initialiseer de process group
Voordat er communicatie plaatsvindt, roep je init_process_group aan. De nccl-backend is de snelste keuze voor GPU's.
import torch.distributed as dist
dist.init_process_group(backend="nccl")Koppel elk proces aan een GPU
Gebruik de lokale rank om het apparaat in te stellen, zodat elk proces precies één GPU beheert. Zo stapelt het werk zich niet op één kaart op.
import torch
torch.cuda.set_device(local_rank)
model = model.to(local_rank)Wikkel je model in
De truc is één regel: wikkel je model in DDP. Vanaf dat moment worden gradients tijdens de backward-pass automatisch gesynchroniseerd.
from torch.nn.parallel import DistributedDataParallel as DDP
model = DDP(model, device_ids=[local_rank])Gradients synchroniseren vanzelf
Tijdens backward() voert DDP een all-reduce uit om gradients over de GPU's te middelen. Je schrijft normale trainingscode en alles blijft vanzelf synchroon. ✨
Gebruik een DistributedSampler
Geef je DataLoader een DistributedSampler, zodat elke GPU andere data ziet. Die geeft elk proces een niet-overlappend deel van de dataset.
from torch.utils.data.distributed import DistributedSampler
sampler = DistributedSampler(dataset)Herschik bij elk tijdperk
Roep bovenaan elk tijdperk sampler.set_epoch(epoch) aan. Zonder deze aanroep herschikt elke GPU de data op dezelfde manier en verlies je echte shuffling.
for epoch in range(epochs):
sampler.set_epoch(epoch)
train_one_epoch()Sla alleen op bij rank 0
Alle kopieën zijn identiek, dus maak alleen bij rank 0 een checkpoint. Als elk proces opslaat, wordt hetzelfde bestand alleen maar meerdere keren geschreven.
if rank == 0:
torch.save(model.module.state_dict(), "ckpt.pt")Ruim aan het einde op
Roep na afloop van de training destroy_process_group aan om de process group netjes vrij te geven en vastlopende processen te voorkomen.
import torch.distributed as dist
dist.destroy_process_group()Snelle controle
Denk na over hoe DDP de kopieën synchroon houdt.
Samenvatting
Je hebt DDP ingesteld: initialiseer de procesgroep, wikkel het model erin, geef het een DistributedSampler en sla op vanaf rank 0. Gradiënten worden automatisch gesynchroniseerd.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “De basis van DistributedDataParallel” gratis?
Ja — de volledige tekst van “De basis van DistributedDataParallel” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Deep Learning Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Deep Learning Academy bevat in totaal 4 lessen.
Wat leer ik in “De basis van DistributedDataParallel”?
De standaardroute voor training met meerdere GPU's. Je oefent met Deep Learning Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Deep Learning Academy te beginnen?
Ervaring vooraf is niet nodig. Deep Learning Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “De basis van DistributedDataParallel”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Deep Learning Academy?
Ja. Elke les over Deep Learning Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Data- versus modelparallelisme
- De basis van DistributedDataParallel
- Gesynchroniseerde batchnorm en geshardede state
- Jobs starten met torchrun