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.