Sobes.tech
Senior

Hogyan csökkenthető a KV-cache mérete (GQA, MQA, csúszó ablak)?

sobes.tech MI

Válasz az MI-től

A KV-cache (Kulcs-Érték gyorsítótár) a GQA (Csoportos Lekérdezés Figyelem), MQA (Multi-Query Attention) és csúszó ablak kontextusában az ideiglenes kulcsok és értékek tárolására szolgál, hogy felgyorsítsa a szöveg generálását. A KV-cache méretének csökkentése érdekében az alábbi megközelítések alkalmazhatók:

  • Csúszó ablak: csak az utolsó N token tárolása a gyorsítótárban, a teljes történet helyett. Ez korlátozza a gyorsítótár méretét és csökkenti a memóriafelhasználást.
  • MQA a GQA helyett: az MQA egyetlen kulcsot és értéket használ minden figyelemfejhez képest, ami jelentősen csökkenti a gyorsítótár méretét a GQA-hoz képest, ahol minden fejhez külön kulcs és érték tartozik.
  • KV-cache kvantálása: a kulcsokat és értékeket tömörített formában tárolja, például alacsonyabb pontossággal (float16, int8), hogy csökkentse a memória mennyiségét.
  • Nem releváns elemek eltávolítása: időszakosan tisztítani vagy tömöríteni a gyorsítótárat, eltávolítva a régi vagy kevésbé fontos elemeket.

A csúszó ablak használatának példája:

window_size = 512  # tokenek száma a gyorsítótárban
kv_cache = kv_cache[-window_size:]

Ezeknek a módszereknek a kombinációjával hatékonyan csökkenthető a KV-cache mérete anélkül, hogy jelentősen romlana a generált szöveg minősége.