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

Why Plex May Re-Analyze Media After a Server Upgrade
Plex may re-analyze media after an upgrade. Separate finite maintenance work from repeated scans, path issues, or database faults.

What Actually Sets the Plex Performance Ceiling?
A dependency model for Plex performance that helps you identify the first saturated stage instead of upgrading every component at once.

Plex Networking Explained: Discovery, DNS, Routing, and Remote Reachability
A layer-by-layer model of Plex reachability that separates local discovery from IP routing and remote NAT or port-forwarding problems.

