Data parallelism
Data parallelism er en distribueringsteknik, hvor en model kopieres til flere enheder, og hver enhed trænes på en delmængde af data, mens gradienter synkroniseres.
Kort fortalt
Forestil dig, at du har mange kopier af den samme model på forskellige computere, og hver computer lærer fra sin egen bunke data – så samler I jeres erfaringer for at forbedre modellen.
- Kategori
- teknik
- Niveau
- øvet
- Udtale
- ˈdɛːta pʰɑʁɑleˈlismə
Betydninger
1- 1
En teknik inden for distribueret træning, hvor en model replikeres på tværs af flere beregningsenheder, og hver enhed trænes på en anden del af dataene, hvorefter gradienter aggregeres for at opdatere alle kopier ensartet.
- Ved hjælp af data parallelism kan vi træne en stor sprogmodel på 64 GPU'er ved at opdele træningsdata i 64 dele.
- I PyTorch implementeres data parallelism typisk med DataParallel eller DistributedDataParallel.
Hvornår bruges det
Data parallelism anvendes i praksis til at accelerere træning af store neurale netværk på tværs af flere GPU'er eller TPU'er. Hver enhed holder en fuld modelkopi, og efter hvert batch udveksles gradienter via all-reduce-kommunikation. Det er standard i frameworks som PyTorch DDP og TensorFlow MirroredStrategy.
Kodeeksempel
import torch
import torch.distributed as dist
import torch.nn as nn
from torch.nn.parallel import DistributedDataParallel as DDP
model = nn.Linear(10, 10).cuda()
ddp_model = DDP(model)
for data, target in dataloader:
output = ddp_model(data.cuda())
loss = loss_fn(output, target.cuda())
loss.backward()
optimizer.step()Eksempel på brug af DistributedDataParallel i PyTorch.
Oprindelse
Termen stammer fra parallel computing, hvor 'data parallelism' beskriver en form for parallelisme baseret på opdeling af data snarere end opgaver.