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

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)