Wąskie gardła transferu danych a wąskie gardła obliczeń modelu
Wąskie gardła w transferze danych spowalniają procesy uczenia maszynowego, ograniczając szybkość przesyłania informacji między pamięcią masową, pamięcią operacyjną i zasobami obliczeniowymi. Natomiast wąskie gardła w obliczeniach modeli pojawiają się, gdy czynnikiem ograniczającym staje się moc obliczeniowa procesora graficznego (GPU) lub procesora głównego (CPU). Zrozumienie tej różnicy pomaga zespołom optymalizować wydatki na infrastrukturę i efektywność szkoleń.
Najważniejsze informacje
Wąskie gardła w transferze danych pojawiają się, gdy procesory GPU pozostają bezczynne, natomiast wąskie gardła w obliczeniach pojawiają się, gdy procesory GPU są całkowicie nasycone.
Naprawianie systemów przetwarzania danych jest zazwyczaj tańsze niż kupowanie większej liczby akceleratorów.
Duże modele językowe mają tendencję do ograniczania się pod względem obliczeń, podczas gdy obciążenia wizualne i tabelaryczne mają tendencję do ograniczania się pod względem danych.
Współczesne zadania szkoleniowe często napotykają na oba wąskie gardła jednocześnie, gdy rozmiary modeli i zbiorów danych rosną.
Czym jest Wąskie gardła w transferze danych?
Ograniczenia spowodowane małą przepustowością między systemami pamięci masowej, pamięcią i jednostkami obliczeniowymi podczas obciążeń ML.
Przepustowość sieci zwykle ogranicza się do 100 Gb/s w przypadku standardowego Ethernetu i do 400 Gb/s w przypadku specjalistycznych konfiguracji InfiniBand wykorzystywanych w klastrach AI.
Linie PCIe Gen5 oferują przepustowość dwukierunkową rzędu 128 GB/s, co często staje się limitem dla komunikacji między procesorem GPU a procesorem.
Prędkość odczytu sekwencyjnego na dyskach NVMe w trybie wejścia/wyjścia może osiągnąć 7 GB/s, jednak losowy dostęp do małych plików drastycznie obniża wydajność.
Ładowanie danych może pochłaniać od 30 do 60% całkowitego czasu szkolenia, jeśli potoki danych nie są zoptymalizowane pod kątem wstępnego pobierania i równoległego ładowania.
Rozwiązania te obejmują buforowanie danych w pamięci RAM, stosowanie szybszych połączeń, takich jak NVLink, oraz kolokację zasobów obliczeniowych i pamięci masowej w tym samym centrum danych.
Czym jest Wąskie gardła obliczeń modelu?
Ograniczenia wydajności spowodowane niewystarczającą mocą obliczeniową procesora GPU, TPU lub CPU do uruchomienia operacji modelu.
Nowoczesne procesory graficzne, takie jak NVIDIA H100, zapewniają wydajność rzędu 989 TFLOPS dla operacji FP8, co wyznacza górną granicę przepustowości mnożenia macierzy.
Przepustowość pamięci w stosach HBM3 sięga około 3,35 TB/s, co często ogranicza modele oparte na transformatorach bardziej niż surowe obliczenia.
Wykorzystanie mocy obliczeniowej poniżej 50% podczas szkolenia zwykle sygnalizuje, że obciążenie pracą jest wąskim gardłem w innym miejscu, często z powodu przenoszenia danych.
Trening o mieszanej precyzji może przyspieszyć obliczenia 2–3 razy w porównaniu z FP32, ale wymaga ostrożnego skalowania strat w celu zachowania dokładności.
Strategie zmniejszające obciążenie obliczeniowe obejmują paralelizm modeli, akumulację gradientów i kwantyzację do formatów o niższej precyzji.
Tabela porównawcza
Funkcja
Wąskie gardła w transferze danych
Wąskie gardła obliczeń modelu
Przyczyna pierwotna
Ograniczona przepustowość między pamięcią masową, pamięcią operacyjną i obliczeniami
Niewystarczająca moc przetwarzania GPU/TPU/CPU
Typowy objaw
Procesory graficzne pozostają bezczynne podczas oczekiwania na dane
Procesory graficzne nasycone przy 100% wykorzystaniu
Kluczowy wskaźnik do monitorowania
Przepustowość danych (GB/s) i czas oczekiwania na wejście/wyjście
Wykorzystanie FLOPS i zajętość SM
Typowa naprawa sprzętu
Szybsze dyski SSD, NVLink, karty sieciowe o większej przepustowości
Więcej procesorów GPU, rdzeni tensorowych lub nowszych akceleratorów
Często tańsze jest naprawianie za pomocą buforowania i dostrajania
Kosztowne skalowanie wymaga większej liczby akceleratorów
Metoda wykrywania
Czas oczekiwania na wejście/wyjście profilu i nasycenie sieci
Sprawdź wykorzystanie GPU i wydajność SM
Częstotliwość w nowoczesnej sztucznej inteligencji
Bardzo powszechne, zwłaszcza w przypadku dużych zestawów danych
Częste w przypadku dużych modeli, ale rzadsze niż problemy z danymi
Szczegółowe porównanie
Gdzie następuje spowolnienie
Wąskie gardła w transferze danych występują na całej długości ścieżki, którą pokonują informacje – od pamięci dyskowej, przez interfejsy sieciowe, do pamięci procesora, a na końcu do pamięci VRAM karty graficznej (GPU). Z kolei wąskie gardła w obliczeniach modeli występują wewnątrz samego procesora, gdzie mnożenie macierzy, obliczenia uwagi i aktualizacje gradientów konkurują o ograniczone zasoby krzemowe. To rozróżnienie ma znaczenie, ponieważ rozwiązanie jednego problemu rzadko pomaga w rozwiązaniu drugiego.
Jak je odróżnić
Najprostszą diagnostyką jest wykorzystanie GPU. Jeśli akceleratory są obciążone w 95–100%, wąskim gardłem są obliczenia. Jeśli wykorzystanie waha się między 20% a 80% z widocznymi przerwami w pracy, przyczyną jest prawdopodobnie transfer danych. Narzędzia takie jak NVIDIA Nsight Systems, PyTorch Profiler i przeglądarka śladów TensorBoard uwidaczniają to rozróżnienie, wyświetlając czas oczekiwania na wejście/wyjście wraz z wykonaniem jądra.
Kompromisy dotyczące kosztów i skalowalności
Rozwiązywanie problemów z transferem danych jest zazwyczaj tańsze, ponieważ zmiany na poziomie oprogramowania, takie jak wstępne pobieranie, buforowanie w pamięci i konwersja formatów (Parquet, TFRecord, WebDataset), mogą znacząco poprawić przepustowość bez konieczności zakupu nowego sprzętu. Wąskie gardła obliczeniowe często wymagają inwestycji w dodatkowe procesory GPU lub nowsze generacje akceleratorów, co może kosztować dziesiątki tysięcy dolarów na węzeł.
Wpływ na różne obciążenia
Zadania przetwarzania obrazu z wykorzystaniem obrazów o wysokiej rozdzielczości zazwyczaj najpierw napotykają ograniczenia transferu danych, ponieważ każda próbka jest duża, a dekodowanie kosztowne. Duże modele językowe z miliardami parametrów częściej napotykają wąskie gardła obliczeniowe, ponieważ mechanizmy uwagi i mnożenie macierzy skalują się kwadratowo wraz z długością sekwencji. Systemy rekomendacji i tabelaryczne potoki danych zazwyczaj borykają się z problemami z transferem danych z powodu wielu małych, losowych odczytów.
Nowoczesne rozwiązania i trendy
Branża zareagowała na problemy z transferem danych, wprowadzając technologie takie jak NVIDIA Magnum IO, GPUDirect Storage i RAPIDS, które całkowicie omijają wąskie gardła procesora. W przypadku obliczeń, architektury rdzeni tensorowych, obsługa rozrzedzenia oraz układy specyficzne dla transformatorów, takie jak Groq LPU i Cerebras CS-3, zwiększają przepustowość surową. Coraz częściej te dwa problemy zacierają się, ponieważ przenoszenie wag między pamięcią a obliczeniami ma obecnie dominujący wpływ na czas uczenia największych modeli.
Zalety i wady
Wąskie gardła w transferze danych
Zalety
+Tani w diagnozie
+Dostępne poprawki oprogramowania
+Buforowanie obniża koszty
+Wagi z pamięcią RAM
Zawartość
−Trudne do profilowania
−Zależne od sieci
−Format przechowywania ma znaczenie
−Ukryte w rurociągach
Wąskie gardła obliczeń modelu
Zalety
+Wyczyść metryki GPU
+Przewidywalna skalowalność
+Istnieją rozwiązania sprzętowe
+Dobrze udokumentowane
Zawartość
−Drogie w naprawie
−Wymaga nowych procesorów graficznych
−Głodny władzy
−Malejące zyski
Częste nieporozumienia
Mit
Zakup większej liczby procesorów GPU zawsze przyspiesza szkolenie.
Rzeczywistość
Dodanie akceleratorów pomaga tylko wtedy, gdy istniejące procesory graficzne są już przeciążone. Jeśli wąskim gardłem jest transfer danych, dodatkowe procesory graficzne będą po prostu stać bezczynnie, czekając na dane wejściowe, marnując pieniądze bez skracania czasu szkolenia.
Prędkość pamięci masowej ma znaczenie, ale wąskie gardło często leży w procesie komunikacji między pamięcią masową a kartą graficzną, w tym w dekodowaniu procesora, rozszerzeniu danych i przepustowości PCIe. Sama modernizacja dysków SSD rzadko rozwiązuje problem w całości.
Mit
Wysokie wykorzystanie procesora GPU oznacza optymalizację systemu.
Rzeczywistość
Wysokie wykorzystanie może w rzeczywistości maskować nieefektywność. Jeśli procesory graficzne są zajęte wykonywaniem powtarzalnych zadań lub oczekują na synchronizację, prawdziwym wąskim gardłem może być sposób przepływu danych, a nie surowa moc obliczeniowa.
Mit
W przypadku dużych modeli wąskim gardłem zawsze są obliczenia.
Rzeczywistość
Choć duże modele obciążają obliczenia, badania i profilowanie konsekwentnie pokazują, że przenoszenie danych, zwłaszcza transfery masy w konfiguracjach z wieloma procesorami graficznymi, często pochłania więcej czasu zegarowego niż rzeczywiste operacje arytmetyczne.
Mit
W procesie uczenia i wnioskowania wąskie gardła są takie same.
Rzeczywistość
Trening jest zazwyczaj ograniczony obliczeniowo w przejściach do przodu i do tyłu, podczas gdy wnioskowanie jest często ograniczone przepustowością pamięci, ponieważ wagi muszą zostać odczytane dla każdej predykcji. Strategie optymalizacji różnią się znacząco w obu fazach.
Często zadawane pytania
Jaka jest różnica między wąskimi gardłami w transferze danych i obliczeniach modelu?
Wąskie gardła w transferze danych występują, gdy przesyłanie informacji między pamięcią masową, pamięcią operacyjną a procesorami jest zbyt wolne, pozostawiając zasoby obliczeniowe niewykorzystane. Wąskie gardła w obliczeniach modelu występują, gdy same procesory nie nadążają za arytmetycznymi wymaganiami modelu. Pierwsze dotyczy ruchu, drugie – mocy obliczeniowej.
Jak mogę sprawdzić, czy moje szkolenie jest ograniczone przez dane lub obliczenia?
Sprofiluj swój przebieg treningowy i sprawdź wykorzystanie GPU. Jeśli stale utrzymuje się powyżej 90%, prawdopodobnie limitem są obliczenia. Jeśli waha się znacznie w okresach bezczynności, problem prawdopodobnie leży w transferze danych. Narzędzia takie jak PyTorch Profiler czy NVIDIA Nsight Systems pokazują czas oczekiwania na wejście/wyjście wraz z wykonaniem jądra, aby uzyskać bardziej przejrzysty obraz.
Które wąskie gardło występuje częściej w uczeniu głębokim?
Wąskie gardła w transferze danych są zaskakująco powszechne, niż się spodziewamy, zwłaszcza w procesach produkcyjnych z dużymi zbiorami danych, zdalnym magazynem danych lub złożonym procesem wstępnego przetwarzania. Wiele zespołów zakłada, że potrzebuje więcej procesorów graficznych, podczas gdy prawdziwym rozwiązaniem jest optymalizacja procesu ładowania danych.
Czy można rozwiązać problemy z przesyłem danych bez kupowania nowego sprzętu?
Tak, w większości przypadków. Techniki takie jak prefetching, buforowanie w pamięci, konwersja danych do wydajnych formatów, takich jak TFRecord lub WebDataset, oraz korzystanie z wielu procesów ładowania danych mogą znacząco poprawić przepustowość. Te zmiany w oprogramowaniu często nie kosztują nic poza czasem poświęconym na prace inżynieryjne.
Dlaczego duże modele językowe są często ograniczone obliczeniowo?
Transformatory wykonują masowe mnożenia macierzy i obliczenia wymagające uwagi, które skalują się kwadratowo wraz z długością sekwencji. Operacje te wymagają ogromnej przepustowości w obliczeniach zmiennoprzecinkowych, a właśnie do tego zostały zaprojektowane rdzenie tensorowe. Gdy model ma miliardy parametrów, obciążenie arytmetyczne przerasta nawet najszybsze procesory graficzne.
Jaką rolę odgrywa przepustowość PCIe w przypadku wąskich gardeł?
PCIe to autostrada łącząca pamięć procesora z procesorami graficznymi. PCIe Gen5 oferuje około 128 GB/s, co brzmi szybko, ale staje się limitem przy obsłudze wielu procesorów graficznych dużymi partiami danych. Właśnie dlatego NVIDIA opracowała NVLink, który zapewnia do 900 GB/s między bezpośrednio połączonymi procesorami graficznymi, aby ominąć ograniczenia PCIe.
Czy wnioskowanie napotyka na te same wąskie gardła, co uczenie?
Nie do końca. Trening jest zazwyczaj bardzo intensywny obliczeniowo ze względu na przebiegi w przód i w tył, podczas gdy wnioskowanie jest często ograniczone przepustowością pamięci, ponieważ wagi modelu muszą być ładowane dla każdej predykcji. Dlatego techniki takie jak buforowanie KV i kwantyzacja są ważniejsze w obsłudze niż w treningu.
Jak przechowywanie danych w chmurze wpływa na wąskie gardła transferu danych?
Odczyt z chmurowych magazynów obiektów, takich jak S3 lub GCS, wprowadza opóźnienia sieciowe i ograniczenia przepustowości, których nie mają lokalne dyski NVMe. Nawet w przypadku sieci 100 Gb/s, opóźnienia w obie strony mogą blokować potoki. Rozwiązania obejmują lokalne buforowanie gorących danych, korzystanie z pamięci regionalnej lub strumieniowe przesyłanie zestawów danych w zoptymalizowanych formatach.
Czym jest GPUDirect Storage i czy jest pomocne?
GPUDirect Storage to technologia firmy NVIDIA, która pozwala procesorom graficznym na odczyt danych bezpośrednio z dysków NVMe, bez pośrednictwa procesora. Eliminuje to istotne wąskie gardło w potokach danych i może zwiększyć przepustowość 2-5-krotnie w przypadku obciążeń wymagających dużej liczby operacji wejścia/wyjścia, szczególnie w połączeniu z dużymi rozmiarami partii danych.
Czy podczas skalowania powinienem najpierw zoptymalizować dane czy wykonać obliczenia?
Zacznij od danych. Profilowanie prawie zawsze ujawnia, że potoki danych dają więcej możliwości udoskonalenia niż moc obliczeniowa, a poprawki są tańsze. Gdy wykorzystanie GPU utrzymuje się na stałym, wysokim poziomie, inwestycja w większą liczbę lub lepsze akceleratory przynosi wymierne korzyści.
Wynik
Skoncentruj się na wąskich gardłach transferu danych, gdy wykorzystanie GPU jest niespójne, a zbiory danych są duże lub przechowywane zdalnie. Priorytetem powinny być wąskie gardła obliczeń modeli, gdy akceleratory są stale przeciążone i potrzebujesz większej mocy obliczeniowej. W praktyce większość produkcyjnych systemów uczenia maszynowego (ML) korzysta z rozwiązania obu tych problemów, zaczynając od tańszych optymalizacji potoku danych, zanim zainwestujesz w dodatkowy sprzęt obliczeniowy.