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. 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.

Afledte ord

2