Sobes.tech
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.