Grouped-Query Attention(GQA)(グループドクエリアテンション)
Multi-Head Attentionのヘッドを複数のグループに分割し、グループ内でKey・Valueの重みを共有する効率化手法。MHAの品質を維持しつつKVキャッシュのメモリ使用量を大幅削減する。LLaMA 2 70BやMistralで採用され、2026年現在の大規模LLMのデファクトスタンダード。
Grouped-Query Attention(GQA)とは
Grouped-Query Attention(GQA)は、2023年にGoogleが論文「GQA: Training Generalized Multi-Query Attention Models」で提案したAttention効率化手法です。従来のMulti-Head Attention(MHA)では全ヘッドが独立したKey/Value重みを持ちますが、GQAではヘッドをグループに分けてグループ内でKey/Valueを共有します。これにより、KVキャッシュのメモリを削減しつつ、MHAに近い品質を維持します。
MHA・GQA・MQAの比較
| 方式 | Query ヘッド数 | KV ヘッド数 | KVキャッシュ倍率 | 品質 |
|---|---|---|---|---|
| MHA | H | H | 1.0x(基準) | 最高 |
| GQA-8 | H | H/8 | 0.125x | MHAとほぼ同等 |
| GQA-4 | H | H/4 | 0.25x | MHA同等 |
| GQA-2 | H | H/2 | 0.5x | MHA同等 |
| MQA | H | 1 | 1/H x | やや劣化 |
GQAはMHA(全ヘッド独立)とMQA(全ヘッド共有)の中間に位置する設計で、グループ数を調整することでメモリ効率と品質のトレードオフを柔軟に制御できます。
採用モデル一覧
| モデル | Queryヘッド数 | KVヘッド数 | グループサイズ | 効果 |
|---|---|---|---|---|
| LLaMA 2 70B | 64 | 8 | 8Q:1KV | KVキャッシュ8分の1 |
| LLaMA 3 8B | 32 | 8 | 4Q:1KV | KVキャッシュ4分の1 |
| LLaMA 3 70B | 64 | 8 | 8Q:1KV | KVキャッシュ8分の1 |
| Mistral 7B | 32 | 8 | 4Q:1KV | KVキャッシュ4分の1 |
| Mixtral 8x7B | 32 | 8 | 4Q:1KV | MoEとGQAの組み合わせ |
| Gemma 2 27B | 32 | 16 | 2Q:1KV | KVキャッシュ半分 |
| Qwen 2.5 72B | 64 | 8 | 8Q:1KV | KVキャッシュ8分の1 |
2026年現在、7B以上の新規モデルでMHAをそのまま使うケースはほぼなくなり、GQAまたはMLA(Multi-Latent Attention)が標準になっています。
KVキャッシュ削減の実際の効果
LLaMA 2 70Bの場合、コンテキスト長4,096トークン・バッチサイズ32での推論時KVキャッシュ:
- MHA(64 KVヘッド): 約32GB
- GQA-8(8 KVヘッド): 約4GB
この差は、A100 80GB GPUでサーブ可能な同時リクエスト数に直結します。GQAにより同一GPUで8倍のスループットが得られる計算になります。
実装の仕組み
GQAの実装は比較的シンプルです。
- Queryの投影は従来通り H 個のヘッド分の重みを保持
- Key/Valueの投影は G 個(G = H / グループサイズ)分の重みのみ保持
- Attention計算時、各Queryヘッドは対応するグループのKey/Valueを参照
- グループ内のQueryヘッドは同じKey/Valueに対して異なるAttention Weightを計算
重要な点は、Query側は依然として全ヘッドが独立した重みを持つことです。各Queryヘッドは共有されたKey/Valueに対して異なる「質問」を投げかけるため、表現力の低下は最小限に抑えられます。
MHAモデルからGQAへの変換
既存のMHAモデルをGQAに変換する手法(Uptraining)も提案されています。MHAの各グループ内のKVヘッドの重みを平均化し、その状態から追加学習(元の学習量の5〜10%程度)を行うことで、MHAに近い品質のGQAモデルが得られます。LLaMA 2 70Bはこの手法で開発されました。
よくある質問
Q1: GQAのグループ数はどう決めればよいですか?
A1: 実験的に決定されますが、一般的にはKVヘッド数を4〜8にする設計が多いです。LLaMA 3系列ではKVヘッド8が標準化されています。グループ数が少ないほどメモリ効率は高いですが、品質とのトレードオフがあります。
Q2: GQAとFlashAttentionは併用できますか?
A2: はい、併用可能で実際に標準的な組み合わせです。GQAはKVキャッシュのメモリ削減、FlashAttentionはAttention計算のメモリ・速度最適化と、異なるレイヤーの効率化を担当するため相補的です。
Q3: GQAとMLA(Multi-Latent Attention)の違いは何ですか?
A3: GQAはKVヘッドをグループ化して共有する手法、MLAはKVを低ランク射影で圧縮する手法です。MLAはDeepSeek-V2/V3で採用され、GQA以上のキャッシュ削減(93%超)を達成しますが、実装が複雑でGQAほど広く採用されていません。