Synchronous Training
Jak działa
Krok treningowy: 1) Każdy z N workerów otrzymuje shard minibatcha B/N i wykonuje forward + backward pass na lokalnej kopii modelu, 2) Wszyscy uczestnicy wywołują all-reduce na buforze gradientów (zwykle ring all-reduce w NCCL/MPI lub tree-reduce na hierarchii), 3) Po zakończeniu kolektywu każdy worker ma identyczną sumę/średnią gradientów, 4) Lokalny optimizer (Adam, SGD) aktualizuje wagi – ponieważ wszystkie repliki startowały identyczne i dostały identyczny gradient, wagi pozostają zsynchronizowane bez dodatkowej komunikacji. W FSDP/ZeRO dochodzą dodatkowe all-gather/reduce-scatter do partycjonowania stanu optymalizatora, gradientów i parametrów.
Rozwiązany problem
Trening dużych modeli na pojedynczym GPU jest niewykonalny ze względu na czas i pamięć. Asynchronous parameter server skaluje się słabo z powodu stale gradients. Synchronous training rozwiązuje oba problemy zachowując zbieżność równoważną SGD na dużym minibatchu.
Implementacja
Najwolniejszy worker (np. termiczny throttling GPU lub failing NIC) opóźnia cały krok – im większy klaster, tym większe ryzyko.
Bardzo duże globalne batche (>32k) potrafią pogorszyć generalization mimo zachowanej zbieżności trenu.
Czas all-reduce skaluje się z liczbą węzłów; dla małych modeli komunikacja może dominować nad obliczeniami.
Awaria pojedynczego GPU/węzła w klasycznym sync training wymaga restartu z checkpointu – w klastrach 10k+ GPU MTBF jest godziny.
Ewolucja
Dean et al. wprowadzają asynchroniczny parameter server jako pierwszą rozproszoną architekturę treningu DL.
Linear scaling rule + warmup pozwala trenować ImageNet w 1h na 256 GPU. Establishuje synchronous training jako standard.
Sergeev & Del Balso publikują Horovod – framework synchronous training oparty na ring all-reduce z NCCL/MPI.
Rajbhandari et al. wprowadzają ZeRO redukujący pamięć przez sharding optymalizatora, gradientów i parametrów (stage 1/2/3).
Fully Sharded Data Parallel (port ZeRO-3 do PyTorch core) staje się głównym mechanizmem treningu LLM.
xAI Colossus, Meta Llama 3, OpenAI GPT-4 trenowane na 25-100k+ GPU klastrach z synchronous SGD i RoCE/IB scale-out.
Szczegóły techniczne
Hiperparametry (konfigurowalne osie)
Liczba GPU/TPU uczestniczących w treningu. Skaluje minibatch globalny i wymaga liniowego skalowania learning rate.
Sumaryczny minibatch B = per_worker × N. Zbyt duży powoduje generalization gap.
Ring vs tree vs hierarchical (NVLink+IB) all-reduce. Wpływa na skalowanie i tolerancję topologii.
Liczba mikrobatchy akumulowanych przed all-reduce – pozwala emulować większy effective batch przy ograniczonej pamięci.
Paradygmat wykonania
Wszystkie workery wykonują dokładnie te same operacje na każdym kroku – brak warunkowego wykonania na poziomie systemu.
Równoległość
Wymagania sprzętowe
Synchronous training jest dziś podstawowym workloadem klastrów NVIDIA H100/H200/B200 z NVLink + InfiniBand/RoCE.
TPU pods (Google) oparte są na synchronous training z dedykowanym ICI all-reduce.