Jak równoległość tensorowa dzieli lokalne wnioskowanie AI między wiele procesorów GPU?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Równoległość tensorowa dzieli lokalne wnioskowanie AI, rozdzielając duże tensory wag wewnątrz każdej warstwy transformera między wiele procesorów GPU i łącząc ich częściowe wyniki.

Różni się to od przydzielania każdemu procesorowi GPU osobnego żądania lub przypisywania różnych warstw do różnych urządzeń. Każdy procesor GPU uczestniczący w równoległości tensorowej działa w tej samej warstwie, często przy każdym wygenerowanym tokenie. Takie podejście może pozwolić uruchomić model na kilku domowych procesorach GPU, ale sprawia, że komunikacja między procesorami GPU staje się częścią krytycznej ścieżki wnioskowania.

Równoległość tensorowa dzieli jedną warstwę zamiast kopiować cały model

Równoległość danych zapewnia każdemu procesorowi GPU kopię modelu i dzieli między nimi żądania lub partie. Równoległość tensorowa działa odwrotnie w przypadku pojedynczego modelu: dzieli duże tensory parametrów wewnątrz poszczególnych warstw między urządzenia.

NVIDIA NeMo definiuje TP jako rozdzielanie tensora parametrów pojedynczej warstwy między procesory GPU. Każdy procesor GPU przechowuje tylko fragment odpowiedniej macierzy.

Jest to przydatne, gdy jeden model lub nawet jedna duża warstwa nie mieści się wygodnie w pamięci pojedynczego domowego procesora GPU.

Fragmenty kolumnowe i wierszowe dzielą pracę mnożenia macierzy

Warstwy transformera zawierają duże projekcje liniowe. Podział kolumnowy przypisuje różne kolumny wyjściowe do różnych procesorów GPU, podczas gdy podział wierszowy przypisuje różne wiersze wejściowe lub zakresy cech.

Samouczek tensor-parallel firmy PyTorch stosuje style równoległości wierszowej i kolumnowej do warstw transformera. Każda ranga oblicza częściowy iloczyn macierzy na podstawie lokalnego fragmentu wag.

Model nadal reprezentuje jedną logiczną warstwę. Podział zmienia miejsce wykonywania poszczególnych części obliczeń oraz sposób łączenia częściowych wyników.

Komunikacja kolektywna odtwarza logiczne wyjście warstwy

Ponieważ każdy procesor GPU widzi tylko część tensora, niektóre operacje wymagają wykonania all-reduce, all-gather, reduce-scatter lub równoważnych operacji kolektywnych, zanim następne obliczenie uzyska wymaganą reprezentację.

Open MPI definiuje AllReduce jako łączenie wartości między procesami i rozsyłanie wyniku z powrotem do wszystkich uczestników. Środowiska wykonawcze wykorzystujące równoległość tensorową używają tego rodzaju operacji kolektywnych, a także all-gather i reduce-scatter, aby odtwarzać lub redystrybuować wyniki warstw podzielonych na fragmenty.

Na domowej stacji roboczej jakość połączenia między procesorami GPU może decydować o tym, czy podział rzeczywiście oszczędza czas, czy tylko zwiększa dostępną pojemność.

Szybkie interkonekty mają znaczenie, ponieważ komunikacja odbywa się przy każdej warstwie

Równoległość tensorowa może wymagać wielu operacji kolektywnych dla każdego bloku transformera i każdego wygenerowanego tokenu. Systemy korzystające wyłącznie z PCIe oferują znacznie mniejszą przepustowość komunikacji między urządzeniami niż zaawansowane interkonekty akceleratorów projektowane z myślą o dużych zadaniach rozproszonych.

Dokumentacja AMD RCCL opisuje transport peer-to-peer dla procesorów GPU połączonych przez PCIe. Dokładna biblioteka operacji kolektywnych różni się w zależności od platformy, ale to samo ograniczenie topologii pozostaje aktualne.

Dwa procesory GPU o wystarczającej łącznej pojemności VRAM mogą z powodzeniem uruchomić większy model, a mimo to zapewniać niższą od oczekiwanej przepustowość tokenów, ponieważ każda warstwa czeka na synchronizację.

Niezgodne procesory GPU mogą sprawić, że tempo wyznacza najwolniejszy fragment

Warstwa wykorzystująca równoległość tensorową przechodzi dalej dopiero po otrzymaniu wymaganych częściowych wyników. Jeśli jeden procesor GPU ma niższą przepustowość obliczeniową, mniejszą przepustowość pamięci lub wolniejsze połączenie, szybsza ranga może spędzać czas na oczekiwaniu.

Funkcja automatycznej równoległości tensorowej DeepSpeed dla wnioskowania została zaprojektowana z myślą o dzieleniu modelu między procesy w grupie procesów wnioskowania. Praktyczna efektywność zakłada, że uczestniczące urządzenia mogą wykonywać porównywalną ilość pracy.

Mieszany zestaw domowych procesorów GPU nadal może być przydatny ze względu na możliwość uruchomienia modelu, ale równe rozmiary fragmentów nie są automatycznie optymalne, gdy sprzęt znacznie się różni.

Wybierz równoległość tensorową dla szerokich warstw i ograniczonej pamięci pojedynczego procesora GPU

Najmocniejszy argument za tym podejściem stanowi model, którego duże wymiary ukryte i tensory warstw trzeba podzielić między procesory GPU, zwłaszcza gdy urządzenia mają szybki lokalny interkonekt. Nie jest to automatycznie najlepszy sposób obsługi wielu niezależnych, niewielkich żądań.

Artykuł ZimaSpace dotyczący planowania pamięci lokalnego akceleratora AI przedstawia podstawowe wymagania dotyczące pojemności; równoległość tensorowa zmienia te założenia, rozdzielając warstwy jednego modelu między urządzenia.

Jeśli to możliwe, wykonaj test na jednym procesorze GPU, a następnie na dwóch lub większej liczbie, używając tego samego modelu, promptu, kontekstu i partii. Zapisz zużycie pamięci każdego procesora GPU, liczbę tokenów na sekundę, opóźnienie, czas operacji kolektywnych i wykorzystanie łącza.

Artykuł ZimaSpace dotyczący obciążenia lokalnego AI przez wielu użytkowników przedstawia porównanie od strony obsługi: TP rozciąga jeden model na wiele urządzeń, natomiast współbieżność żądań określa, ile niezależnych kontekstów konkuruje o ten rozproszony model.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.