Sobes.tech
Senior

Kako smanjiti veličinu KV keš memorije (GQA, MQA, klizni prozor)?

sobes.tech АИ

Одговор од АИ

KV-keš (Key-Value keš) u kontekstu modela sa GQA (Grouped Query Attention), MQA (Multi-Query Attention) i kliznim prozorom koristi se za skladištenje međuzavisnih ključeva i vrednosti pažnje, kako bi se ubrzala generacija teksta. Za smanjenje veličine KV-keša, mogu se primeniti sledeći pristupi:

  • Klizni prozor: čuvati u kešu samo poslednjih N tokena, umesto cele istorije. Ovo ograničava veličinu keša i smanjuje potrošnju memorije.
  • MQA umesto GQA: MQA koristi jedan ključ i vrednost za sve glave pažnje, što znatno smanjuje veličinu keša u poređenju sa GQA, gde se za svaku glavu čuva poseban ključ i vrednost.
  • Kvantizacija KV-keša: čuvati ključeve i vrednosti u kompresovanom obliku, na primer, sa nižom preciznošću (float16, int8), radi smanjenja volumena memorije.
  • Uklanjanje nerelevantnih elemenata: periodično čistiti ili kompresovati keš, uklanjajući zastarele ili manje važne elemente.

Primer korišćenja kliznog prozora:

window_size = 512  # broj tokena u kešu
kv_cache = kv_cache[-window_size:]

Kombinovanjem ovih metoda, može se efikasno smanjiti veličina KV-keša bez značajnog gubitka u kvalitetu generisanog teksta.