Transformer(トランスフォーマー)

article technology high #transformer#self-attention#multi-head-attention#encoder-decoder#llm#flashattention#gqa#scaling-law#kv-cache
Created: 2026-05-24 Updated:

Vaswani 2017 の Transformer は自己注意のみで並列学習と長距離依存を両立。encoder/decoder/encoder-decoder の 3 系統、GQA・FlashAttention・SwiGLU・Chinchilla 則・KV キャッシュ律速を概観する。

Transformer(トランスフォーマー)

Transformer (Vaswani 2017, arXiv:1706.03762) は RNN/LSTM の逐次依存と勾配消失を捨て、マルチヘッド自己注意のみで系列処理することで GPU 並列学習を可能にし、機械翻訳で当時の SOTA を 1/10 以下の学習時間で達成した。原型からすぐ encoder-only (BERT)・decoder-only (GPT, LLaMA)・encoder-decoder (T5, BART) の 3 バリアントが分岐、2022 年以降 decoder-only が LLM の事実上の標準となった。中身は Pre-LN・SwiGLU・RMSNorm・RoPE・MQA/GQA・FlashAttention で段階的に固められ、Chinchilla 則 (2022) が最適計算配分の前提を書き換えた。

RNN/LSTM から Transformer へ

2017 年以前の seq2seq は RNN/LSTM ベースで、(1) hth_tht1h_{t-1} に依存する逐次ボトルネックで GPU 並列が効かない、(2) LSTM でも 100〜200 トークン超の勾配消失、(3) Sutskever 2014 の seq2seq は全入力を 1 ベクトルに圧縮 (Bahdanau 2015 注意で encoder 状態の全参照は可だが encoder 自体は再帰のまま) の 3 限界を抱えた。Vaswani 2017 は再帰/畳み込みを全廃し自己注意で全トークン間経路長を O(1)O(1) にし、位置符号化で順序を注入、WMT 2014 英独 28.4 BLEU を 8 GPU × 3.5 日で達成。

アーキテクチャ全体像

オリジナル Transformer は encoder/decoder を各 N=6N = 6 層、encoder 層は 2 サブ層 (自己注意 + FFN)、decoder 層は 3 サブ層 (因果マスク自己注意 + cross-attention + FFN)、各サブ層は残差 + LayerNorm で包む。base は dmodel=512,dff=2048,h=8d_{\text{model}} = 512, d_{ff} = 2048, h = 8 で約 65M、large は dmodel=1024,h=16d_{\text{model}} = 1024, h = 16 で約 213M。同じ block 骨格を BERT-base 110M から LLaMA-3 70B (80 層・GQA 8) まで素直にスケールできるのが構造的利点。

スケールド・ドット積注意とマルチヘッド注意

スケールド・ドット積注意 (SDPA) は

Attention(Q,K,V)=softmax ⁣(QKdk)V\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{Q K^\top}{\sqrt{d_k}}\right) V

1/dk1/\sqrt{d_k} は内積分散の発散を抑え softmax 飽和を回避。自己注意は Q,K,VQ, K, V を同一入力から射影、cross-attention は QQ を decoder・K,VK, V を encoder 出力から作る。

マルチヘッド注意 (MHA) は Q,K,VQ, K, Vhh 個の dk=dmodel/hd_k = d_{\text{model}}/h 次元部分空間に並行射影し独立に attention 計算後、連結 + 出力射影。総パラメータは単一ヘッドと同じで、各ヘッドが構文依存・共参照・近接性・意味類似度などを別々に担うと Clark 2019 が観察。O(n2d)O(n^2 d) の二乗依存が長文脈推論の律速で FlashAttention/線形注意の動機となる。

FFN・残差接続・正規化の変遷

位置別 FFN FFN(x)=ReLU(xW1)W2\text{FFN}(x) = \text{ReLU}(x W_1) W_2dff=4dmodeld_{ff} = 4 d_{\text{model}} が標準でブロック全パラメータの約 2/3 (MoE が sparse 化するのもここ)。現代 LLM は ReLU でなくSwiGLU (Shazeer 2020, arXiv:2002.05202) SwiGLU(x)=(Swish(xW1)xW3)W2\text{SwiGLU}(x) = (\text{Swish}(x W_1) \otimes x W_3) W_2 を使い、3 重み化の代わり dff8/3dmodeld_{ff} \approx 8/3 \cdot d_{\text{model}} で 4× FFN と総パラメータを揃える。正規化は Post-LN → Pre-LN (Xiong 2020, arXiv:2002.04745) に移行、ウォームアップ不要で深層でも勾配が安定 (GPT-3 以降は Pre-LN)。RMSNorm (Zhang & Sennrich 2019, arXiv:1910.07467) は平均減算と β\beta を省き (1/d)xj2\sqrt{(1/d) \sum x_j^2} で割るだけで LayerNorm 同等品質を高速に出し、LLaMA・Mistral・Qwen・Gemma で標準。

位置符号化(別記事へ)

自己注意は並べ替え不変なので位置情報を別経路で注入する必要がある。正弦波絶対符号化・T5 相対バイアス・RoPE・ALiBi・YaRN/LongRoPE は別記事 Positional Encoding — tech-34 で詳述し本稿は重複しない。2026 年の新規デコーダ LLM は RoPE + 必要時 YaRN がデフォルト。

3 つの構造バリアント

Encoder-only (BERT 系): encoder スタックのみ双方向注意。MLM (15% を [MASK] 予測) で事前学習し [CLS] 表現で fine-tune。BERT (Devlin 2019, arXiv:1810.04805) base 110M / large 340M、DeBERTa は disentangled attention で GLUE/SuperGLUE SOTA。用途は分類・NER・抽出 QA・埋め込み・検索で生成には向かない。

Decoder-only (GPT・LLaMA 系): 因果マスク自己注意のみで自己回帰生成。GPT-1 117M → GPT-2 1.5B → GPT-3 175B (Brown 2020, arXiv:2005.14165) と巨大化し GPT-3 でin-context learning が確認。LLaMA (Touvron 2023, arXiv:2302.13971) は Pre-LN + RMSNorm + SwiGLU + RoPE で Chinchilla 路線 (小モデル × 多トークン) を実証、2 系 70B 以降 GQA、3 系は 8B〜405B で 128K 文脈。Mistral 7B は GQA + SWA で長文脈メモリ O(n2)O(nw)O(n^2) \to O(n \cdot w)

Encoder-Decoder (T5 系): T5 (Raffel 2020, arXiv:1910.10683) は全タスク text-to-text + span-corruption + 相対位置バイアスで事前学習、BART は noising/denoising で要約に強い。入力 → 構造化出力 (翻訳・要約・質問生成) で encoder 双方向情報が活きる用途が本領。

decoder-only が支配的になった理由: 因果マスクで生成が自然・encoder overhead が無い・ブロック 1 種でスケール単純・GPT-3 のプロンプティング多タスク化・RLHF/DPO の 1 軌道扱いとの相性。

2017 年以降の主要最適化

MQA → GQA: MHA の KV キャッシュは 2h2h 分。MQA (Shazeer 2019, arXiv:1911.02150) は KV を 1 ヘッド共有で hh 分の 1 に削減し HBM 帯域律速を緩和。GQA (Ainslie 2023, arXiv:2305.13245) は中間で GG KV グループを h/Gh/G クエリヘッドで共有。LLaMA 2 70B が G=8G = 8 で MHA 同等品質と MQA 近似スループットを示し、以後 LLaMA 3・Mistral・Qwen2・Gemma 2 が採用。

FlashAttention (Dao 2022, arXiv:2205.14135) は n×nn \times n 注意行列の HBM 展開を避け、Q/K/V をタイリングし SRAM 上で online-softmax により正規化子を逐次更新する厳密注意。近似なしで 2〜4 倍 wall-clock と長系列 5〜20 倍メモリ削減。FA-2 (2023) は A100 で 50〜73%、FA-3 (2024) は H100 の WGMMA/TMA・FP8 で約 75% 理論ピーク。

Sliding Window Attention (Mistral 7B): 各トークンが過去 ww のみ参照、層を重ねて実効受容野 w×Lw \times L、メモリ O(nw)O(n \cdot w)ww 超は多層集約に頼る。

スケーリングと計算量

decoder-only の埋め込み除外パラメータは層あたり 4d2+2ddff4d^2 + 2 d \cdot d_{ff}dff=4dd_{ff} = 4d12d2L12 d^2 L。学習 FLOP は6ND6 N D、LLaMA-3 8B / 15T で 7.2×1023\approx 7.2 \times 10^{23} FLOPs ≈ 720 ZFLOPs。

Kaplan 2020 は損失が N0.076,D0.095N^{-0.076}, D^{-0.095} で減ると報告し計算予算をモデルサイズへ振った (GPT-3 175B / 300B は現代基準で under-fit)。Chinchilla (Hoffmann 2022, arXiv:2203.15556) は 400 モデル実測で NoptC0.5,DoptC0.5N_{\text{opt}} \propto C^{0.5}, D_{\text{opt}} \propto C^{0.5}パラメータあたり約 20 トークンを推奨。Chinchilla 70B/1.4T は Gopher 280B/300B より perplexity が良く計算は約 1/4。以後「推論最適」目的で小モデルを過剰学習する流れとなり、LLaMA 3 8B は 15T を浴びた。

KV キャッシュも律速で 1 層 1 トークン 2nkv_headsdheaddtype_bytes2 n_{\text{kv\_heads}} d_{\text{head}} \cdot \text{dtype\_bytes}、LLaMA-3 70B (GQA 8・dh=128d_h = 128L=80L = 80・fp16) は 1 トークン全層 320 KB、128K 文脈なら 1 系列約 40GB。対策は GQA/MQA・KV 量子化 (INT8/FP8)・CPU/NVMe オフロード・PagedAttention・プレフィックスキャッシュ。

推論特性 — Prefill / Decode と PagedAttention

推論は 2 フェーズ。Prefill はプロンプト全長を 1 forward に流す GEMM 中心 compute-bound 段階。Decode は 1 トークン生成ごとに QKV/FFN を通し KV キャッシュへ追記し attention する逐次 GEMV で、算術強度約 dmodeld_{\text{model}} FLOP/byte と GPU の計算/帯域比を下回るメモリ帯域律速。スループット改善はバッチ拡大が主軸で、vLLM の continuous batching・speculative decoding・tensor parallelism が定石。

PagedAttention (Kwon 2023, arXiv:2309.06180) は KV キャッシュを OS 仮想記憶風の固定ページで管理し共通プレフィックス系列の物理メモリ共有を可能にする (連続割当比 2〜4 倍)。Speculative decoding (Leviathan 2023, arXiv:2211.17192) は小型 draft が kk 候補を出し本体が 1 forward で検証、受理率の高いコード・数学で 2〜3 倍速。

2026 年の選択指針

タスク推奨バリアント代表モデル
チャット・汎用生成decoder-onlyLLaMA-3.3-70B, Qwen2.5-72B
文書 QA・分類encoder-onlyDeBERTa-v3, ModernBERT
教師あり機械翻訳encoder-decodermT5-XL, NLLB-200
密検索・埋め込みencoder-onlyBGE-M3, E5-mistral
コード生成decoder-onlyQwen2.5-Coder-32B, DeepSeek-Coder-V2
100K 超長文脈decoder-only (MoE)Gemini 1.5 Pro, Qwen2.5-72B (128K)

実装は HuggingFace transformers・vLLM・llama.cpp (GGUF)・TensorRT-LLM・SGLang・ExLlamaV2 が主軸。MoE は FFN を EE エキスパート + sparse router に置換し k/Ek/E の計算で EE 倍級パラメータを保持 (Mixtral 8×7B)。代替のMamba/SSM (Gu & Dao 2023, arXiv:2312.00752) は O(n)O(n) メモリで超長文脈を狙うがエコシステム成熟度で大差。表データ・短系列時系列・少ラベル分類など Transformer が overkill な領域 (XGBoost・LSTM・fastText で十分) もある。

二言語用語対照表

日本語English
自己注意 / マルチヘッド注意Self-attention / MHA
スケールド・ドット積注意Scaled dot-product attention (SDPA)
エンコーダ / デコーダEncoder / Decoder
残差 / LayerNorm / RMSNormResidual / LayerNorm / RMSNorm
位置別 FFN / MoEPosition-wise FFN / MoE
KV キャッシュ / ページドアテンションKV cache / PagedAttention
プリフィル / デコードPrefill / Decode phase
スライディングウィンドウ注意Sliding window attention (SWA)
MQA / GQAMulti-query / Grouped-query attention
自己回帰 / 因果マスクAutoregressive / Causal mask
マスク言語モデリングMasked language modeling (MLM)
投機的デコード / 状態空間モデルSpeculative decoding / SSM

参考文献

Local graph