DX Heroes logo
#ai
#llm

Co je KV cache?

Délka: 

5 min

Publikováno: 

12. srpna 2026

Co je KV cache?

Co je KV cache?

KV cache je pracovní paměť, kterou si transformer drží po dobu generování textu. Self-attention z každého tokenu vyrobí tři vektory: dotaz (query), klíč (key) a hodnotu (value). Aby model určil další token, potřebuje klíče a hodnoty všech tokenů před ním. Ty se ale spočítáním už nemění, takže není důvod je počítat znovu. Model si je odloží a jen si je přečte. Tomu odkladišti se říká KV cache.

Generování má dvě fáze. V prefillu projede model celý prompt najednou a cache tím naplní. V dekódování pak přidává token po tokenu: pro každý nový spočítá jeden klíč a jednu hodnotu, přidá je do cache a pozornost rozprostře přes všechno, co v ní už leží. Bez cache by se každý krok počítal od začátku a náročnost dlouhé odpovědi by rostla přibližně s druhou mocninou její délky.

Lidsky řečeno

Zkuste si představit, že u každé nové věty v knize musíte začít znovu od první stránky. Tak pracuje model bez KV cache. Cache je záložka i vaše vzpomínka na děj v jednom: co jste přečetli, to si držíte, mrknete se na to a čtete dál. Nic se nečte podruhé, a tak vás každá další věta stojí přibližně stejně jako ta předchozí.

Kde leží a kolik zabere

Cache se drží v paměti grafické karty hned vedle vah modelu a s každým tokenem povyroste. Její velikost závisí na počtu vrstev, počtu key-value hlav, délce kontextu a velikosti dávky. U dlouhých kontextů si běžně vezme víc místa než samotné váhy. Proto se stane, že model se do karty pohodlně nahraje, a přesto v polovině dlouhé konverzace narazí na strop.

Právě kvůli tomuto tlaku vznikla většina triků, které se kolem cache dneska používají:

  • Grouped-query attention. Několik dotazovacích hlav se dělí o jednu sadu key-value hlav. Cache se tím zmenší několikanásobně a na kvalitě se to skoro nepozná.
  • Kvantizace cache. Klíče a hodnoty se místo 16 bitů ukládají v 8 nebo 4 bitech.
  • Paged attention. Vrstva, která model obsluhuje, drží cache v blocích pevné velikosti, podobně jako operační systém stránkuje paměť. Dlouhé i krátké požadavky se pak vejdou na jednu kartu, aniž by ji rozdrobily.
  • Vyhazování a komprese. Tokeny, na které se pozornost skoro nedívá, se zahodí nebo shrnou, aby se cache vešla do rozpočtu.

Proč na tom záleží i mimo grafickou kartu

Většina týmů se KV cache nikdy nedotkne přímo a přesto ji platí každý den. Prompt caching na úrovni API je totéž, jen zabalené jako funkce: poskytovatel podrží spočítaný stav pro stabilní začátek promptu, opakovaný požadavek tak přeskočí prefill a účtuje se za zlomek běžné ceny vstupu.

Z chování cache se tím stává architektonické rozhodnutí:

  • Stabilní začátek promptu je páka na náklady. Dopředu patří to, co se nemění: systémový prompt, definice nástrojů, dokumentace projektu. Proměnlivé věci dozadu. Jediný změněný bajt na začátku zneplatní všechno za sebou.
  • Agentní smyčka na tom stojí. Agent posílá v každém kroku dlouhý a téměř totožný kontext. S teplou cache je to skoro zdarma. Bez ní zaplatíte plný prefill pokaždé znovu.
  • Krácení kontextu se může vymstít. Když vyhodíte staré kroky z prostředka konverzace, prompt se zkrátí, ale nakešovaný začátek se rozbije. Účet pak umí jít nahoru, ne dolů.
  • Latence kopíruje totéž. Čas do prvního tokenu je hlavně čas prefillu. Zásah v cache tedy pozná uživatel, nejen finanční oddělení.

Na co si dát pozor

  • Není to key-value databáze. Název svádí k Redisu, jenže tady žádná databáze neběží. Klíče a hodnoty jsou vektory pozornosti, ne záznamy, na které se dá poslat dotaz.
  • Není to paměť mezi konverzacemi. Cache žije jeden požadavek nebo jedno okno nakešovaného začátku. Chatovací API zůstávají bezstavová, historii tedy posílá klient znovu v každém kroku.
  • Mezi modely se přenést nedá. Klíče a hodnoty vznikly z vah jednoho konkrétního modelu, jiný je nepřečte. Přesměrujte požadavek jinam a prefill zaplatíte znovu.
  • Nakešovaný začátek vydrží krátce. Poskytovatelé ho drží minuty, ne dny, pokud si nepřiplatíte za delší okno. Úspěšnost cache naměřená ve špičce tedy přes noc neplatí.
  • Vyhození tokenů nemusí uvolnit nic. Když server drží cache po blocích, zahození jednotlivých tokenů uvnitř bloku do poolu nic nevrátí. Vracejí se jen celé bloky.
  • Na výstup se sleva nevztahuje. Cache ubírá opakovanou práci v prefillu. Vygenerované tokeny se počítají jednou a účtují v plné výši, pokaždé.

Související články

  • Co je kontextové okno? - Limit, do kterého se KV cache musí vejít, a co se děje, když se k němu blížíte.
  • Co je AI inference? - Smyčka prefillu a dekódování, kterou cache zrychluje.
  • Co je token v AI? - Jednotka, ve které se cache měří i účtuje.
  • Co je transformer model? - Odkud se dotazy, klíče a hodnoty vůbec berou.
  • Co je context rot? - Proč dlouhý kontext zhoršuje odpovědi, i když se do paměti vejde.
  • Context engineering: nová dovednost vývojářů - Jak prompt poskládat tak, aby stabilní části zůstaly nakešovatelné.

Chcete být o krok napřed?

Nenechte si utéct naše nejlepší postřehy. Žádný spam, jen praktické analýzy, pozvánky na exkluzivní eventy a shrnutí podcastů přímo do vaší schránky.