Distribuované školenie v roku 2026: DDP, FSDP2, DeepSpeed, Megatron a päť osí paralelizmu
Keď máte v krabici viac ako jednu GPU, musíte sa rozhodnúť. Distribuovanému tréningu dnes dominujú štyri open-source balíčky – PyTorch DDP, PyTorch FSDP2, Microsoft DeepSpeed a NVIDIA Megatron-Core – ku ktorým sa pridal TorchTitan ako nová referencia pre rozsiahle tréningy s natívnym PyTorch. Každý z nich rieši iný problém. Výber nesprávneho balíčka stráca týždne: buď model nesedí a zistíte to v kroku 30 s haváriou kvôli nedostatku pamäte, alebo ste prepracovali systém na záťaž, ktorú by DDP zvládol za desatinu inžinierskeho času.
Tento článok predstavuje pohľad kupujúceho a architekta na distribuované trénovanie. Prechádza piatimi osami paralelizmu, štyrmi (teraz piatimi) frameworkami, ktoré ich kombinujú, a receptami, ktoré skutočne fungujú na hardvéri triedy Kentino – predovšetkým na 4× a 8× RTX 5090, 4090 a RTX Pro 6000 Blackwell na hostiteľoch AMD EPYC s PCIe Gen5 a komoditným Ethernetom alebo InfiniBand medzi uzlami. Úprimná pointa je na začiatku, takže zvyšok článku ju nemusí stále dokazovať: väčšina zákazníkov Kentina dolaďuje, nie predtrénuje, a FSDP2 na jednom uzle s 8 GPU zvláda 90 % potrieb jemného doladenia. Megatron-Core a 3D paralelizmus si zaslúžia svoje miesto iba vtedy, keď predtrénujete od nuly nad stupnicou 30B, a to je oveľa menší klub, ako naznačuje marketing.
Päť osí
Každý moderný rámec pre distribuované trénovanie pozostáva z nejakej podmnožiny rovnakých piatich osí paralelizmu. Nie sú to alternatívy – recepty veľkých modelov kombinujú tri alebo štyri naraz. Prečítajte si stĺpec o komunikácii; to je celá hra.
| Os | Čo sa delí | Komunikácia podľa kroku | Máte vysoké nároky na šírku pásma? | Poznámky |
|---|---|---|---|---|
| Paralelné dáta (DP) | Dávka – každá hodnosť má kompletný model | Úplná redukcia prechodov raz za krok | Stredne | Základná línia; DDP a FSDP, obidva DP |
| Tenzorová rovnobežka (TP) | Matmul každej vrstvy naprieč GPU | Úplné zníženie na vrstvu × 2 (pozor + FFN) | Veľmi ťažký | Miluje NVLink; trpí na PCIe |
| Paralelné potrubie (PP) | Vrstvy rozdelené medzi etapy | Aktivácia na hranici štádia | svetlý | Zvyšuje latenciu bublín a priepustnosť |
| Paralela sekvencie/kontextu (SP/CP) | Dimenzia sekvencie naprieč GPU | Zvoňte všetky KV / aktivácie | Stredne ťažké | Umožňuje trénovanie miliónov tokenov |
| Expertný paralelný (EP) | Experti ministerstva životného prostredia naprieč grafickými procesormi | Všetky pre každú vrstvu MoE | Ťažký výbuch | Iba MH |
DP kričí raz za krok. TP kričí dvakrát za krok. vrstvaPP šepká raz za úroveň. SP/CP kričí raz za blok pozornosti, ale pozdĺž inej dimenzie. EP vykonáva komunikáciu všetkých so všetkými iba na vrstvách aktívnych v MoE. Tento jeden stĺpec určuje, kde sa každá os nachádza – vo vnútri rýchleho boxu alebo cez pomalšiu štruktúru.
„3D paralelizmus“, ktorý sa objavuje v každom blogu spoločnosti NVIDIA, je DP × TP × PPPridajte SP a EP a vznikne 4D alebo 5D, čo je skôr hra s notáciami než architektonická zmena. Dôležité je rozloženie: TP vo vnútri uzla (kde je šírka pásma lacná), PP medzi uzlami (kde je šírka pásma drahá), DP navrchu pre škálovanie priepustnosti. SP sa umiestňuje vedľa TP; EP sa vzťahuje iba na MoE.
Krížové odkazy: tenzorovo paralelná šírka pásma v rámci uzla je rozbalená v K07, penalizácia NVLink verzus PCIe v N03a medziuzlovú tkaninu v N08.
DDP – keď model vyhovuje a chcete len vyššiu priepustnosť
PyTorch DDP (DistributedDataParallel) je najstaršia, najjednoduchšia a stále správna odpoveď, keď sa model zmestí na jeden GPU. Každá hodnosť obsahuje úplnú kópiu modelu a stavu optimalizátora. Každý krok, každá hodnosť vykonáva vlastný výpočet dopredu, dozadu a gradientu vo svojej vlastnej mikrodávke. Potom jedna all-reduce sčíta gradienty naprieč hodnosťami a všetci aplikujú rovnakú aktualizáciu.
DDP v PyTorch 2.x je rovnaký DDP ako vždy, s dvoma vylepšeniami, ktoré stoja za zmienku: robustnejší static_graph=True cesta pre grafy priateľské k kompilátoru a užšia integrácia s torch.compileKomunikačný vzorec sa nemení – jedna úplná redukcia na krok, prekrývanie so spätným chodom, lineárne škálovanie, kým úplná redukcia nedominuje.
Keď je DDP správna odpoveď:
- Celý model + stavy optimalizátora + aktivácie sa zmestia na jeden GPU. Pre optimalizátory typu Adam s hlavnými váhami FP32 platí pravidlo... približne 16 bajtov na parameter pamäte len pre trénovateľný stav (4 bajty váh, 4 bajty gradientov, 8 bajtov optimalizátora) plus aktivácie. 8B model = 128 GB stavu, čo sa zmestí len na jednu RTX Pro 6000 Blackwell (96 GB) so zmiešanou presnosťou a hlavnými váhami BF16. Pod 8B parametrami je DDP pohodlný na jednej 5090; nad ňou sa pozrite na FSDP2.
- Chcete maximálnu priepustnosť, nie maximálnu veľkosť modelu. DDP má najnižší pomer komunikácie k výpočtu zo všetkých paralelných dátových prístupov, pretože gradienty sú znížené. naraz za krok, po všetkej lokálnej spätnej práci.
- Robíte zavádzanie posilňovacieho učenia, LoRA alebo akékoľvek nastavenie, kde každá hodnosť má malý trénovateľný adaptér nad zmrazenými základnými váhami.
Keď je DDP nesprávny: model nesedí. Oprava nie je „menšia dávka“. Oprava je FSDP2.
torchrun --standalone --nproc-per-node=8 train.py
To je celý launcher. DDP je nudný predvolený program, na ktorý všetci zabúdajú, a pre správne pracovné zaťaženie je to najrýchlejšia vec, akú môžete spustiť.
FSDP2 – nové predvolené nastavenie pre všetko, čo DDP nedokáže spracovať
FSDP (Fully Shared Data Parallel) rozdeľuje parametre modelu, gradienty a stavy optimalizátora v rámci skupiny paralelných dát. Každý GPU ukladá 1/N parametrov. Na vykonanie dopredného prechodu zhromažďuje hodnosť všetky údaje vo vrstve, ktorú aktuálne potrebuje, spustí výpočet a zahodí zhromaždené váhy. Pamäť klesne približne N-násobne v porovnaní s DDP; komunikácia sa zvýši, pretože každá vrstva sa zhromažďuje a znova zhromažďuje.
Príbeh z roku 2025 je FSDP2Pôvodný FSDP (FSDP1) zabalil skupiny parametrov do jedného FlatParameter, čo znemožnilo alebo sťažilo uvažovanie o správaní jednotlivých parametrov – čiastočné zmrazenie, zmiešané dtypy, nastavenia optimalizátora podľa parametrov. FSDP2 prepísal interné mechanizmy nad rámec DTensor: každý tenzor zostáva reálnym torch.Tensor ktorý je rozdelený pozdĺž svojho dim-0 naprieč rankami. Používateľské API sa zmenilo z FSDP(model, ...) na fully_shard(model, ...).
Čo FSDP2 v skutočnosti ponúka oproti FSDP1, na základe publikovaných benchmarkov a našich vlastných testov:
-
~7 % menej pamäte GPU na Llama 2 7B pri rovnakej konfigurácii, pretože FSDP2 sa vyhýba
record_streamvzor, ktorý pesimisticky pripútal pamäť. -
~1.5% nárast priepustnosti pri paritea do 50% zrýchlenie priepustnosti v kombinácii s
torch.compileatorchaoTréning float8 na hardvéri triedy Hopper. - Sharded state diktáty, ktoré sa rýchlo načítavajú a čisto sa znovu shardujú v rôznych rozloženiach paralelizmu – formát kontrolných bodov FSDP1 bol známy svojou ťažkou transformáciou medzi trénovaním a inferenciou.
- Čiastočné zmrazenie parametrov bez akrobacie, čo je dôležité pre LoRA a tréning adaptérov.
FSDP1 je zastarané od verzie PyTorch 2.11Nová práca by mala používať fully_shard, Starý FullyShardedDataParallel Balíček stále existuje kvôli kompatibilite, ale je na ceste k jeho odstráneniu.
FSDP2 tiež odhaľuje dve stratégie delenia, ktoré rozhodujú o tom, kde sa model nachádza:
- Plný črep. Parametre sú plne rozdelené naprieč všetkými rankami (predvolená hodnota FSDP1). Najnižšia pamäť, najvyššia komunikácia.
- Hybridný črep. Parametre rozdelené v uzol a replikované medzi uzlami. Vnútri uzla prebieha komunikácia cez PCIe/NVLink (rýchla). Medzi uzlami prechádza pomalou štruktúrou iba gradient all-reduce. Toto je ideálna poloha pre 2–4 uzly na 100/200 Gbps Ethernet/IB.
Keď je FSDP2 správnou odpoveďou (modálny prípad Kentina):
- Jemné doladenie 8B–70B na jednom uzle s 8 GPU. Kompletný shard, BF16, zapnuté kontrolné stanovenie gradientu.
torch.compile, Hotový. - Jemné doladenie 70B–405B naprieč 2–4 uzlami. Hybridný shard s plným shardom vo vnútri každého uzla, replikovaný naprieč.
- Čokoľvek LoRA / QLoRA – FSDP2 v spracovaní čiastočných parametrov jednoznačne prekonáva FSDP1.
from torch.distributed.fsdp import fully_shard, MixedPrecisionPolicy
mp = MixedPrecisionPolicy(param_dtype=torch.bfloat16, reduce_dtype=torch.float32)
for block in model.transformer_blocks:
fully_shard(block, mp_policy=mp)
fully_shard(model, mp_policy=mp)
Spustené rovnakým spôsobom ako DDP, prostredníctvom torchrunJediné, čo sa zmení, je obal.
DeepSpeed a úrovne ZeRO – stále dostupné, už nie predvolené
DeepSpeed je distribuovaný tréningový balík od spoločnosti Microsoft. Jeho sláva spočívala v Nula (Zero Redundancy Optimizer), ktorý vznikol roky pred FSDP a definoval moderný prístup shard-everything.
| Úroveň | Čo je shardované | Úspora pamäte vs. DDP | Komunikácia verzus DDP |
|---|---|---|---|
| ZeRO-1 | Stavy optimalizátora | ~4× | Rovnaký |
| ZeRO-2 | Stavy optimalizátora + gradienty | ~8× | O niečo viac |
| ZeRO-3 | Stavy optimalizátora + gradienty + parametre | Lineárne v N | ~1.5× DDP |
ZeRO-3 je architektonicky ekvivalentný full-shardu FSDP. Riešia rovnaký problém s rovnakými komunikačnými primitívami.
Realita v rokoch 2025 – 2026: FSDP2 zjedol DeepSpeed obed v prípade použitia hustého LLM. PyTorch natívny, bez dodatočných balíkov, integrovaný s torch.compile, rovnaký recept sa portuje naprieč hrami Hugging Face Transformers, Accelerate a TorchTitan. Interné benchmarky od Lightning a Hugging Face ukazujú, že full-shard FSDP beží v niektorých nastaveniach 2–5× rýchlejšie na iteráciu ako ZeRO-3, hoci DeepSpeed u veľmi veľkých modelov (10B+) zaostáva za konkurenciou, kde sú jeho cesty odľahčenia CPU a NVMe stále skutočne užitočné.
O DeepSpeed sa oplatí vedieť z troch dôvodov:
- Zero-Infinity offload. Ak musíte doladiť model, ktorý sa vôbec nezmestí do agregovanej pamäte GPU – povedzme základňu s 405B pamäťou na 4× RTX Pro 6000 Blackwell boxe – DeepSpeed dokáže presunúť parametre do RAM CPU (lacné, pomalé) a do NVMe (lacnejšie, oveľa pomalšie). FSDP má tiež presunutie CPU, ale cesta DeepSpeed k NVMe je zrelšia. Užitočné pre prípad „mám jeden stroj a tvrdohlavý model“; nie je to správna odpoveď, ak si môžete prenajať alebo kúpiť druhý uzol.
- Paralelizmus sekvencií DeepSpeed-Ulysses. Komunikačne efektívna sekvenčne paralelná schéma, ktorá využíva all-to-all namiesto all-gather metódy zvonenia pre upútanie pozornosti. V publikovanej práci z roku 2025 demonštrovala až 1 milión kontextov tokenov na 64 A100 a trénovala Llama-8B na 15 miliónoch tokenov kontextu na 32 H100. Ak sa konkrétne zameriavate na trénovanie veľmi dlhých kontextov, Ulysses je pre niektoré tvary stále pred kontextovo paralelnou implementáciou Megatron.
- DeepSpeed-MoE. Školenie so zmiešanou skupinou expertov s paralelným školením s expertmi. Menej relevantné pre dolaďovanie, veľmi relevantné, ak predškolíte ministerstvo životného prostredia.
Pre väčšinu dolaďovania zákazníkov Kentina je správnym riešením FSDP2, pokiaľ nemáte konkrétny dôvod siahnuť po DeepSpeed (dlhý kontext, odľahčenie CPU/NVMe, predtréning MoE). Hybnosť ekosystému jednoznačne smeruje k FSDP2.
Megatron-LM, Megatron-Core, NeMo — kde žije ťažké železo
Megatron vznikol ako tenzorovo-paralelný transformátorový papier spoločnosti NVIDIA v roku 2019. Dnes má táto rodina tri vrstvy:
- Megatron-LM — pôvodná výskumná kódová základňa. Stále používaná; stále aktualizovaná.
- Megatron-Core — modulárna verzia knižnice. Skladateľné stavebné bloky pre architektúry TP/PP/DP/EP/CP, zmiešanej presnosti (FP16/BF16/FP8/FP4) a referenčných transformátorov. Vec, ktorú skutočne integrujete.
- NVIDIA NeMo — komplexný framework postavený na Megatron-Core. Recepty, dátové kanály, zarovnanie, nasadenie.
Megatron-Core je framework, ktorý vyhráva na samom vrchole, najmä preto, že implementuje tenzorový paralelizmus, pipeline paralelizmus, sekvenčný paralelizmus, kontextový paralelizmus a expertný paralelizmus v jednej kompozovateľnej sieti. Keď trénujete model s hustotou 405B na 512+ GPU, nemôžete sa vyhnúť kombinácii aspoň troch z nich a Megatron-Core je najpoužívanejšia a najtestovanejšia kombinácia.
Pokyny pre paralelizmus Megatronu pre rok 2026 z vlastnej dokumentácie spoločnosti NVIDIA sú v súlade s hardvérovou realitou:
| technické vybavenie | Odporúčané primárne osi |
|---|---|
| Jeden uzol, NVLink | TP až 8 v rámci uzla |
| Viaceré uzly, InfiniBand NDR | TP v rámci uzla, PP medzi uzlami |
| Obmedzená sieť (Ethernet) | Minimalizovať TP, uprednostniť PP pre medziuzlové prenosy |
| Dlhé sekvencie | Pridať CP; povoliť SP všade, kde je zapnutý TP |
Táto tabuľka vám povie, prečo existuje Megatron. Je to framework, ktorého autori žijú s matematikou šírky pásma, ktorú popisujeme v... N03 a K07a jeho recepty sú pre to vyladené.
Kde je Megatron prehnaný: akékoľvek doladenie jedného uzla, akýkoľvek model, ktorý sa zmestí do pamäte kompatibilnej s FSDP2, akékoľvek zaťaženie, kde nepotrebujete TP. TP zariadenia od Megatronu sú skutočne rýchlejšie ako DIY TP na PCIe, ale TP na PCIe sú stále pomalé – pozri čísla K07. Silnou stránkou Megatronu je hardvér SXM, ktorý Kentino nevyrába.
Kde je Megatron tou správnou odpoveďou: predtrénovanie modelov s hustotou 70B – 405B+ na prenajatom alebo vlastnenom hardvéri triedy NVLink alebo budovanie infraštruktúry pre trénovanie produkcie pre výskumné laboratórium. Ak ste to vy, pravdepodobne už ste v ekosystéme NeMo.
TorchTitan — nová referencia
TorchTitan je rozsiahly trénerský referenčný program od Mety, natívny pre PyTorch, prijatý na ICLR 2025 a teraz de facto príkladom pre otázku „ako by mal vyzerať recept TP × PP × FSDP2 × CP v roku 2026?“. Nevymýšľa nový paralelizmus – skladá sa zo stavebných blokov, ktoré PyTorch už dodáva (fully_shard, torch.distributed.tensor.parallel, pipelining, DTensor) do čistého, štvorrozmerného paralelného trénovacieho skriptu s asynchrónnym segmentovaným kontrolným bodom, torch.compilea float8.
Prečo je to dôležité, aj keď to priamo nepoužívate:
- Jedná sa o kanonický príklad o tom, ako FSDP2 komponuje s TP a PP bez frameworku tretej strany.
- Tie isté API rozhrania sú dodávané aj v PyTorch. Nie je v tom nič magické.
- Spoločnosť AMD koncom roka 2025 dodala optimalizovaný fork TorchTitan pre ROCm; partnerstvo s Lightning AI oznámené v októbri 2025 umožňuje spustenie receptov TorchTitan v Lightning Studios.
Pre zákazníkov triedy Kentino je TorchTitan viac referenčným materiálom na čítanie než len frameworkom na nasadenie. Ak ladíte, Accelerate alebo Axolotl sú ergonomickejšie ako FSDP2. Ak predtrénujete v malom rozsahu (8 – 64 GPU) na bežnom hardvéri, TorchTitan je konkurencieschopný s NeMo a je oveľa menej prevádzkovo náročný.
Rámcová matica
| Rámec | Rovnobežnosť osí | Udržiavané? | Najlepšie pre |
|---|---|---|---|
| PyTorch DDP | DP | Áno, stabilný | Model je vhodný pre každý GPU; maximálna priepustnosť |
| PyTorch FSDP1 | DP (rozdelené) | Zastarané 2.11 | Nezačínaj tu |
| PyTorch FSDP2 | DP (zdrojené), skladá sa s TP/PP/CP | Áno, aktívne | Odpoveď na doladenie modálneho systému v roku 2026 |
| DeepSpeed Zero | DP (zdrojené), odľahčenie CPU/NVMe | Áno, aktívne | Veľmi dlhý kontext s vysokými nárokmi na odľahčenie (Ulysses), MoE |
| Megatron-Core / NeMo | TP, PP, SP, CP, EP, DP | Áno, veľmi aktívny | 70+ predtréningových dát, klastre SXM/NVLink |
| TorchTitan | FSDP2 + TP + PP + CP + float8 | Áno, referencia | Moderné predtrénovanie na natívnom stacku PyTorch |
| HF zrýchlenie | Obal okolo DDP/FSDP/DS | Áno, aktívne | Jednoduchý spúšťač, abstrahuje backend |
| Axolotl | Obal okolo Accelerate/FSDP | Áno, aktívne | Jemné doladenie, súbory údajov, recepty pre LoRA/QLoRA |
Accelerate a Axolotl nie sú samostatné stratégie paralelizmu – obalujú vyššie uvedené backendy. Väčšina zákazníkov, ktorí ladia Kentino, nakoniec použije Axolotl namiesto FSDP2 bez toho, aby o tom premýšľali, a to je správne.
Komunikačný rozpočet – prečo vaša sieť obmedzuje model
Krížová referencia: N08 prechádza RDMA a matematickými výpočtami uplinku; toto je pohľad špecifický pre tréning.
Pri paralelnom prenose dát (DDP alebo FSDP) je medziúrovňová komunikácia na krok zhruba úmerná počet parametrov (gradienty, ktoré sa majú znížiť). Pre tenzorové rovnobežky je to úmerné aktivačná veľkosť × počet vrstiev — rádovo väčšie na krok.
Objem gradientu podľa empirického pravidla pre jeden krok pri BF16:
| Veľkosť modelu | Gradient bajtov/krok | Úplne znížený čas pri 25 GB/s (trieda NDR HDR) | Pri rýchlosti 12.5 GB/s (100 GbE) |
|---|---|---|---|
| 8B | 16 GB | ~ 0.6 s | ~ 1.3 s |
| 70B | 140 GB | ~ 5.6 s | ~ 11 s |
| 405B | 810 GB | ~ 32 s | ~ 65 s |
Samotné zníženie prenosovej kapacity 70B trvá 5.6 sekundy na sieti s rýchlosťou 200 Gb/s. Ak váš výpočet dopredu aj dozadu v jednom kroku trvá tiež 5 sekúnd, ste už naviazaní na komunikáciu na 50 %; ak výpočet trvá 2 sekundy, ste na sieti nečinní na viac ako 70 %. Preto 100 GbE obmedzuje tréning 70B+ a potrebujete 400 GbE / NDR IB. Výpočty sú stále rýchlejšie; sieť musí držať krok, inak sú grafické karty nečinné.
FSDP2 časť z toho skryje prekrytím (začne zhromažďovať ďalšiu vrstvu počas výpočtu aktuálnej). Hybridný shard skryje viac tým, že zachováva stúpanie all-reduce vo vnútri rýchlej vnútrouzlovej štruktúry a redukcia iba replikovaných gradientov naprieč uzlami. Vyššie uvedené čísla sú najhorší prípad pre full-shard FSDP naprieč uzlami bez prekrývania.
V prípade tenzorových paralelných operácií sa komunikácia medzi jednotlivými tokenmi škáluje podľa skrytej veľkosti a počtu vrstiev. Čísla v K07 ukážte prečo: ~80 MB na vygenerovaný token počas dekódovania, ~300 GB na predbežné naplnenie na 70B v dávke 32. Toto je režim, kde je PCIe (realistických 50 GB/s) zhruba 14× pomalšie ako NVLink (realistických 700+ GB/s) a kde predtrénovanie modelu s hustotou 70B+ na PCIe jednoducho nefunguje s prijateľnou efektivitou.
Skutočné recepty
8B Llama jemné doladenie, jeden uzol s 8 GPU — FSDP2
Hardvér: 8× RTX 5090 alebo 8× RTX Pro 6000 Blackwell, hostiteľ EPYC, nie je potrebná žiadna medziuzlová štruktúra.
torchrun --standalone --nproc-per-node=8 \
finetune.py \
--model meta-llama/Llama-3.1-8B \
--batch-size 1 --grad-accum 16 --seq-len 4096 \
--bf16 --fsdp full_shard --fsdp-reshard-after-forward \
--gradient-checkpointing --torch-compile
Očakávané: ~2000 tok/s agregát pri BF16, pohodlne sa hodí pre KV/aktivácie, full-shard FSDP2 cez PCIe Gen5 zvláda gradient all-reduce vo vnútri boxu. Takto vyzerá aj 90 % úloh dolaďovania Kentina.
70B Llama jemné doladenie, 2× 8-GPU uzly — hybridný shard FSDP2
Hardvér: 2× 8× RTX Pro 6000 Blackwell, 200 Gbps IB alebo 100 GbE RoCE medzi uzlami.
torchrun --nnodes=2 --nproc-per-node=8 \
--rdzv-backend=c10d --rdzv-endpoint=node0:29500 \
finetune.py \
--model meta-llama/Llama-3.3-70B \
--batch-size 1 --grad-accum 32 --seq-len 4096 \
--bf16 --fsdp hybrid_shard \
--gradient-checkpointing --torch-compile \
--activation-cpu-offload
Hybridný shard uchováva celý shard vo vnútri každého uzla s 8 GPU a replikuje sa medzi 2 uzlami. Medziuzlová štruktúra prenáša iba redukovaný rozptyl replikovaných gradientov – približne 70 GB/krok pri BF16, ~3 s na 200 Gbps IB. Prekrytie väčšinu z toho skryje. Pri 100 GbE stojí rovnaký krok ~5–6 s a GPU začnú vykazovať čas nečinnosti; recept stále funguje, len je pomalší na epochu.
Predtréning 405B, 8× 8-GPU uzly — Megatron-Core 3D
Hardvér: 8× 8-GPU uzly NVLink/SXM, 400 Gbps NDR IB. Pre úplnosť nie je postavené spoločnosťou Kentino.
# Megatron-Core launcher (abbreviated)
torchrun --nnodes=8 --nproc-per-node=8 \
pretrain_gpt.py \
--tensor-model-parallel-size 8 \
--pipeline-model-parallel-size 8 \
--sequence-parallel \
--context-parallel-size 1 \
--num-layers 126 --hidden-size 16384 --num-attention-heads 128 \
--seq-length 8192 --micro-batch-size 1 --global-batch-size 2048 \
--bf16 --use-flash-attn --transformer-impl transformer_engine
TP=8 × PP=8 = 64 hodnosti na repliku; 8 nodes × 8 GPUs = 64 GPUs celkovo presne jedna replika. Ak chcete škálovať na viacero replík pre vyššiu priepustnosť, vynásobte DPTu sa Megatron uchytí. Rovnaký model len na FSDP2 by strávil väčšinu času komunikáciou medzi hodnosťami; 3D rozloženie umiestňuje najťažšiu komunikáciu (TP) do domény NVLink.
Úprimný pohľad na zákazníkov Kentina
Väčšina zákazníkov Kentina nevykonáva predtrénovanie. Dolaďujú základné modely s otvorenou váhou – Llama, Qwen, Mistral, niekedy Gemma – na svojich doménových dátach, občas s LoRA alebo QLoRA, občas s úplnými dolaďovaniami. Pre túto prácu je výber frameworku nasledovný:
- Jeden model, ktorý sa zmestí na jednu GPU na BF16, so stavom optimalizátora. Použite DDP. Replikujte kópie kvôli priepustnosti.
- Jeden model, ktorý sa nezmestí na jednu grafickú kartu (GPU), ale zmestí sa súhrnne na jeden uzol s 8 grafickými kartami. Použite plný shard FSDP2. Toto pokrýva jemné doladenia 8B – 70B.
- Jeden model, ktorý sa zmestí do dvoch uzlov s 8 GPU. Použite hybridný shard FSDP2. Doladenie 70B – 200B.
- Väčší model alebo predtréning od začiatku. Toto je téma, do ktorej patria Megatron-Core, hardvér SXM a NDR IB. My postavíme úložisko a riadiacu rovinu, ale grafické karty sa na túto fázu zvyčajne prenajímajú.
Tých 10 % zákazníkov, ktorí skutočne potrebujú viacuzlové, úzko prepojené školenia, sú väčšinou výskumné laboratóriá s financovanými programami predškolenia a vedia, čo potrebujú, ešte predtým, ako zavolajú. Zvyšným 90 % by sa nemal predať klaster – mal by sa im predať jeden dobre špecifikovaný 8-GPU uzol so správnym fabric stubom pre budúci druhý uzol a sieťové zariadenie by sa malo ponechať ako položka P2.
Čo urobiť ďalej
Ak určujete veľkosť školiaceho projektu a ešte ste si nevybrali rámec, postupujte podľa týchto krokov:
- Vypočítajte pamäť na poradie s cieľovou presnosťou. Parametre × 2 (BF16) + gradienty × 2 + optimalizátor × 8 (stavy Adam FP32) + aktivácie. Ak sa to zmestí do VRAM vašej GPU s dostatočnou rezervou, DDP je vaša odpoveď.
- Ak pamäť nesedí, opýtajte sa: mám jeden uzol alebo viacero? Jeden uzol → plný shard FSDP2, koniec konverzácie. Mnoho uzlov → hybridný shard FSDP2.
-
Spustite jednokrokovú kontrolu príčetnosti. Pozrite si čas skrátenia všetkých
NCCL_DEBUG=INFOAk dominuje kroku, sieť je pre daný model poddimenzovaná. Prechod na menší model alebo väčšiu tkaninu sú dve možnosti; ladenie rámca vás nezachráni. -
Siahnite po Megatron-Core alebo DeepSpeed iba vtedy, keď FSDP2 nedokáže urobiť to, čo potrebujete. „Nedá sa“ znamená: potrebovať tenzorovú paralelnosť pre model väčší ako pamäť vášho agregovaného uzla, potrebovať odľahčenie CPU/NVMe, potrebovať sekvenčnú paralelnosť nad tým, čo
--context-parallel-sizev PyTorch vám dáva alebo predtrénujete MoE. - Ako spúšťač použite Axolotl alebo Accelerate. Ručné nastavovanie obalov FSDP2 je učebné cvičenie; v produkčnom prostredí chcete mať framework, ktorý spracováva dataset, tokenizátor, formát kontrolných bodov a LoRA. Obidva sú založené na FSDP2.
-
Kontrolný bod s
torch.distributed.checkpoint(DCP) alebo asynchrónny segmentovaný kontrolný bod NeMo. Synchrónne nerozdelené kontrolné body zapisované do NFS sú vzorom z roku 2022; v roku 2026 predstavujú samovoľne spôsobené zastavenie tréningu. Pozri K06 pre spracovanie zlyhaní, ktoré s tým súvisí. - Buďte úprimní ohľadom veľkosti klastra, ktorý skutočne potrebujete. Ak vaša úloha beží na jednom uzle s 8 GPU v rozumnom čase, neplaťte za klaster so štyrmi uzlami, aby ste ju na papieri 2.5-krát zrýchlili. Škálovanie v matematice K07 ukazuje, prečo „viac uzlov“ prestáva pomáhať už na začiatku používania bežného hardvéru.
Sprievodné články: distribuované úložisko tréningov a kontrolné stanovovanie v K04, zhlukovanie inferencií v K03, spracovanie porúch v K06, strop šírky pásma PCIe v K07a kompromis medzi NVLink a PCIe v N03Matematika siete je v poriadku. N08.
Toto je súčasť Kentino Wiki, referenčnej série o umelej inteligencii, robotike a systémoch, ktoré ich spájajú. Komentáre a opravy sú vítané na info@kentino.com.