AI・機械学習
上級

グループドクエリアテンション(グループドクエリアテンション)

グループドクエリアテンション(Grouped-Query Attention, GQA)とは、複数のQueryヘッドが1組のKey-Valueヘッドを共有するアテンション機構であり、Multi-Head Attention(MHA)の品質とMulti-Query Attention(MQA)のメモリ効率を両立する手法である。Google Researchが2023年の論文「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」で提案し、Llama 3.1、Gemma 2、Mistral、Qwen 2.5など2024-2026年の主要LLMの標準構成となった。

0 回閲覧
0 いいね

グループドクエリアテンション(GQA)とは

GQA(Grouped-Query Attention)は、MHA(Multi-Head Attention)のQueryヘッドを複数のグループに分け、各グループ内のQueryヘッドが1組のKey-Valueヘッドを共有するアテンション手法である。MHAではh個のQヘッドに対しh個のKVヘッドが必要だが、GQAではg個(1 < g < h)のKVヘッドに削減することで、推論時のKVキャッシュメモリをh/g分の1に圧縮する。

MHA・MQA・GQAの関係

GQAはMHAとMQAを両端とするスペクトラムの中間に位置する:

手法Queryヘッド数KVヘッド数KVキャッシュ比品質提案年
MHAhh1.0x最高2017
GQAhg (例: 8)g/h (例: 1/8)MHAとほぼ同等2023
MQAh11/hやや劣化2019
  • MQA: g=1(全Queryヘッドが1つのKVヘッドを共有)
  • MHA: g=h(各Queryヘッドが独自のKVヘッドを持つ)
  • GQA: 1 < g < h の任意の値

主要モデルのGQA構成

モデルパラメータQヘッドKVヘッドグループサイズKVキャッシュ削減率
Llama 2 70B70B6488Q/1KV87.5%
Llama 3.1 8B8B3284Q/1KV75%
Llama 3.1 70B70B6488Q/1KV87.5%
Llama 3.1 405B405B128816Q/1KV93.75%
Mistral 7B7.3B3284Q/1KV75%
Gemma 2 27B27B32162Q/1KV50%
Qwen 2.5 72B72B6488Q/1KV87.5%
DeepSeek-V3671B MoE128MLA圧縮~95%

KVキャッシュメモリの具体的削減量

128Kトークンの文脈長における各手法のKVキャッシュ使用量(Llama 3.1 70B相当構成):

  • MHA(64Q/64KV): 64 x 2 x 128 x 128K x 2bytes (fp16) = 約4.1GB/リクエスト
  • GQA(64Q/8KV): 8 x 2 x 128 x 128K x 2bytes (fp16) = 約512MB/リクエスト
  • MQA(64Q/1KV): 1 x 2 x 128 x 128K x 2bytes (fp16) = 約64MB/リクエスト
  • 削減効果: GQAでMHA比87.5%削減、同時処理可能バッチサイズが約8倍に

MHAからGQAへの変換方法

Google Researchの論文では、事前学習済みMHAモデルをGQAに変換する「uptraining」手法を提案している:

  1. MHAモデルのKVヘッドをグループごとに平均プーリング(mean pooling)で集約
  2. 元の学習データの5〜10%で追加学習(uptraining)
  3. 追加学習後の品質はMHAの99%以上を維持

Llama 2 70BはMHAで学習後にGQA(8 KVヘッド)へ変換され、MMLU等のベンチマークでMHA版とほぼ同等の性能を達成した。

GQAの実装例

PyTorchでのGQA実装の要点:

  • Queryの出力次元: h x d_k(例: 64 x 128 = 8,192)
  • Key/Valueの出力次元: g x d_k(例: 8 x 128 = 1,024)
  • Queryテンソルをreshapeしてグループ次元を追加: (batch, seq, h, d_k) → (batch, seq, g, h/g, d_k)
  • Key/Valueをグループ次元でbroadcast拡張: (batch, seq, g, d_k) → (batch, seq, g, h/g, d_k)
  • 以降は標準のScaled Dot-Product Attentionと同一

よくある質問(FAQ)

Q1: GQAのKVヘッド数はいくつが最適ですか? A: 経験的にはKVヘッド数8が最も広く採用されている(Llama 3.1全サイズ、Mistral、Qwen 2.5)。これはQヘッド数の1/4〜1/16の範囲に収まり、品質と効率のバランスが良い。Gemma 2 27Bは16 KVヘッドとやや多めで、品質重視の設計。

Q2: GQAとMLA(Multi-Latent Attention)の違いは何ですか? A: GQAはKVヘッドをグループ単位で共有するのに対し、MLA(DeepSeek-V2/V3)はKV表現を低ランク圧縮した潜在ベクトルとして保持する。MLAはGQA以上のKVキャッシュ圧縮率を達成しつつ、品質はMHA以上とされる。ただし実装の複雑さが増す。

Q3: 推論だけでなく学習時もGQAは効率的ですか? A: 学習時のメモリ効率向上は推論時ほど大きくない。学習ではKVキャッシュが不要なため、GQAの主な恩恵はKV射影行列のパラメータ削減(全体の数%)に限られる。GQAの真価は推論時のKVキャッシュ圧縮にある。

まとめ

  • GQAは複数のQueryヘッドで1組のKVヘッドを共有し、KVキャッシュを75〜93%削減する
  • Llama 3.1、Mistral、Qwen 2.5など2024-2026年の主要LLMの標準アテンション構成
  • KVヘッド数8がデファクトスタンダード、品質劣化はMHA比で1%未満
  • MHAモデルからのuptraining変換も可能(学習データ5-10%で追加学習)