KV cache
forkortelse for Key-Value cache
En KV cache er en hukommelsesstruktur, der gemmer Key- og Value-vektorerne fra tidligere attention-beregninger i en transformer-model for at undgå genberegning under autoregressiv generering.
Kort fortalt
KV cache gemmer de mellemliggende data fra self-attention, så modellen ikke skal genberegne dem for hvert nyt token – det gør tekstgenerering hurtigere.
- Kategori
- teknik
- Niveau
- øvet
- Udtale
- /ˈkeɪˈviː kæʃ/
Betydninger
1- 1
En teknik i transformer-modeller, hvor Key- og Value-vektorerne fra self-attention-lagene for tidligere tokens gemmes i en cache, så de kan genbruges i efterfølgende generationstrin uden at skulle genberegnes.
- Implementering af KV cache reducerer inferenstiden markant, da den kvadratiske kompleksitet i attention-længden erstattes af lineær kompleksitet pr. trin.
- For at minimere hukommelsesforbruget kan KV cachen komprimeres eller evictes efter en vis sekvenslængde.
Hvornår bruges det
KV cache bruges primært under inferens i autoregressive sprogmodeller som GPT-serien. Ved at cache Key- og Value-matricerne for alle tidligere tokens reduceres den beregningsmæssige byrde pr. nyt token betydeligt, især ved lange sekvenser.
Kodeeksempel
class KVCache:
def __init__(self):
self.cache = {} # layer -> (keys, values)
def update(self, layer, keys, values):
if layer not in self.cache:
self.cache[layer] = (keys, values)
else:
old_k, old_v = self.cache[layer]
self.cache[layer] = (torch.cat([old_k, keys], dim=2),
torch.cat([old_v, values], dim=2))
def get(self, layer):
return self.cache.get(layer, (None, None))En simpel Python-klasse, der illustrerer en KV cache: Cachen gemmer Key- og Value-tensorer for hvert lag og samler dem over tid.
Oprindelse
Udtrykket er dannet af 'Key' og 'Value' fra attention-mekanismen i transformere og 'cache' (en buffer til hurtig genbrug af data).
Kilder
1- The Illustrated Transformer – Jay Alammar