Senior
Jak zmniejszyć rozmiar pamięci podręcznej KV (GQA, MQA, okno przesuwne)?
sobes.tech AI
Odpowiedź od AI
Pamięć podręczna KV (Key-Value) w kontekście modeli z GQA (Grouped Query Attention), MQA (Multi-Query Attention) i przesuwanym oknem jest używana do przechowywania tymczasowych kluczy i wartości uwagi, aby przyspieszyć generację tekstu. Aby zmniejszyć rozmiar pamięci podręcznej KV, można zastosować następujące podejścia:
- Przesuwne okno: przechowywać w pamięci podręcznej tylko ostatnie N tokenów, a nie całą historię. Ogranicza to rozmiar pamięci podręcznej i zmniejsza zużycie pamięci.
- MQA zamiast GQA: MQA używa jednego klucza i wartości dla wszystkich głów uwagi, co znacznie zmniejsza rozmiar pamięci podręcznej w porównaniu do GQA, gdzie dla każdej głowy przechowywany jest osobny klucz i wartość.
- Kwantyzacja pamięci podręcznej KV: przechowywać klucze i wartości w skompresowanej formie, na przykład z obniżoną precyzją (float16, int8), aby zmniejszyć ilość pamięci.
- Usuwanie nieaktualnych elementów: okresowo czyścić lub kompresować pamięć podręczną, usuwając przestarzałe lub mniej istotne elementy.
Przykład użycia przesuwnego okna:
window_size = 512 # liczba tokenów w pamięci podręcznej
kv_cache = kv_cache[-window_size:]
Dzięki połączeniu tych metod można skutecznie zmniejszyć rozmiar pamięci KV bez znacznej utraty jakości generacji.