Sobes.tech
Senior

Как да намалим размера на KV кеша (GQA, MQA, плъзгащ се прозорец)?

sobes.tech AI

Отговор от AI

KV кешът (Key-Value cache) в контекста на модели с GQA (Grouped Query Attention), MQA (Multi-Query Attention) и плъзгащ прозорец се използва за съхраняване на междинни ключове и стойности на вниманието, за да ускори генерирането на текст. За намаляване на размера на KV кеша могат да се приложат следните подходи:

  • Плъзгащ се прозорец: съхранявайте в кеша само последните N токена, а не цялата история. Това ограничава размера на кеша и намалява използването на памет.
  • MQA вместо GQA: MQA използва един ключ и стойност за всички глави на вниманието, което значително намалява размера на кеша в сравнение с GQA, където за всяка глава се съхранява отделен ключ и стойност.
  • Квантизация на KV кеша: съхранявайте ключовете и стойностите в компресирана форма, например с по-ниска точност (float16, int8), за да намалите обема на паметта.
  • Премахване на неактуални елементи: периодично почиствайте или компресирайте кеша, като премахвате остарели или по-малко важни елементи.

Пример за използване на плъзгащ прозорец:

window_size = 512  # брой токени в кеша
kv_cache = kv_cache[-window_size:]

Чрез комбиниране на тези методи може ефективно да се намали размерът на KV кеша без значителна загуба в качеството на генерирания текст.