Sobes.tech
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.