Interaktiver Attention-Typ Vergleich
Query Heads
8
Volle Kapazitaet
KV Heads
8
Gleich wie Query
KV-Cache Groesse
12.8
GB
Llama 2 70B @ 4K Kontext
Query Heads (Q)
Key Heads (K)
Value Heads (V)
Query Heads 8
Sequenzlaenge 4,096
Layers 80
Bei MHA hat jeder Query-Head sein eigenes Key-Value Paar. Das bedeutet maximale Ausdruckskraft, aber auch maximalen Speicherbedarf für den KV-Cache während der Inferenz.
Fig. 1 | Vergleich der Attention-Varianten. MHA: Jeder Query-Head (blau) hat dedizierte Key-Value Heads (orange/grün). GQA: Mehrere Query-Heads teilen sich ein KV-Paar. MQA: Alle Query-Heads teilen ein einziges KV-Paar.
🔎 Warum KV-Cache ein Problem ist

Während der autoregressiven Generierung müssen die Key- und Value-Vektoren aller vorherigen Tokens im Speicher gehalten werden. Bei langen Kontexten wächst dieser Cache enorm.

Cache = 2 × n_kv × L × S × dhead × precision

Für Llama 2 70B mit 128K Kontext: 64+ GB nur für den KV-Cache!

Der GQA Kompromiss

GQA gruppiert Query-Heads und lässt sie Key-Value Heads teilen. Llama 2 70B nutzt 64 Query-Heads mit nur 8 KV-Heads.

Ergebnis: 8× weniger KV-Cache Speicher bei nahezu unverändeter Modellqualität. Ein idealer Trade-off zwischen MHA und MQA.

📈 Modelle im Vergleich
Modell Q Heads KV Heads Typ
GPT-3 175B 96 96 MHA
Llama 2 70B 64 8 GQA
Llama 3 70B 64 8 GQA
Mistral 7B 32 8 GQA
Falcon 180B 232 1 MQA