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

2
micro-batchpipeline-bubble

Kilder

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)

Se også