PRZEWODNIK techniczny

Równoległość danych

Równoległość danych umożliwia szybsze uczenie jednego modelu poprzez replikację go na wielu procesorach graficznych, przy czym każdy procesor graficzny przetwarza inny fragment partii danych.

2 minuty czytaniaOstatnia aktualizacja

Przegląd

Jest to technika, która pozwala zespołom skalować się do dziesiątek lub tysięcy akceleratorów.

Głębokie nurkowanie

W przypadku równoległości danych każdy procesor graficzny przechowuje identyczną kopię wag modelu, ale przetwarza odrębną mini-partię przykładów szkoleniowych. Każde urządzenie niezależnie oblicza przebieg do przodu i do tyłu, tworząc własny zestaw gradientów. Przed aktualizacją wag gradienty są uśredniane na wszystkich procesorach graficznych przy użyciu operacji komunikacji all-reduce, dzięki czemu każda replika pozostaje zsynchronizowana i zachowuje się tak, jakby trenowała w ramach jednej dużej połączonej partii. To skutecznie zwielokrotnia przepustowość: 8 procesorów graficznych może przetworzyć około 8 razy więcej danych na krok. Problem polega na tym, że każdy procesor graficzny musi zmieścić cały model, jego gradienty i stan optymalizatora w pamięci, więc zwykła równoległość danych nie pomaga, gdy model jest za duży dla pojedynczego urządzenia.

Wgląd techniczny

Kluczową operacją jest all-reduce, która sumuje gradienty pomiędzy urządzeniami i redystrybuuje wynik. Funkcja Ring All-Reduce, używana przez biblioteki takie jak NCCL i Horovod, przekazuje fragmenty gradientu wokół pierścienia logicznego, dzięki czemu całkowita komunikacja jest niezależna od liczby procesorów graficznych. DistributedDataParallel PyTorch nakłada się na tę komunikację z przebiegiem wstecznym, uruchamiając synchronizację gradientów dla wczesnych warstw, podczas gdy późniejsze warstwy nadal wykonują obliczenia, ukrywając większość opóźnień sieci.

Wpływ strategiczny

Koszt i budżet

Decyzje dotyczące architektury wpływają na wydajność i koszty operacyjne przez lata.

Jaśniejsze decyzje

Edukacja techniczna pomaga zespołom wybrać odpowiedni stos, a nie tylko najnowszy.

Kontrola jakości

Lepsze wybory inżynieryjne zmniejszają liczbę incydentów związanych z niezawodnością w produkcji.

Przyszłość równoległości danych

Czysta równoległość danych jest coraz częściej łączona z fragmentowaniem i równoległością modeli w hybrydowe strategie „równoległości nD” dla modeli o bilionach parametrów. Spodziewaj się inteligentniejszej kompresji gradientu, komunikacji asynchronicznej i nakładającej się oraz funkcji all-redukcji uwzględniającej topologię, która wykorzystuje szybką technologię NVLink w węźle i wolniejszą technologię InfiniBand pomiędzy węzłami. W miarę rozwoju klastrów zmniejszenie współczynnika komunikacji do mocy obliczeniowej pozostaje głównym wyzwaniem inżynieryjnym, pozwalającym utrzymać pracę tysięcy procesorów graficznych.

Implementacja w świecie rzeczywistym

Szkolenie klasyfikatora obrazu ResNet na 8 procesorach graficznych na jednym serwerze przy użyciu narzędzia PyTorch DistributedDataParallel, przy czym każdy procesor graficzny obsługuje 32 z partii 256 obrazów.

Skalowanie wstępnego uczenia BERT na setkach procesorów graficznych za pomocą Horovoda przy użyciu funkcji Ring All-Reduce w celu synchronizacji gradientów na każdym kroku.

Dostrajanie modelu rekomendacji w klastrze z wieloma węzłami, w którym każdy węzeł przetwarza różne fragmenty interakcji użytkownika.

Wykorzystanie MirroredStrategy TensorFlow do rozłożenia uczenia modelu wizji na wiele procesorów graficznych na jednej stacji roboczej przy minimalnych zmianach kodu.

Zagrożenia i poręcze

Optymalizacja jednego testu porównawczego może ukryć szersze słabości systemu.

Koszty infrastruktury i utrzymania są często niedoszacowane.

W miarę jak systemy stają się coraz bardziej złożone, luki w bezpieczeństwie i obserwowalności mogą się zwiększać.

Plan wdrożenia

1

Przed wdrożeniem zdefiniuj docelowe opóźnienia, jakość i koszty.

2

Test porównawczy w realistycznych warunkach obciążenia i danych.

3

Monitorowanie przyrządu pod kątem błędów, dryftu i wpływu użytkownika.

4

Przed skalowaniem przygotuj ścieżki wycofywania zmian i reakcji na incydenty.

Odkrywaj dalej

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Data Parallelism quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Rozpocznij quiz

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Następny poradnik

Zarządzanie danymi AI

Często zadawane pytania

Co to jest równoległość danych?

Równoległość danych umożliwia szybsze uczenie jednego modelu poprzez replikację go na wielu procesorach graficznych, przy czym każdy procesor graficzny przetwarza inny fragment partii danych. Jest to technika, która pozwala zespołom skalować się do dziesiątek lub tysięcy akceleratorów.

Co w standardowej równoległości danych przechowuje każdy procesor graficzny?

Każdy procesor graficzny przechowuje pełną replikę modelu i przetwarza odrębną część partii danych, co sprawia, że ​​jest to równoległość „danych”, a nie równoległość modelu.

Która operacja komunikacji zapewnia synchronizację replik modelu na każdym kroku?

Po każdym przejściu wstecz gradienty są łączone na urządzeniach za pomocą metody all-reduce (zwykle sumowane, a następnie uśredniane), dzięki czemu każda replika stosuje tę samą aktualizację.

Jakie jest główne ograniczenie zwykłej równoległości danych?

Ponieważ każdy procesor graficzny przechowuje pełną kopię wszystkiego, równoległość danych nie pomaga, gdy model jest po prostu zbyt duży, aby zmieścić się na jednym urządzeniu.

Dlaczego funkcja Ring All-Reduce jest atrakcyjna w przypadku dużej liczby procesorów graficznych?

Funkcja Ring All-Reduce przekazuje fragmenty gradientu wokół logicznego pierścienia, dzięki czemu całkowita przepustowość wysyłana przez każdy procesor graficzny pozostaje stała niezależnie od liczby procesorów graficznych uczestniczących w transmisji.

W jaki sposób PyTorch DistributedDataParallel ukrywa opóźnienia w komunikacji?

DDP rozpoczyna synchronizację gradientów dla wcześniejszych warstw, podczas gdy późniejsze warstwy są nadal obliczane, nakładając komunikację sieciową na obliczenia.