KV cache je optimalizační technika inference autoregresivních modelů, která ukládá vypočtené klíče a hodnoty mechanismu pozornosti pro už zpracované tokeny, aby se nemusely počítat znovu. Bez ní by model při generování n-tého tokenu musel provést průchod pozorností přes celý prefix, což vede ke kvadratickému celkovému nákladu na délku odpovědi. S cachí se v každém kroku dopočítá pouze jediný nový klíč a jedna nová hodnota, které se do paměti připojí, a nový dotaz se porovná s uloženým obsahem – náklad na krok se tak stává lineárním. Cenou je paměť: velikost cache roste s délkou kontextu, počtem vrstev, počtem hlav i s počtem souběžně obsluhovaných uživatelů a u dlouhých kontextů běžně převyšuje velikost samotných vah modelu. Právě proto vznikly architektonické úpravy jako multi-query a grouped-query attention, které nechají několik hlav sdílet tytéž klíče a hodnoty, a dále kvantizace cache či její stránkování (PagedAttention). KV cache také umožňuje předpočítat a opakovaně používat stabilní část promptu.
Je to jako když si při čtení dlouhého románu vedete průběžný zápisník postav a událostí. Kdybyste ho neměli, museli byste před každou novou stránkou přelistovat celou knihu od začátku, abyste si vybavili, kdo je kdo – a čtení by se s každou stránkou zpomalovalo. Se zápisníkem stačí přidat jednu řádku o tom, co se právě stalo, a jednou nahlédnout. Číst tak zvládnete stejně rychle na straně sedmisté jako na straně druhé. Nevýhoda? Zápisník postupně roste a zabírá místo na stole – a když čtete deset knih současně, stůl vám na to přestane stačit.