Back to archive
#ai#llm#glossary#aigen

All-reduce

All-reduce to operacja komunikacji zbiorowej: łączy odpowiadające sobie elementy danych wszystkich uczestników, a wynik udostępnia każdemu z nich. Łączeniem może być suma, minimum albo maksimum. Rank oznacza uczestnika grupy; w typowym użyciu NCCL odpowiada mu GPU. Dokumentacja NCCL, Collective Operations definiuje zarówno redukcję, jak i odbiorców jej wyniku.

Trzy osobne barwy łączą się w ten sam trójbarwny motyw powtórzony przy każdym uczestniku.

Każdy dokłada, każdy dostaje wynik

Trzy urządzenia mają wektory [1,4][1,4], [2,1][2,-1] oraz [3,2][3,2]. All-reduce z sumowaniem daje [6,5][6,5] 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.

Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.