Zamiast jednej pary KV na głowę (MHA) lub jednej na cały model (MQA), GQA grupuje głowy zapytań — każda grupa współdzieli jedną parę KV. Np. 8 głów podzielonych na 2 grupy po 4 → tylko 2 pary KV zamiast 8.
Multi-Head Attention wymaga przechowywania osobnej pary klucz-wartość dla każdej głowy, co jest kosztowne pamięciowo. GQA redukuje zużycie pamięci KV cache przez grupowanie głów zapytań.
H niezależnych projekcji zapytań, tak jak w Multi-Head Attention.
G par klucz-wartość (1 < G < H); każda para jest współdzielona przez wszystkie głowy zapytań w danej grupie.
Procedura uptrainingu: głowy K/V oryginalnego checkpointu MHA są uśredniane (mean-pool) w obrębie każdej grupy, po czym model jest dotrenowywany ok. 5% budżetu pretreningu.
Oficjalna
G=1 to MQA (maksymalna oszczędność, strata jakości), G=H to MHA (brak oszczędności). Optymalna wartość G zależy od zadania i rozmiaru modelu — brak uniwersalnej reguły.
Modele pretrenowane z MHA nie mogą być bezpośrednio fine-tunowane jako GQA bez konwersji wag KV heads (np. przez uśrednianie lub pruning). Wymaga dedykowanego etapu konwersji.
Noam Shazeer wprowadza MQA: pojedyncza para K/V dla wszystkich głów, przyspieszająca dekodowanie kosztem jakości.
Wprowadzenie GQA jako uogólnienia MQA oraz przepisu na uptraining checkpointów MHA przy ~5% budżetu pretreningu.
GQA trafia do produkcyjnych LLM open-weight, m.in. Llama 2 70B oraz Mistral 7B.
GQA staje się domyślnym mechanizmem uwagi w większości nowych rodzin LLM.
Złożoność czasowa: O(n² · d). Złożoność przestrzenna: O(n · d_head · G).
Autoregresyjne dekodowanie jest memory-bound: dominującym kosztem jest wielokrotne ładowanie KV cache z pamięci. GQA zmniejsza rozmiar KV cache, redukując ten ruch pamięci.
Liczba par K/V. G = num_attention_heads → MHA; G = 1 → MQA; 1 < G < H → GQA. Główny parametr kontrolujący trade-off jakość/pamięć.
Liczba głów zapytań; musi być podzielna przez liczbę grup K/V.
Wymiar pojedynczej głowy uwagi (d_head), zwykle hidden_size / num_attention_heads.
GQA to gęsty mechanizm uwagi — wszystkie głowy są aktywne dla każdego tokenu; brak routingu (w odróżnieniu od Mixture of Experts).
Obliczenia uwagi pozostają równoległe po głowach i pozycjach; współdzielenie K/V nie wprowadza sekwencyjności. Autoregresyjne dekodowanie jest sekwencyjne po tokenach — jak w każdym dekoderze — niezależnie od GQA.
GQA redukuje rozmiar KV cache — szczególnie wartościowe na GPU z ograniczoną VRAM przy długich kontekstach (128k+ tokenów). Wspierane natywnie m.in. przez FlashAttention-2 i vLLM.
GQA opracowano w Google z myślą o wydajnej inferencji; redukcja pamięci i przepustowości KV jest korzystna także na TPU.