Sobes.tech
Senior

Kuidas vähendada KV-vahemälu suurust (GQA, MQA, libisev aken)?

sobes.tech AI

Vastus AI-lt

KV-vahemälu (Key-Value cache) GQA (Grouped Query Attention), MQA (Multi-Query Attention) ja libiseva akna kontekstis kasutatakse vahepealsete võtmete ja väärtuste salvestamiseks, et kiirendada teksti genereerimist. KV-vahemälu suuruse vähendamiseks saab rakendada järgmisi lähenemisviise:

  • Libiseva akna: salvestada vahemälu ainult viimased N tokenit, mitte kogu ajalugu. See piirab vahemälu suurust ja vähendab mälu kasutust.
  • MQA GQA asemel: MQA kasutab ühte võtit ja väärtust kõigi tähelepanupeade jaoks, mis oluliselt vähendab vahemälu suurust võrreldes GQA-ga, kus iga pea jaoks salvestatakse eraldi võti ja väärtus.
  • KV-vahemälu kvantiseerimine: salvestada võtmed ja väärtused tihendatud kujul, näiteks madalama täpsusega (float16, int8), et vähendada mälu mahtu.
  • Mitteasjakohaste elementide eemaldamine: perioodiliselt puhastada või tihendada vahemälu, eemaldades vananenud või vähem olulised elemendid.

Näide libiseva akna kasutamisest:

window_size = 512  # tokenite arv vahemälus
kv_cache = kv_cache[-window_size:]

Nende meetodite kombineerimisega saab tõhusalt vähendada KV-vahemälu suurust, ilma olulise kvaliteedi kaotamata teksti genereerimisel.