LLM

Paged Attention: jak wirtualizacja pamięci rozwiązuje największe wąskie gardło dużych modeli językowych

Większość dyskusji o wydajności dużych modeli językowych (LLM) koncentruje się na procesorach graficznych jako jednostkach obliczeniowych. Jednak w środowiskach produkcyjnych prawdziwym wyzwaniem nie jest szybkość operacji zmiennoprzecinkowych, lecz efektywne zarządzanie pamięcią VRAM. Każde zapytanie trafiające do modelu wymaga utrzymania tak zwanej pamięci podręcznej KV (Key-Value cache), czyli specyficznego bufora przechowującego dane o tokenach. Pozwala to unikać powtarzania obliczeń dla każdego kolejnego słowa w sekwencji. Tradycyjne metody alokacji tych danych są jednak uderzająco nieefektywne.

Problem sztywnej alokacji

W naiwnym podejściu do obsługi zapytań systemy rezerwują dla każdego użytkownika ciągły blok pamięci odpowiadający maksymalnej możliwej długości sekwencji (na przykład 2048 tokenów). Problem polega na tym, że model nie wie z góry, jak długa będzie odpowiedź. Jeśli średnia długość tekstu wynosi 500 tokenów, a zarezerwowano miejsce na 2048, ponad 75% alokowanej pamięci pozostaje puste i niedostępne dla innych zadań. Przy setce jednoczesnych użytkowników oznacza to dziesiątki gigabajtów zmarnowanej pamięci GPU, co prowadzi do błędów typu Out-of-Memory (OOM) na długo przed pełnym obciążeniem procesora.

Rewolucja w stylu systemów operacyjnych

Rozwiązaniem tego problemu jest Paged Attention – technika, która przenosi koncepcję pamięci wirtualnej i stronicowania bezpośrednio do świata AI. Zamiast rezerwować jeden ogromny blok danych na starcie, system dzieli pamięć podręczną KV na mniejsze, elastyczne fragmenty zwane stronami (na przykład po 16 tokenów każda). Pamięć fizyczna jest przydzielana dynamicznie: nowa strona jest mapowana w tablicy bloków dopiero wtedy, gdy model faktycznie wygeneruje odpowiednią liczbę tokenów.

Metoda ta pozwala na niemal całkowite wyeliminowanie fragmentacji pamięci. Dzięki temu, że strony nie muszą leżeć obok siebie w sensie fizycznym, system może wypełniać wolne luki w pamięci VRAM z chirurgiczną precyzją. Efekt jest natychmiastowy: wykorzystanie zasobów skacze z poziomu 24% w modelu naiwnym do blisko 98% w architekturze opartej na stronicowaniu.

Wstrzykiwanie wydajności przez współdzielenie

Kolejnym przełomem, jaki wprowadza Paged Attention, jest mechanizm Copy-on-Write (CoW). W systemach produkcyjnych wiele zapytań zaczyna się od tego samego promptu systemowego – zestawu instrukcji definiujących zachowanie bota. Zamiast powielać te same dane dla każdego użytkownika, Paged Attention pozwala setkom zapytań wskazywać na te same fizyczne strony pamięci zawierające wspólny prefiks.

Dopiero gdy konkretna sesja zacznie generować unikalną treść, system tworzy prywatną kopię ostatniej strony dla danego zapytania, nie naruszając wspólnych zasobów pozostałych procesów. W scenariuszu z długim promptem systemowym pozwala to zaoszczędzić gigabajty pamięci, które w innym przypadku byłyby zwykłymi duplikatami.

Koniec ery marnotrawstwa

Analiza porównawcza obu metod nie pozostawia złudzeń. Podczas gdy systemy naiwne przy każdej wielkości obciążenia wykazują ogromne straty, Paged Attention utrzymuje stałą, wysoką wydajność niezależnie od liczby zapytań. Jedynym marnotrawstwem pozostaje niewypełniona końcówka ostatniej strony każdego zapytania, co jest kosztem marginalnym w porównaniu z tradycyjnymi metodami. Dla inżynierów AI oznacza to możliwość obsługi znacznie większego ruchu na tej samej infrastrukturze sprzętowej, co bezpośrednio przekłada się na niższe koszty operacyjne i szybszy czas reakcji systemów językowych.