RadixAttention od SGLang skróciło czas oczekiwania na pierwszy token (warm-up TTFT) do 68 ms na konfiguracji z dwiema kartami RTX 3090, podczas gdy PagedAttention od vLLM utknęło na poziomie 184 ms — daje to 82,9% różnicy w opóźnieniu, co sprawia, że interakcje z agentami wieloturowymi stają się wyraźnie płynniejsze.
Oba projekty dążą do przyspieszenia wnioskowania dużych modeli językowych (LLM), jednak benchmark ten skupia się na obciążeniach napędzających autonomicznych asystentów: długich promptach systemowych, schematach wywoływania narzędzi (tool-calling) oraz ciągłej historii interakcji użytkownik-asystent. Powtarzające się tokeny znajdują się w pamięci GPU; jeśli pamięć podręczna nie jest zarządzana wydajnie, stają się one wąskim gardłem obliczeniowym, które spowalnia konwersację.
Obciążenie, które przeważyło szalę
Tradycyjne serwery LLM optymalizują pojedynczą wymianę informacji — prompt użytkownika, odpowiedź modelu i koniec. Nowoczesne agenty utrzymują jednak „stan konwersacji”, który może obejmować dziesiątki tur, z których każda dodaje setki tokenów do pamięci podręcznej. Pakiet testowy odtworzył taką wieloturową pętlę na dwóch kartach RTX 3090, mierząc:
- Warm time-to-first-token (TTFT) – opóźnienie przed pojawieniem się pierwszego tokena po rozpoczęciu nowej tury.
- Overall latency – średni czas na token w całej pętli.
- Sustained throughput – liczba tokenów przetwarzanych na sekundę podczas ciągłego działania pętli.
- Cache-hit ratio – stosunek tokenów ponownie wykorzystanych z pamięci podręcznej klucz-wartość (KV) zamiast ich ponownego przeliczania.
SGLang pokonało vLLM w każdej metryce: TTFT wyniosło 68 ms vs 184 ms, co oznacza redukcję opóźnienia o 82,9%, przepustowość wyższą o 39,8% oraz cache-hit ratio na poziomie 96,8% w porównaniu do 84,2% w vLLM.
PagedAttention vs RadixAttention
Oba silniki przechowują pośrednie pary KV w pamięci GPU, ale organizują tę pamięć w różny sposób.
- PagedAttention (vLLM) dzieli pamięć podręczną na bloki o stałym rozmiarze. Jeśli prompt kończy się w środku bloku, końcowe tokeny muszą być przeliczane w każdej turze, ponieważ bloku nie można wykorzystać częściowo. Podejście to jest proste i sprawdza się, gdy prompty pokrywają się z granicami bloków, ale marnuje cykle obliczeniowe na tokeny „brzegowe”, które najczęściej zmieniają się w pętlach agentów.
- RadixAttention (SGLang) traktuje pamięć podręczną jako drzewo. Znajduje najdłuższy wspólny prefiks między bieżącym promptem a tym, co jest już w pamięci podręcznej, niezależnie od limitów bloków, i przycina nieużywane liście. Pozwala to na pozostawienie ogromnego promptu systemowego w pamięci GPU, podczas gdy przetwarzana jest tylko najnowsza tura, co zwiększa cache-hit ratio i redukuje zbędną pracę.
Kiedy dany silnik sprawdza się najlepiej
| Scenariusz | Preferowany silnik |
|---|---|
| Agenci autonomiczni wieloturowi, intensywne wywoływanie narzędzi, rozumowanie tree-of-thought | SGLang (RadixAttention) |
| Szerokie wsparcie sprzętowe (w tym akceleratory AMD i Gaudi), dekodowanie spekulatywne, modele wizualno-językowe | vLLM (PagedAttention) |
Różnica nie polega tylko na wydajności; chodzi także o ekosystem. Szersza kompatybilność sprzętowa vLLM sprawia, że jest to bezpieczniejszy wybór domyślny dla organizacji posiadających heterogeniczne klastry obliczeniowe. Funkcja dekodowania spekulatywnego (speculative decoding) — generowanie wielu kandydatów na tokeny równolegle — może przyspieszyć generowanie jednoturowe, co jest niszą, w której drzewiaste buforowanie RadixAttention oferuje mniejszą przewagę.
Podsumowanie
Dla programistów budujących wieloturowych agentów, którzy muszą radzić sobie z długimi promptami i przyrostowymi aktualizacjami, RadixAttention od SGLang zapewnia znacznie szybsze i bardziej wydajne pod kątem pamięci podręcznej doświadczenie na konsumenckich kartach GPU. Zespoły potrzebujące szerokiego wsparcia sprzętowego lub specjalizujące się w generowaniu jednoturowym mogą nadal skłaniać się ku vLLM. Wybór zależy teraz od tego, czy obciążenie jest „zorientowane na agentów”, czy „zróżnicowane sprzętowo”.
