kvcached: Elastyczne zarządzanie pamięcią GPU kluczem do efektywniejszego serwowania dużych modeli językowych
Zarządzanie pamięcią GPU jest kluczowym wyzwaniem w efektywnym serwowaniu dużych modeli językowych (LLM). Dotychczasowe rozwiązania często borykały się z marnotrawstwem zasobów, rezerwując duże, statyczne obszary pamięci KV cache dla każdego modelu, niezależnie od rzeczywistego zapotrzebowania. Problem ten nasila się w środowiskach o zmiennym obciążeniu, gdzie modele mogą być aktywne sporadycznie lub w krótkich „szczytach” użycia.
W odpowiedzi na te wyzwania, badacze z Berkeley’s Sky Computing Lab (University of California, Berkeley), we współpracy z Rice University i UCLA, a także z udziałem ekspertów z NVIDIA i Intel Corporation, opracowali 'kvcached’. Jest to biblioteka, która wprowadza abstrakcję pamięci wirtualnej w stylu systemu operacyjnego dla pamięci podręcznej KV. Dzięki temu silniki serwujące LLM mogą najpierw rezerwować ciągłą przestrzeń wirtualną, a fizyczne strony GPU są przydzielane dynamicznie, tylko gdy są aktywnie używane.
Jak działa kvcached?
Podstawą działania kvcached jest utworzenie puli pamięci KV cache, która jest ciągła w wirtualnej przestrzeni adresowej. Gdy napływają tokeny, biblioteka leniwie mapuje fizyczne strony GPU z dużą dokładnością, wykorzystując do tego celu interfejsy API pamięci wirtualnej CUDA. Po zakończeniu żądań lub przejściu modeli w stan bezczynności, zwolnione strony wracają do współdzielonej puli, którą mogą natychmiastowo wykorzystać inne modele współlokowane na tym samym urządzeniu. Takie podejście zachowuje prostą arytmetykę wskaźników w jądrach i eliminuje potrzebę stronicowania na poziomie użytkownika dla każdego silnika.
Kluczowe korzyści i zastosowania
Kvcached to nie tylko teoretyczne usprawnienie. Zespoły badawcze odnotowują przyspieszenie czasu do pierwszego tokena (TTFT) od 1,2 do 28 razy w scenariuszach serwowania wielu modeli. Wynika to z natychmiastowego ponownego wykorzystania zwolnionych stron oraz eliminacji dużych, statycznych alokacji pamięci. Jest to szczególnie istotne w środowiskach produkcyjnych, gdzie wiele modeli obsługuje ruch o długim ogonie i gwałtownych skokach.
Co istotne, biblioteka została zaprojektowana z myślą o integracji z takimi silnikami jak SGLang i vLLM, a jej udostępnienie na licencji Apache 2.0 ułatwia adopcję i modyfikację w istniejących stosach produkcyjnych. Koncentracja na efektywnym zarządzaniu pamięcią wpisuje się w szerszy trend, gdzie prace takie jak Prism pokazują, że koordynacja pamięci między modelami w czasie rzeczywistym, poza samym harmonogramowaniem obliczeń, jest niezbędna do osiągnięcia znacznych oszczędności kosztów (ponad dwukrotnie) i zwiększenia zgodności z TTFT SLO (3,3 razy wyższa).
Wpływ na architekturę serwowania LLM
Wirtualizacja pamięci KV cache wprowadza szereg usprawnień w operacyjnych aspektach serwowania LLM:
- Współlokacja modeli: Silniki mogą współlokować wiele mniejszych lub średnich modeli na jednym urządzeniu. Gdy jeden model staje się nieaktywny, jego strony KV są szybko zwalniane, a inny model może rozszerzyć swój zestaw roboczy bez konieczności ponownego uruchamiania. Redukuje to blokowanie „head of line” podczas szczytów i poprawia osiąganie TTFT SLO.
- Aktywacja: Biblioteka umożliwia rezerwowanie wirtualnych zakresów adresowych z wyprzedzeniem, co pozwala na szybszą aktywację modeli. Badania Prism wskazują na czasy aktywacji rzędu 0,7 sekundy dla modelu 8B i około 1,5 sekundy dla modelu 70B, co ma bezpośrednie przełożenie na wydajność.
- Autoskalowanie bezserwerowe: Precyzyjne mapowanie stron umożliwia częstsze skalowanie replik i utrzymywanie zimnych modeli w „rozgrzanym” stanie przy minimalnym zużyciu pamięci. Prowadzi to do bardziej elastycznych pętli autoskalowania i zmniejsza ryzyko przeciążeń.
Rozwój i perspektywy
Wirtualna pamięć otwiera także drogę do odciążania pamięci KV do pamięci hosta lub pamięci NVMe, gdy wzorzec dostępu na to pozwala. Przykładem są rozwiązania NVIDIA dla systemów klasy GH200, które wykorzystują ujednolicone przestrzenie adresowe do rozszerzenia pojemności przy akceptowalnych narzutach. Zespół kvcached aktywnie bada możliwości odciążania i kompresji, co wskazuje na dalszy rozwój w kierunku optymalizacji wykorzystania zasobów.
Kvcached nie jest pełnym systemem operacyjnym, a jedynie efektywnym podejściem do wirtualizacji pamięci GPU dla serwowania LLM. Jest to jasność, która ma znaczenie. Biblioteka rezerwuje wirtualną przestrzeń adresową dla pamięci podręcznej KV, a następnie dynamicznie mapuje fizyczne strony, co umożliwia elastyczne współdzielenie między modelami przy minimalnych zmianach w silniku inferencyjnym. To podejście jest zgodne z dowodami na to, że między modelowa koordynacja pamięci jest niezbędna dla obciążeń z wieloma modelami i poprawia osiąganie SLO oraz redukuje koszty w rzeczywistych scenariuszach. Ostateczna wartość produkcyjna będzie jednak zależała od walidacji w konkretnym klastrze.
