Reduce-scatter
Kilka urządzeń policzyło wkłady do tego samego wyniku. Chcesz je połączyć, ale każde urządzenie ma później odpowiadać tylko za część danych. Przechowywanie całej sumy u wszystkich byłoby niepotrzebne.
Reduce-scatter łączy odpowiadające sobie elementy wkładów i rozdziela wynik na fragmenty między uczestników. Przy sumowaniu każdy element zawiera wkład wszystkich, lecz każdy uczestnik dostaje wyłącznie przypisaną część.
Trzy listy długości sześć mogą po zsumowaniu dać sześć wartości. Przy równym podziale każde z trzech urządzeń otrzymuje dwie. Numer uczestnika grupy, zwany rankiem, określa przypisanie fragmentu.
To różni się od All-reduce, który daje każdemu pełny wynik. Suma nie jest średnią bez dodatkowego dzielenia. All-gather może później zebrać rozdzielone części u każdego. Tabela i eksperyment pokazują wkłady bez ukrywania tego rozróżnienia.
Mechanizm i szczegóły
W NCCL, sekcji ReduceScatter, fragmenty mają równy rozmiar i trafiają do uczestników według ranku. Dla trzech ranków i dwóch elementów wyniku na rank każdy bufor wejściowy ma sześć elementów. Ten związek opisuje parametr recvcount w API ncclReduceScatter.

Cała suma, ale tylko kawałek dla każdego
Własny przykład z trzema rankami:
| Rank | Wejście | Wynik Reduce-scatter z sumą |
|---|---|---|
| 0 | [1, 2, 3, 4, 5, 6] | [111, 222] |
| 1 | [10, 20, 30, 40, 50, 60] | [333, 444] |
| 2 | [100, 200, 300, 400, 500, 600] | [555, 666] |
Pierwsza suma to 1 + 10 + 100 = 111. Rank 0 otrzymuje ją razem z drugą sumą; nie dostaje pozostałych czterech. To odróżnia Reduce-scatter od All-reduce, który pozostawia cały zredukowany bufor u każdego uczestnika. Suma nie jest średnią: uśrednienie wymaga dodatkowego dzielenia.
Zmień ostatnią liczbę ranku 2. Który fragment wyniku się zmieni? Następnie zbierz fragmenty przez All-gather: otrzymasz pełną sumę na każdym ranku, bez powtórnego sumowania.
Związek z treningiem
W ZeRO podział gradientów pozwala każdemu procesowi aktualizować przydzielone parametry. Praca ZeRO, §7.2.1, opisuje redukcję gradientów do ich właścicieli, a następnie zebranie zaktualizowanych parametrów. Pomiędzy tymi operacjami zachodzi krok optymalizatora; demonstracja pokazuje prostsze złożenie dwóch kolektywów na niezmienionych fragmentach.
Równoważność Reduce-scatter → All-gather z All-reduce dotyczy wyniku przy zgodnym podziale i tej samej redukcji. Nie gwarantuje identycznego czasu ani konkretnej topologii komunikacji.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.