pipeline parallelism
Pipeline parallelism er en distribueret træningsteknik, hvor en model opdeles i sekventielle stadier, der hver behandles af en separat enhed, og data sendes gennem stadierne som i en pipeline.
Kort fortalt
Kort fortalt: man deler en stor model op i flere dele, som kører på forskellige GPU'er, og sender data fra del til del, så flere GPU'er arbejder samtidigt på forskellige dele af modellen.
- Kategori
- teknik
- Niveau
- øvet
- Udtale
- /ˈpaɪpˌlaɪn ˈpɛrəˌlɛlɪzəm/
Betydninger
1- 1
Teknik til distribueret træning af dybe neurale netværk, hvor modellens lag opdeles i sekventielle grupper (stadier), der hver tildeles en separat beregningsenhed (typisk en GPU). Data forarbejdes i mini-batches, der sendes gennem stadierne, så flere enheder beregner samtidigt på forskellige batches.
- Pipeline parallelism reducerer hukommelsesbehovet pr. GPU markant, da hver GPU kun skal gemme en del af modellens parametre. — Litteratur om distribueret træning, 2020
- GPipe og PipeDream er to tidlige systemer, der implementerer pipeline parallelism for store sprogmodeller. — Forskningsartikel, 2019
Hvornår bruges det
Bruges primært ved træning af meget store modeller, der ikke kan være på én GPU. Ved at opdele modellen i stadier kan man udnytte flere GPU'er effektivt, men ulempen er tomgangstid ('bubble') når pipelinen fyldes og tømmes. Kombineres ofte med data- og tensorparallelisme.
Kodeeksempel
import torch
from torch.distributed.pipeline.sync import Pipe
# Define model stages
stage1 = torch.nn.Linear(1024, 512)
stage2 = torch.nn.Linear(512, 256)
stage3 = torch.nn.Linear(256, 10)
# Wrap into Pipe with micro-batches
model = Pipe(torch.nn.Sequential(stage1, stage2, stage3), chunks=4)
# Forward pass (automatically handles pipeline scheduling)
output = model(torch.randn(32, 1024))Eksempel på brug af PyTorchs Pipe-modul til at opsætte pipeline parallelism med tre stadier og 4 mikrobatches.
Oprindelse
Udtrykket er en direkte oversættelse af engelsk 'pipeline parallelism'. 'Pipeline' refererer til den rørledning af data, der strømmer gennem stadierne, og 'parallelism' angiver den samtidige udførelse.
Afledte ord
2Kilder
2- GPipe: Efficient Training of Large Neural Networks using Pipeline Parallelism (Huang et al., 2019)
- PipeDream: Generalized Pipeline Parallelism for DNN Training (Narayanan et al., 2019)