Sobes.tech
Senior

Kā samazināt KV kešatmiņas izmēru (GQA, MQA, slīdņu logs)?

sobes.tech AI

Atbilde no AI

GKV kešs (Key-Value cache) GQA (Grouped Query Attention), MQA (Multi-Query Attention) un slīdēšanas loga kontekstā tiek izmantots starpposma atslēgu un vērtību glabāšanai, lai paātrinātu teksta ģenerēšanu. Lai samazinātu GKV keša izmēru, var piemērot šādus pieejas:

  • Slīdēšanas logs: glabāt kešā tikai pēdējos N tokenus, nevis visu vēsturi. Tas ierobežo keša izmēru un samazina atmiņas patēriņu.
  • MQA vietā GQA: MQA izmanto vienu atslēgu un vērtību visām uzmanības galvām, kas ievērojami samazina keša izmēru salīdzinājumā ar GQA, kur katrai galvai ir atsevišķa atslēga un vērtība.
  • KV keša kvantizācija: glabāt atslēgas un vērtības saspiestā formā, piemēram, ar zemāku precizitāti (float16, int8), lai samazinātu atmiņas apjomu.
  • Nerelevantu elementu dzēšana: periodiski attīrīt vai saspiest kešu, izņemot novecojušus vai mazāk svarīgus elementus.

Piemērs, kā izmantot slīdēšanas logu:

window_size = 512  # tokenu skaits kešā
kv_cache = kv_cache[-window_size:]

Apvienojot šīs metodes, var efektīvi samazināt GKV keša izmēru, nemainot būtiski ģenerētā teksta kvalitāti.