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.