Hasło słownika · · 2 min czytania
All-reduce
Trzy urządzenia obliczyły lokalne wskazówki do uczenia. Każde ma tylko swój wkład, a wszystkie potrzebują wspólnego wyniku. Samo przesłanie ich do jednego urządzenia nie zapewni jeszcze identycznej informacji pozostałym.
All-reduce łączy odpowiadające sobie elementy danych uczestników i udostępnia cały wynik każdemu. Łączeniem może być suma, minimum lub maksimum; rodzaj operacji trzeba wskazać.
Dla list [1, 4], [2, −1] i [3, 2] suma daje [6, 5] na każdym urządzeniu. Dodajemy liczby na tych samych pozycjach, nie sklejamy list ani nie sprowadzamy wszystkiego do jednej liczby.
Suma nie jest automatycznie średnią: trzeba dodatkowo podzielić przez właściwy mianownik. Operacja wymaga komunikacji i zgodnego uczestnictwa. Reduce-scatter daje każdemu tylko fragment połączonego wyniku.
Źródło mechanizmu: Dokumentacja NCCL, Collective Operations.
Mechanizm i szczegóły

Każdy dokłada, każdy dostaje wynik
Trzy urządzenia mają wektory , oraz . All-reduce z sumowaniem daje na każdym urządzeniu. Wynik nadal ma dwie współrzędne. Sumujemy elementy na tych samych pozycjach, nie wszystkie liczby do jednego skalara.
To własny przykład arytmetyczny. Zmień pierwszą liczbę trzeciego urządzenia, a potem porównaj operacje:
- Reduce: wynik trafia tylko do wskazanego odbiorcy, tutaj rank 0.
- All-reduce: każdy otrzymuje ten sam wynik redukcji.
- All-gather: każdy otrzymuje wszystkie wejścia połączone w jeden większy bufor, bez ich sumowania.
Dlaczego LLM tego potrzebuje
W Tensor Parallelism urządzenia mogą sumować częściowe wkłady do wyniku warstwy. W synchronicznym Data Parallelism redukcja służy uzgadnianiu gradientów obliczonych na różnych danych. Suma nie jest jeszcze średnią: przy równych porcjach trzeba ją również podzielić przez liczbę uczestników.
NCCL wymaga zgodności liczby elementów i typu danych między uczestnikami danego kolektywu. Sam termin All-reduce nie wskazuje topologii sieci ani czasu wykonania. Reduce, po którym następuje Broadcast, ma tę samą semantykę; biblioteka może zrealizować ją innym algorytmem. Demonstracja pokazuje wynik operacji, bez modelowania transferów i ich kosztu.
Zobacz także: Reduce-scatter rozdziela zredukowany bufor między ranki. Po zebraniu tych fragmentów przez All-gather każdy otrzymuje pełny wynik All-reduce.