Jak hierarchia pamięci GPU wpływa na szybkość inferencji LLM
Tłumaczenie automatyczne
Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.
Hierarchia pamięci GPU wpływa na inferencję LLM, ponieważ przeniesienie tensora pośredniego do pamięci głównej GPU kosztuje więcej niż jego ponowne użycie w działającym jądrze. HBM przechowuje duży model i pamięć podręczną mechanizmu uwagi. Rejestry, pamięć współdzielona i L2 zapewniają mniejsze obszary, w których można ponownie używać danych podczas obliczeń.
Inżynierowie profilujący inferencję muszą odróżniać pojemność pamięci od ruchu w pamięci. To, że model mieści się w HBM, nie dowodzi, że jego jądra wydajnie przenoszą dane.
Co przechowują poszczególne rodzaje pamięci
| Pamięć | Zakres | Rola w inferencji |
|---|---|---|
| Rejestry | Wartości używane przez wątek | Akumulatory i obliczenia pośrednie |
| Pamięć współdzielona | Wątki w jednym bloku obliczeniowym | Wspólne ponowne użycie fragmentów macierzy i redukcji |
| Pamięć podręczna L2 | Współdzielona w całym GPU | Ponowne użycie między blokami bez kolejnego odczytu z pamięci głównej |
| HBM | Pamięć główna GPU | Wagi, KV cache, dane wejściowe, dane wyjściowe i większe wyniki pośrednie |
Dla H100 SXM NVIDIA podaje 80 GB HBM3 o przepustowości 3.35 TB/s, 50 MB L2 i do 228 KB pamięci współdzielonej na multiprocesor strumieniowy. Ilość dostępna dla pojedynczego bloku wątków jest mniejsza i zależy od ustawień alokacji. Są to specyfikacje tego wariantu GPU, a nie limity wspólne dla wszystkich H100. Zobacz specyfikację H100 i przewodnik optymalizacji Hopper.
Dlaczego tensor pośredni ma znaczenie
Sekwencja osobnych jąder może zapisać wynik pośredni w HBM i odczytać go ponownie w następnym jądrze. Fuzja może utrzymać ten wynik w rejestrach lub pamięci współdzielonej. FlashAttention stosuje podobne zasady ponownego użycia danych do mechanizmu uwagi, unikając dużych macierzy wyników w HBM.
Pamięć na układzie jest ograniczona. Jądro, które używa zbyt wielu rejestrów lub zbyt dużo pamięci współdzielonej, może zmniejszyć liczbę bloków działających jednocześnie. Przenoszenie wartości z rejestrów do pamięci przy braku miejsca może zwiększyć ruch w pamięci. Większa fuzja nie gwarantuje więc szybszego wykonania.
Badając zmianę, porównaj liczbę bajtów przesłanych przez HBM, użycie rejestrów, użycie pamięci współdzielonej, przenoszenie wartości z rejestrów do pamięci oraz liczbę aktywnych bloków. Zachowaj ten sam model, kształty tensorów, precyzję i wariant GPU. Następnie zmierz całe żądanie: szybsze jądro mechanizmu uwagi może odpowiadać tylko za niewielką część całkowitego opóźnienia.
Przewodnik inżynierski: hierarchia pamięci GPU pokazuje, gdzie znajdują się te rodzaje pamięci w H100 SXM.