Senior
Jak zmenšit velikost KV cache (GQA, MQA, posuvné okno)?
sobes.tech AI
Odpověď od AI
KV-cache (Key-Value cache) v kontextu modelů s GQA (Grouped Query Attention), MQA (Multi-Query Attention) a posuvným oknem se používá k ukládání mezilehlých klíčů a hodnot pozornosti, aby se urychlila generace textu. Pro snížení velikosti KV-cache lze použít následující přístupy:
- Posuvné okno: ukládat do cache pouze posledních N tokenů, nikoli celou historii. To omezuje velikost cache a snižuje spotřebu paměti.
- MQA místo GQA: MQA používá jeden klíč a hodnotu pro všechny hlavy pozornosti, což výrazně snižuje velikost cache ve srovnání s GQA, kde je pro každou hlavu uložen samostatný klíč a hodnota.
- Kvantizace KV-cache: ukládat klíče a hodnoty ve zkomprimované podobě, například s nižší přesností (float16, int8), aby se snížila velikost paměti.
- Odstranění irelevantních prvků: pravidelně čistit nebo komprimovat cache, odstraňovat zastaralé nebo méně důležité prvky.
Příklad použití posuvného okna:
window_size = 512 # počet tokenů v cache
kv_cache = kv_cache[-window_size:]
Kombinací těchto metod lze efektivně snížit velikost KV-cache bez významné ztráty kvality generovaného textu.