Słownik

Hasło słownika · · 2 min czytania

Pipeline Parallelism

Model ma wiele kolejnych warstw i nie mieści się na jednym urządzeniu. Możesz rozłożyć je na kilka kart, ale jedno wejście nadal musi przejść przez wszystkie etapy. Jak mimo tej zależności wykorzystać karty równocześnie?

Pipeline Parallelism przypisuje kolejne grupy warstw różnym urządzeniom i przesyła wyniki między nimi. Równoległość powstaje, gdy pierwszy etap obsługuje już drugą porcję danych, a drugi pracuje nad pierwszą.

To przypomina linię produkcyjną. Trzy etapy po jednej jednostce czasu nadal potrzebują trzech jednostek na pierwszą porcję. Przy większej liczbie porcji kolejne etapy mogą jednak działać jednocześnie.

Pozostają okresy bezczynności podczas wypełniania i opróżniania linii oraz nierówne czasy etapów. Podział nie gwarantuje trzykrotnie krótszego oczekiwania na pojedynczy wynik. Małe porcje pracy i ich harmonogram decydują o wykorzystaniu urządzeń.

Mechanizm i szczegóły

Kolejne stanowiska drukarskie pracują równocześnie nad osobnymi kartami na różnych etapach wykonania.

GPipe, §2.1–2.2 dzieli sekwencję warstw na grupy, a batch przykładów na mniejsze micro-batches. GPU przekazują aktywacje na granicach grup. W opisanym treningu gradienty są sumowane z micro-batches, a aktualizacja wag następuje po całym batchu. To konkretny harmonogram GPipe; PP obejmuje również inne harmonogramy.

Pierwszy wynik nadal musi przejść całą drogę

Własny model czasu: trzy etapy po jednej umownej jednostce, cztery niezależne porcje danych. Przy przepuszczaniu każdej osobno koniec przypada po 12 jednostkach. Gdy etapy pracują równocześnie nad różnymi porcjami, ostatnia wychodzi po 6 jednostkach. Pierwsza nadal potrzebuje trzech.

Zmień liczbę porcji i przechodź przez harmonogram. Przy jednej porcji nie ma skrócenia czasu: pozostałe GPU czekają na dane albo kończą już pracę. Te puste miejsca to pipeline bubbles. Włącz wolniejszy środkowy etap i zobacz, gdzie powstaje następna kolejka.

Dla KK równych etapów i MM porcji ten uproszczony forward trwa M+K−1M+K-1 jednostek, zamiast KMKM bez nakładania pracy. Tu K=3K=3. Pomijamy transfery i backward; porcja zachowuje stały rozmiar, więc zwiększenie MM zwiększa też całkowitą pracę. To nie jest pomiar przy stałym batchu. GPipe, §2.3 omawia koszt pustych przebiegów i nierównego podziału pracy w pełnym treningu.

Co jest dzielone?

PP korzysta z następstwa warstw w Transformerze. Tensor Parallelism może dodatkowo podzielić operacje wewnątrz każdego etapu. Samo PP nie usuwa zależności między kolejnymi tokenami jednej odpowiedzi w Autoregressive Language Modeling: w demonstracji porcje są niezależnymi wejściami, nie przyszłymi tokenami tego samego strumienia.

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