Wie das Teilen von Key-Value Heads den Speicherbedarf des KV-Cache drastisch reduziert, ohne die Modellqualitaet wesentlich zu beeintraechtigen.
Grouped Query Attention (GQA) reduziert den KV-Cache-Speicher durch Key-Value-Sharing zwischen Query-Heads. Statt n K/V-Paare nur n/g — ein praktischer Kompromiss zwischen MHA (maximale Kapazität) und MQA (minimaler Speicher).
Nach MoE (Effizienz durch Expert-Selektion) betrachten wir nun GQA: eine weitere Effizienz-Optimierung, diesmal auf Attention-Ebene. GQA reduziert den KV-Cache, der bei langen Kontexten zum Bottleneck wird.
Llama 2 70B nutzt GQA mit 8 KV-Heads für 32 Query-Heads — ~75% KV-Cache Einsparung. Bei 128K Kontext wäre der Cache sonst 64+ GB. GQA ist heute Standard in Llama, Mistral, Gemma und praktisch allen modernen LLMs.
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.
Für Llama 2 70B mit 128K Kontext: 64+ GB nur für den KV-Cache!
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.
| 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 |