În antrenarea distribuită pe mai multe acceleratoare GPU cu DistributedDataParallel (DDP), fiecare GPU rulează un proces independent. Pentru ca fiecare placă să proceseze o fracțiune unică a setului de date fără suprapuneri, se atașează un DistributedSampler la DataLoader.
import torch
from torch.utils.data import DataLoader
from torch.utils.data.distributed import DistributedSampler
sampler = DistributedSampler(
dataset,
num_replicas=torch.distributed.get_world_size(),
rank=torch.distributed.get_rank(),
shuffle=True
)
# shuffle=False în DataLoader când se utilizează sampler
loader = DataLoader(dataset, batch_size=32, sampler=sampler)
# În bucla de antrenare: set_epoch este CRITIC pentru amestecare corectă!
for epoch in range(num_epochs):
sampler.set_epoch(epoch)
for batch in loader:
train_step(batch)
Apelul sampler.set_epoch(epoch) la începutul fiecărei epoci asigură determinarea unei noi permutări pseudo-aleatorii sincronizate între toate nodurile.
Întrebări & Exemple practice:
Partiționarea pe GPU-uri Multiple cu DistributedSamplerAi o întrebare despre Partiționarea pe GPU-uri Multiple cu DistributedSampler sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.