Jak potokowe przetwarzanie równoległe przenosi warstwy modelu między domowymi akceleratorami AI?

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ść potokowa przenosi model między domowymi akceleratorami AI, przypisując różne grupy warstw do kolejnych etapów urządzeń i przekazując między nimi aktywacje.

Ta metoda jest przydatna, gdy głęboki model jest zbyt duży dla jednego akceleratora, ale można go podzielić na grupy warstw mieszczące się na kilku urządzeniach. W przeciwieństwie do równoległości tensorowej każdy etap obejmuje całe warstwy, a nie fragmenty tej samej macierzy. Główny kompromis polega na mniejszej liczbie wag przechowywanych na pojedynczym urządzeniu kosztem transferów aktywacji, nierównomiernego obciążenia etapów i przestojów potoku.

Równoległość potokowa dzieli głęboki model na kolejne etapy warstw

Transformer ma naturalny porządek: wcześniejsze warstwy przekształcają dane wejściowe, zanim będą mogły zostać uruchomione późniejsze warstwy. Równoległość potokowa grupuje sąsiadujące fragmenty tej głębokości i przypisuje każdą grupę do innego akceleratora.

Środowisko uruchomieniowe potoków PyTorch dzieli model na partycje wykonywane jako kolejne etapy na różnych urządzeniach. Każde urządzenie przechowuje tylko parametry przypisanego mu etapu.

Może to zmniejszyć ilość pamięci modelu wymaganą na pojedynczym urządzeniu na tyle, aby uruchomić model, który nie zmieściłby się na jednym domowym GPU.

Aktywacje przechodzą z jednego etapu do następnego

Gdy GPU 0 zakończy przetwarzanie swoich warstw, wysyła aktywację stanu ukrytego do GPU 1. To urządzenie stosuje kolejną grupę warstw i przekazuje następną aktywację dalej, aż ostatni etap wygeneruje logity lub inny wynik modelu.

vLLM-Omni opisuje równoległość potokową jako podział bloków transformera na kolejne etapy działające na różnych GPU. W podstawowym przebiegu do przemieszczenia między sąsiednimi etapami potrzebne są tylko aktywacje graniczne.

W przeciwieństwie do równoległości tensorowej urządzenia nie obliczają wspólnie jednej macierzy w ramach tej samej warstwy. Każde z nich obsługuje inne warstwy.

Pojedyncze żądanie nadal przechodzi przez etapy w określonej kolejności

W przypadku jednego tokenu lub jednego mikropakietu późniejsze etapy nie mogą rozpocząć pracy, dopóki nie otrzymają wymaganej aktywacji z poprzedniego etapu. Samo umieszczenie czterech grup warstw na czterech GPU nie sprawia, że jedno sekwencyjne żądanie będzie obsługiwane cztery razy szybciej.

Przewodnik NVIDIA dotyczący równoległości definiuje PP jako pionowy podział warstw modelu według głębokości. Zależność sekwencyjna wzdłuż głębokości pozostaje zachowana.

Bezpośrednią korzyścią może być więc zwiększenie pojemności, a nie zmniejszenie opóźnienia. Przepustowość rośnie, gdy środowisko uruchomieniowe może nakładać na siebie różne fragmenty pracy wykonywane na poszczególnych etapach.

-15% OFF

Mikropakiety wypełniają potok, dzięki czemu kilka etapów pracuje jednocześnie

Potok staje się wydajny, gdy dane wejściowe zostaną podzielone na mikropakiety lub gdy wiele elementów wnioskowania może jednocześnie zajmować różne etapy. Podczas gdy etap 2 przetwarza jeden mikropakiet, etap 1 może rozpocząć pracę nad kolejnym.

Przewodnik Hugging Face dotyczący równoległości wyjaśnia, że wykonywanie potokowe wykorzystuje mikropakiety w celu ograniczenia czasu bezczynności potoku. Ta sama zasada lepszego wykorzystania zasobów obowiązuje zawsze, gdy środowisko wnioskowania może nakładać na siebie niezależne zadania.

Interaktywne generowanie tokenów przez jednego użytkownika oferuje mniej naturalnych możliwości równoległości, ponieważ każdy nowy token zależy od wyniku poprzedniego tokenu. Żądania przetwarzane wsadowo lub ruch wielu użytkowników mogą zapewnić więcej okazji do utrzymania zajętości poszczególnych etapów.

Nierówny czas działania etapów tworzy puste przebiegi i sprawia, że dominuje najwolniejszy etap

Jeśli jeden etap zawiera więcej warstw, działa na wolniejszym sprzęcie lub wykonuje szczególnie kosztowne operacje, następny etap czeka na dane wejściowe, a poprzedni ostatecznie czeka na wolne miejsce. Te okresy bezczynności to puste przebiegi potoku.

Silnik potokowy DeepSpeed kładzie nacisk na dzielenie warstw modelu na etapy potoku. Zrównoważenie obciążenia obliczeniowego etapów jest zatem równie ważne jak zrównoważenie liczby bajtów parametrów.

W konfiguracji z różnymi domowymi akceleratorami można celowo przydzielić mniej warstw wolniejszemu GPU, ale takie rozmieszczenie ograniczają pojemność pamięci, rozmiar aktywacji i obsługiwane transfery między urządzeniami.

Równoległość potokowa zamienia większą pojemność na transfery aktywacji i koszty harmonogramowania

PP jest atrakcyjne, gdy model jest głęboki i można go podzielić na grupy warstw mieszczące się na poszczególnych urządzeniach. Przesyła aktywacje graniczne zamiast częstych operacji zbiorczych wewnątrz warstwy, typowych dla równoległości tensorowej, ale wiąże się z zależnościami sekwencyjnymi i pustymi przebiegami.

Przewodnik ZimaSpace dotyczący współbieżności domowej AI dla wielu użytkowników jest tutaj istotny, ponieważ większa liczba jednoczesnych zadań może pomóc wypełnić potok, a jednocześnie zwiększyć obciążenie pamięci KV i harmonogramowania.

Mierz zużycie pamięci przez każdy etap, czas jego wykonywania, czas transferu aktywacji, opóźnienie od początku do końca, przepustowość oraz odsetek bezczynności urządzeń. Konfiguracja, w której model się mieści, ale połowa akceleratorów pozostaje bezczynna, może wymagać innego podziału.

Przewodnik ZimaSpace po lokalnym sprzęcie AI przedstawia podstawowe wymagania dotyczące pojemności. Równoległość potokowa to jeden ze sposobów na przekroczenie limitu pamięci pojedynczego urządzenia, ale jej powodzenie zależy bardziej od równowagi etapów niż od samej liczby GPU.

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.