この記事の音声は準備中です。
音声の一覧・再生リストへ注意機構の変種と長コンテキスト技術
この記事の目的
標準的な自己注意が抱える 2 つの圧力 — 稠密注意に系列長の 2 乗の計算項があり、素朴な実装は注意行列を全保持すること、KV キャッシュ生成中に各トークンの中間表現(Key / Value)を保存・再利用する仕組みで、プロンプトキャッシュの実体。中間表現は先頭からの並びに依存するため、キャッシュは前方一致でしか効かない。が系列長に比例して膨らむこと — を出発点に、それらを緩和する主要な技術群(MQA/GQA、スパース・局所注意、線形注意、FlashAttention、位置の外挿、状態空間モデル)を、原理レベルで整理できるようになります。「長コンテキスト対応」という表記の中身を読み解き、対応長・品質・コストのトレードオフを判断できる状態を目指します。
変種の顔ぶれ・採用状況は動くため、本記事は個別モデルの採用例を追わず、方式の原理に徹します。
対象読者
- 長コンテキストを要件に持ち、対応長・品質・コストのトレードオフを技術の原理から理解したいエンジニア
- KV キャッシュのメモリAgent が「覚えている」ように見えるデータの総称。短期記憶(コンテキスト)・作業状態・長期記憶(外部ストレージ)の 3 層に分けて設計する。や推論スループットのボトルネックの「なぜ」を知りたい人
前提知識
- Transformer アーキテクチャ詳解 — 自己注意・多頭注意・RoPE の数式(本記事の前提。必読)
- 注意機構とコンテキストウィンドウの仕組み — KV キャッシュ・長文劣化の直感側
本文
概要: 2 つの圧力
標準的な多頭自己注意には、系列長 に対する 2 つのスケール問題があります。
- 注意の計算項は : 素朴な実装は の注意行列に のメモリを使いますが、FlashAttention は全行列の保持を避けます。投影・FFN の も含む全体では、注意項が主になるかは と の関係に依存します。API 料金・実測レイテンシの二乗増を意味しません
- KV キャッシュが : 自己回帰生成では、過去の全トークンの K と V を保持して使い回す。その量は系列長に比例して増え、長文デコードのメモリと帯域の主因になる
KV キャッシュのサイズは概算で次式です。
読み下し: 「K と V の 2 つ分 × トークン数 × 層数 × KV ヘッド数 × ヘッド次元 × 1 要素のバイト数 」。この式の各因子を削るのが、以下の技術群の狙いです。長コンテキスト技術は「①注意の を減らす」「② KV キャッシュを減らす」「③位置の対応範囲を伸ばす」の 3 方向に整理できます。
KV キャッシュを減らす: MQA と GQA
多頭注意では、ヘッドごとに独立した K・V を持ちます。Multi-Query Attention(MQA)は、クエリだけを ヘッドに分け、K と V は全ヘッドで 1 組を共有します。上式の が から 1 に落ち、KV キャッシュが大幅に減ります。
ただし共有しすぎると品質が落ちます。Grouped-Query Attention(GQA)はその中間で、 個のクエリヘッドを グループに分け、グループごとに 1 組の K・V を共有します()。
読み下し: 「MHA(ヘッドごとに KV)と MQA(全ヘッドで KV 1 組)の間を、グループ数 で連続的に選ぶのが GQA」。 を品質とメモリのつまみとして使い、2026 年時点の多くのモデルが GQA を採用しています。さらに KV を低ランクに圧縮して保持する潜在注意(MLA)系の方式もあり、いずれも狙いは同じ「KV キャッシュの削減」です。
注意を疎にする: 局所・スライディング窓・スパース
を直接減らす発想が、全対全をやめて一部の対だけ見ることです。
- 局所・スライディングウィンドウ注意: 各トークンは近傍 個だけを見ます。計算量は に落ち、層を重ねると受容野が広がって遠距離も間接的に届きます
- スパース注意(固定パターン): 局所窓に加えて、一定間隔や特定の「まとめ役」トークンへの接続を混ぜます(Longformer・Sparse Transformer 系の発想)
- アテンションシンク: 系列の先頭付近のトークンに注意が集まりやすい現象を利用し、窓から溢れても先頭を残すとストリーミングLLM の応答を生成と同時に逐次受信・表示する方式。Agent の体感品質を左右する基本技術。で品質が保たれます(StreamingLLM の観察)
疎注意は「遠距離の任意の依存」を犠牲にしうるため、タスクによって向き不向きがあります。
線形注意という別路線
softmax を近似・置換して、計算順序を変えることで を狙う路線です。標準注意は の順で計算するため が現れますが、softmax を特徴写像 で置き換えると結合則で順序を変えられます。
読み下し: 「先に ( の小さな行列)を作ってからクエリに掛ければ、 を作らずに済む」。これで計算量が系列長に線形になります。ただし softmax の表現力を完全には再現できず、品質とのトレードオフがあります。
FlashAttention: 厳密なまま速く
FlashAttention は近似ではなく、標準注意を数学的に厳密に計算したまま高速化する手法です。鍵は 2 点です。
- オンライン softmax: の注意行列を一度に作らず、ブロックごとに逐次計算しながら softmax を正しく更新する。巨大な中間行列を GPU の遅いメモリに書き出さずに済む
- IO を意識した設計(IO-awareness): ボトルネックが演算量ではなくメモリ間のデータ移動である、という洞察に基づき、高速メモリ内で計算をまとめる
読み下し: 「注意の結果は同じだが、遅いメモリへの読み書きを減らして速くする」。FlashAttention は品質を変えずに長文の実効速度とメモリを改善するため、標準注意の実装として広く使われます(後継版も出ています)。
位置の対応範囲を伸ばす: 外挿と補間
学習時の最大長を超える入力に、位置符号化がどう耐えるかも長コンテキストの要です。RoPE(Transformer アーキテクチャ詳解)は相対位置を内積に埋め込みテキストや画像を、意味的な近さが距離に対応する数値ベクトルに変換したもの。RAG・記憶・分類の土台で、「何が近いか」はモデルで変わるため自社データで評価して選ぶ。モデル変更は全チャンクの再インデックスを伴う。ますが、学習長を超えて直接外挿すると品質が劣化しえます。対策は 2 系統です。
- 位置補間(Position Interpolation): 長い位置を学習済みの範囲に「縮めて」割り当てる。少量の追加学習で対応長を伸ばせる
- 周波数を調整する方式(YaRN など): RoPE の各周波数成分の扱いを変え、外挿の劣化を抑える
読み下し: 「位置の目盛りを詰め直す/周波数を調整することで、学習長より長い入力に耐えさせる」。いずれも万能ではなく、対応長が伸びても中間の情報が使われにくくなる劣化(いわゆる『中盤の見落とし』)は別問題として残ります。「対応長 = 実効的に使える長さ」ではない点に注意します。
Transformer を離れる: 状態空間モデル
注意そのものを使わない系列モデルも実用域に入りつつあります。状態空間モデル(SSM)は、系列を固定サイズの状態に畳み込みながら処理し、推論時は系列長に対して線形・一定メモリで動きます(S4・Mamba 系)。KV キャッシュが原理的に不要という強みがある一方、任意の過去への「ランダムアクセス」的な参照は注意ほど得意でないとされ、注意層と混ぜるハイブリッド構成も現れています。
「長コンテキスト対応」表記を読む
モデルの「N トークン対応」という表記は、次を切り分けて読みます。
- 学習で到達した長さか、外挿・補間で伸ばした長さか(後者は中盤の品質が落ちやすい)
- 対応長全体で品質が保たれるか(「入るが使いこなせない」ことがある)
- その長さでのコスト・レイテンシ・KV メモリ(入力できることと、実用的に安いことは別)
「対応長」は上限であって保証ではありません。要件が長文なら、対応長の数字ではなく自社タスクでの実効品質を評価して判断します(評価データセットの構築と保守)。
この理解が効く場面
- モデル選定: GQA・対応長・位置方式の前提を読み、長文タスクでのメモリ・品質を見積もる(モデル選定ガイド)
- 推論コストの見積り: KV キャッシュ式が、長文デコードのメモリ・スループットの上限を決める(GPU・AI ハードウェアの基礎)
- 長文設計の判断: 対応長の数字を鵜呑みにせず、実効品質を評価して使う(コンテキストエンジニアリング)
実務での注意点
アンチパターン
- 「対応長 N トークン」を実効的に使える長さと同一視する → 外挿・補間で伸ばした領域や中盤で品質が落ち、入れたのに使われない → 自社タスクで長文の実効品質を評価してから前提にする
- KV キャッシュのメモリを無視して長文・高並列を設計する → がメモリを食い尽くし、同時実行数が頭打ちになる → GQA の有無と対応長から KV メモリを見積もる
- 線形・スパース注意を「速いから上位互換」と誤解する → softmax 注意の表現力や任意の遠距離依存を犠牲にしうる → タスク特性(遠距離依存の要否)で向き不向きを判断する
- FlashAttention を精度を落とす近似だと誤解する → 実際は厳密計算のまま IO を減らす手法で、品質は変わらない → 「近似(スパース/線形)」と「厳密な高速化(FlashAttention)」を区別する
- 個別モデルの採用例で方式の優劣を断じる → 採用状況は世代で動き、すぐ古くなる → 方式の原理とトレードオフで理解し、具体は各モデルの現行仕様を確認する
チェックリスト
- 注意の 2 つの圧力( の計算・ の KV キャッシュ)を区別して説明できる
- MHA → GQA → MQA が KV ヘッド数を減らす連続体だと理解している
- 疎・局所注意(近似)と FlashAttention(厳密な高速化)を区別できる
- 線形注意が計算順序の入れ替えで を得る発想を説明できる
- 位置の外挿・補間の限界(対応長 ≠ 実効長)を理解している
- SSM が KV キャッシュ不要・線形という強みと、参照の弱みを持つと理解している
- 「対応長」表記を、学習長/外挿・実効品質・コストに分けて読める
関連トピック
- Transformer アーキテクチャ詳解 — 標準の自己注意・RoPE(本記事が拡張する土台)
- MoE の内部構造 — もう 1 つの効率化の軸(FFN の疎化。注意側の本記事と対)
- 注意機構とコンテキストウィンドウの仕組み — KV キャッシュ・長文劣化の直感側
- コンテキストエンジニアリング — 長コンテキストを実務でどう使うか
- モデル選定ガイド — 対応長・注意方式を選定に反映する
- レイテンシ最適化 — 長文の速度・メモリの運用側
参考資料
- Fast Transformer Decoding: One Write-Head is All You Need — Multi-Query Attention の原論文(Shazeer, 2019、アクセス日: 2026-07-09)
- GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints — Grouped-Query Attention(Ainslie et al., 2023、アクセス日: 2026-07-09)
- FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness — 厳密なまま IO を減らす高速化(Dao et al., 2022、アクセス日: 2026-07-09)
- Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation — ALiBi(位置の外挿)(Press et al., 2021、アクセス日: 2026-07-09)
- Longformer: The Long-Document Transformer — 局所 + 大域のスパース注意(Beltagy et al., 2020、アクセス日: 2026-07-09)
- YaRN: Efficient Context Window Extension of Large Language Models — RoPE の周波数調整による対応長拡張(Peng et al., 2023、アクセス日: 2026-07-09)
- Mamba: Linear-Time Sequence Modeling with Selective State Spaces — 選択的状態空間モデル(Gu & Dao, 2023、アクセス日: 2026-07-09)