Přeskočit na obsah
Infrastruktura 3 min čtení

Ray 2.58 zohledňuje KV cache při směrování dotazů mezi replikami

Ray 2.58 dokončil směrování požadavků podle toho, kolik jejich prefixu už leží v KV cache jednotlivých replik. Router převádí text na tokeny jednou, sleduje bloky v paměti GPU i RAM a při výběru započítá i rozdělanou práci.

Síťový přepínač a optické moduly v serverovém stojanu
Směrování požadavků se v datovém centru odehrává mezi mnoha stroji. Foto: LSST Project/NSF/AURA, Wikimedia Commons (CC BY 4.0)

Ray vydal 23. srpna verzi 2.58.0 a v ní dokončil směrování požadavků pro jazykové modely podle KV cache a počtu tokenů. Funkce byla v předchozí verzi teprve náhledem. Hotové balíčky se stejným číslem se objevily také v registru PyPI pro Python 3.10 až 3.14.

Router hledá už spočítaný začátek dotazu

KV cache ukládá klíče a hodnoty pozornosti, které model spočítal při čtení vstupu. Když několik požadavků začíná stejným systémovým pokynem, dokumentem nebo historií chatu, může server společný začátek znovu použít. Ušetří tím část fáze prefill, tedy zpracování vstupu před prvním vygenerovaným tokenem.

V clusteru je ale podstatné, která replika příslušné bloky drží. Obyčejné kruhové směrování může poslat pokračování rozhovoru na jiný stroj a výhoda cache zmizí. Ray proto nejdřív převede text na tokeny přímo ve vstupní replice LLMRouter. Změna #64642 odstranila dřívější dotaz na rozhraní /tokenize jedné modelové repliky, který ležel v kritické cestě každého požadavku.

Vybraný server už tentýž text nemusí převádět podruhé. Router mu pošle identifikátory tokenů vedlejším kanálem přes ZMQ a běžný HTTP požadavek nese jen klíč. Návrh #65095 tuhle cestu popisuje jako best effort: pokud tokeny nedorazí včas nebo kanál není dostupný, vLLM provede tokenizaci obvyklým způsobem. Výpadek pomocné optimalizace tedy nemá shodit samotné generování.

Každý vstupní router potřebuje stejný obraz zátěže

Jedna směrovací replika by se s růstem provozu stala úzkým hrdlem. Když jich ale běží víc, každá původně viděla jen požadavky, které sama odeslala. Změna #64949 proto posílá všem vstupním replikám události o přidání požadavku, dokončení prefillingu, průběhu generování a ukončení. Jedna nedostupná replika ostatní nezastaví; chyba jejího doručení se zapíše jako varování.

Samotný výběr serveru a rezervace místa proběhnou v jednom atomickém kroku uvnitř routeru. Teprve potom se rezervace asynchronně rozešle jeho protějškům. Autoři změny #65010 tím řeší shlukování požadavků: dva routery by podle stejného starého snímku zátěže mohly současně vybrat tutéž repliku. Nejde však o globální zámek. Ostatní routery dostanou nový stav s krátkým zpožděním, takže jejich pohled je nakonec shodný, ne okamžitě totožný.

Do zásahu cache se počítá i RAM

Nová verze nevidí jen bloky v paměti GPU. Změna #65063 přidala události pro bloky odložené do paměti procesoru. Směrovač tak může poslat požadavek na repliku, která společný prefix nemá právě na GPU, ale dovede ho z RAM načíst. Zásah v RAM není stejně rychlý jako zásah v GPU; systém pouze ví, kde data leží, a může tuto informaci zahrnout do skóre spolu s rozpracovanou zátěží.

Vydání nedává jedno číslo zrychlení

Poznámky k Ray 2.58 neuvádějí přenositelné měření latence ani propustnosti. Jednotlivé návrhy obsahují grafy z vývojových zkoušek, ale ty nestačí k tvrzení, že každé nasazení zrychlí o určité procento. Výsledek závisí na tom, jak často se začátky požadavků opakují, kolik cache se vejde na GPU a jak drahé je načtení z RAM.

Smysl tohoto směru potvrzuje nezávislá práce Preble. Její autoři na dvou otevřených modelech a skutečných vzorcích provozu společně optimalizovali opakované prefixy a rozdělení výpočetní zátěže. Je to jiný systém než Ray a jeho výsledky nelze na verzi 2.58 přenést. Ukazuje ale přesně tentýž kompromis: replika s největší shodou v cache nemusí být nejlepší volbou, pokud už má plnou frontu.

Pro provozovatele je proto důležitější nový přehled o umístění bloků než slibovaná násobná zrychlení. Ray 2.58 spojuje stav cache na GPU a v RAM se stavem rozdělaných požadavků. Teprve měření na vlastním provozu ukáže, zda opakovaných prefixů přichází dost na to, aby složitější směrování přineslo úsporu.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Infrastruktura

    Google Cloud začal nabízet modely OpenAI vybraným firmám v uzavřené zkoušce

    Google Cloud otevřel vybraným firmám uzavřenou zkoušku modelů GPT-6 Astra, GPT-6.1 Sol a GPT-6 Luna. Spotřeba se započítá do stávajících cloudových smluv; nulové…

  2. Infrastruktura

    Mistral spustil veřejnou zkoušku hlasových modelů Voxtral 3

    Mistral uvedl Voxtral 3 pro přepis nahrávek, tvorbu řeči a hlasové agenty. Za agenta s modelem Mistral Small 4 žádá od čtyř centů za minutu; samostatný přepis má jiný…

  3. Infrastruktura

    Nvidia slíbila britskému výzkumu bezpečnosti AI kapacitu za 250 milionů dolarů

    Nvidia poskytne britskému výzkumu bezpečnosti AI výpočetní kapacitu oceněnou na 250 milionů dolarů během pěti let. Většina má sloužit širší výzkumné obci; podíl dostanou…

  4. Infrastruktura

    AMD bude ručit za nájem TensorWave v datovém centru Fermi až po dokončení stavby

    Fermi 13. října oznámila, že jí AMD dá úvěrovou podporu k nájemní smlouvě s provozovatelem cloudu TensorWave na první etapu kampusu Project Matador v Texasu. Od kdy AMD…