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”.