Grouped Query Attention(GQA)は、TransformerのAttentionでKey・Value(KV)のヘッドを束ねる効率化手法です。標準のマルチヘッド注意は精度が高い一方、推論時にKVの保存コストが重い——GQAは「全部共有(MQA)」と「全部独立(MHA)」の間」に立つ——本記事はヘッド数の暗記より、なぜKVを減らすのかに焦点を当てます。
推論でKVが重い理由
G-295のAttentionは、Query・Key・Valueから注意重みを計算します。学習時も推論時もコストがかかりますが、トークンを1つずつ生成する推論では、過去トークンのKとVをKVキャッシュとして保持し再利用します。
ヘッドが多く、系列が長いほどキャッシュが膨らむ——G-180が示すメモリ制約と直結します。GQAはこのKV側の肥大を抑える設計です。
GQAの直感
たとえばQueryヘッドが8本あるとき、KVヘッドを2本に減らし、4本ずつのQueryグループが同じKVを見る——といった割り当てです。
- Queryは複数 — 多様な「注目の視点」を維持
- KVは少数 — キャッシュとメモリ帯域を削減
- グループ割当 — MQAほど粗く共有せず、精度劣化を抑える
G-304のScaled Dot-Product Attentionの流れは同じです。変えるのはKVテンソルの本数——部品の取り付け方であり、BERTやGPTの系列そのものを置き換えるものではありません。
FlashAttention等との関係
| 名前 | 何を最適化するか | 層 |
|---|---|---|
| GQA | KVヘッド数・キャッシュ量 | 注意の設計(ヘッド構成) |
| FlashAttention | GPUメモリIO | 注意の実装 |
| ALiBi | 位置情報の与え方 | 長文への外挿設計 |
組み合わせて使われることもありますが、同じ問題への別アプローチです。
試験で押さえるポイント
- 定義 — KVヘッドをグループ化・共有して注意を効率化
- 目的 — 推論時のメモリ・速度改善(学習の損失関数ではない)
- 位置づけ — MHAとMQAの中間案
- すり替え回避 — Transformer名・課金方式(TF-0110)ではない
すり替えに注意
| 誤った説明 | 正しい理解 |
|---|---|
| GQA=MQA | グループ共有 vs 全ヘッドで1組KV |
| GQA=FlashAttention | ヘッド設計 vs IO実装 |
| GQA=Transformer | 注意の効率化部品 vs 全体 |
| GQA=Queryだけ減らす | 共有するのは主にKV側 |
| GQA=GAT | 系列LLMの注意 vs グラフGNN |
よくある質問
GQA(Grouped Query Attention)とは何ですか?
Transformerの注意機構を効率化する手法の一つで、Queryヘッドは複数保ちつつ、KeyとValueのヘッドをグループ化して共有します。推論時のKVキャッシュのメモリと帯域を抑えつつ、Multi-Query Attentionより表現力を保ちやすい中間案として知られます。
GQAとMulti-Query Attention(MQA)は同じですか?
同じではありません。MQAはすべてのQueryヘッドが1組のKVを共有する最も攻めた効率化です。GQAは複数のKVヘッドを残し、Queryヘッドをグループごとに割り当てるため、MQAより共有度が低く、標準的なマルチヘッド注意に近い精度を保ちやすいと整理されます。
GQAは新しいTransformerですか?
いいえ。GQAはTransformerやLLMの注意層の内部設計を効率化する技法であり、別のアーキテクチャ名ではありません。Attentionの数学的枠組みは保ちつつ、KVの持ち方を変えて推論を速く・軽くする部品です。