AI・機械学習
上級

Grouped Query Attention(GQA)(グループドクエリアテンション)

Transformerのマルチヘッドアテンションを効率化する手法で、複数のQueryヘッドが1つのKey/Valueヘッドを共有するアーキテクチャ。推論時のKVキャッシュメモリ削減と計算効率化を両立する。

0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
GQA
アテンション機構
LLM推論最適化
KVキャッシュ
Transformer

Grouped Query Attention(GQA)とは

Grouped Query Attention(GQA)は、2023年にGoogleのAizawa et al.が提案したTransformerのアテンション機構効率化手法です。従来のMulti-Head Attention(MHA)では各ヘッドが独立したQuery・Key・Valueを持ちますが、GQAではQueryヘッドをグループに分け、グループ内で1つのKey/Valueヘッドを共有します。

従来手法との比較

MHA(Multi-Head Attention)

  • 全ヘッドが独立したK/V → KVキャッシュが大きい
  • 品質は高いが推論コストが高い
  • GPT-2・BERT・初期Llamaで採用

MQA(Multi-Query Attention)

  • 全QueryヘッドがK/Vを共有 → KVキャッシュ最小
  • 速いが品質がMHAより低下する傾向
  • Falcon・初期PaLMで採用

GQA(Grouped Query Attention)

  • Queryヘッドをグループ分け → グループ内でK/V共有
  • MHAとMQAの品質・速度バランスを取る
  • Llama 2/3・Mistral・Gemma・Qwenで採用

技術的詳細

グループ構成

標準的な構成例(Llama 3 70B):

  • Queryヘッド数: 64
  • Key/Valueヘッド数: 8
  • グループ数: 8(各グループ8Qヘッドが1K/Vヘッドを共有)

KVキャッシュ削減効果

MHAと比較してKVキャッシュメモリ使用量を大幅削減できます。 例:32ヘッドMHA → 8グループGQA の場合、KVキャッシュ: 1/4に削減、推論スループット: 最大2〜4倍向上。

実装での採用状況

モデル別GQA設定:Llama 3 8B(Q=32 / KV=8 / グループ=8)、Llama 3 70B(Q=64 / KV=8 / グループ=8)、Mistral 7B(Q=32 / KV=8 / グループ=8)、Gemma 2 9B(Q=16 / KV=8 / グループ=2)、Qwen2 7B(Q=28 / KV=4 / グループ=7)。

HuggingFace Transformersでの実装

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Meta-Llama-3-8B",
    torch_dtype=torch.float16,
    device_map="auto"
)

config = model.config
print(f"Qヘッド数: {config.num_attention_heads}")
print(f"KVヘッド数: {config.num_key_value_heads}")
print(f"GQAグループ数: {config.num_attention_heads // config.num_key_value_heads}")

vLLMでのGQA最適化

vLLMなどの推論エンジンはGQAを自動検出してPagedAttentionと組み合わせ最適化します:

from vllm import LLM, SamplingParams

llm = LLM(
    model="meta-llama/Meta-Llama-3-8B-Instruct",
    tensor_parallel_size=1,
    gpu_memory_utilization=0.9
)

sampling_params = SamplingParams(temperature=0.8, max_tokens=512)
outputs = llm.generate(["説明して: "], sampling_params)

GQAの学習とファインチューニング

GQAモデルをLoRAでファインチューニングする際、target_modulesでK/Vを明示的に含めることが重要です:

from peft import LoraConfig

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

GQAはKVキャッシュ削減による長コンテキスト処理の効率化、スループット向上、コスト削減に直結する技術として、LLM推論インフラ設計における必須知識です。現代の主要LLMにおける事実上の標準アテンション機構として、FlashAttention-2との組み合わせで最大の効率を発揮します。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/7