TL

アテンション変種の系統と計算量マップ

full・疎・線形・GQA/MQA・FlashAttention が乱立して選べない悩みを、計算量・メモリ・品質の三軸で一枚に整理する。各変種が何を犠牲に何を得たかを年代と分岐で押さえ、用途に合う一手を選べるようになる。

応用アテンションTransformer計算量FlashAttentionGQA最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.アテンション変種は『何を最適化するか』で層が分かれる。漸近計算量を下げる系(疎・線形・SSM)、近似なしで実機速度を上げる系(FlashAttention)、推論メモリ帯域を削る系(MQA/GQA)は別レイヤーで、競合せず併用できる。
  • 2.full アテンションは系列長 n に対し時間も中間メモリも O(n²·d)。疎・線形・低ランクは漸近を O(n) 級へ落とすが softmax の表現力を近似で犠牲にする。FlashAttention は計算順序と置き場所だけ変え、出力は厳密等価のまま HBM 往復を消す。
  • 3.GQA/MQA は計算量ではなく Decode の KV キャッシュ帯域を削る軸。K/V ヘッドを共有して読み出し量を g/h に縮める。実務の長文 LLM は FlashAttention+GQA+(必要なら)疎/線形/SSM を組み合わせて使う。

変種が乱立した理由:最適化する軸が違う

アテンション変種が数十も生まれたのは、皆が同じ問題を解いているからではありません。最適化する軸が違うから並立します。混乱の元はここにあり、まず軸を分けることが地図化の第一歩です。

Self-Attention の計算 の素朴な実装は、系列長 n・ヘッド次元 d に対して n × n のスコア行列を作ります。ここから派生する不満は三種類あり、それぞれ別の変種群を生みました。

不満(律速)どの軸を攻めるか代表的な変種群
長文で n×n が二乗に膨らむ漸近計算量(時間・メモリ)疎・低ランク・線形・SSM
FLOPs より HBM 往復が遅い実機の入出力量(近似なし)FlashAttention
Decode が KV 読み出しで詰まる推論時のメモリ帯域MQA・GQA

この三軸は直交します。漸近を下げても HBM 往復は残るし、HBM 往復を消しても KV キャッシュ帯域は別問題です。だから三系統は競合せず重ねて使える――これが地図全体を貫く原則です。

基準:full アテンションの計算量

すべての変種は full からの差分で測れます。まず基準を固定します。

S = Q · Kᵀ / √d_k     # n×n スコア行列。時間 O(n²·d)
P = softmax(S)        # 行ごとに正規化。中間メモリ O(n²)
O = P · V             # 出力 n×d。時間 O(n²·d)

時間計算量は O(n²·d)、中間メモリは O(n²)n が数千を超えると、この二乗項が時間・メモリ双方の支配項になります。変種はこの二乗をどう扱うかで分岐します。

「O(n²)」が指すものは二つある

アテンションが O(n²) と言われるとき、時間計算量とメモリ量の二つを混同しがちです。疎・線形系は両方を下げにいきますが、FlashAttention が消すのは中間メモリの実体化と HBM 往復だけで、時間計算量の O(n²·d) は据え置きです。どちらの二乗を問題にしているかを毎回確認してください。

漸近を下げる三系統:疎・低ランク・線形

漸近計算量そのものを下げる系統は、n × n の全結合をどう間引くかで分かれます。詳細は 線形・効率的アテンションの系統 に譲り、ここでは分岐の骨格だけ示します。

  • 疎(sparse):各クエリが見る列を、局所窓+大域トークン+乱択に限定する。Longformer・BigBird がこれ。n × n のうち固定本数だけ計算し O(n) 近傍へ。代償は窓設計に依存する到達性――遠い依存が窓外なら拾えない。
  • 低ランク(low-rank):K・V を系列方向に固定次元 k へ射影し、スコア行列を n × k にする。Linformer がこれ。代償は系列の相関が低ランクに乗るという仮定
  • 線形(linear):softmax の指数核をカーネル特徴写像 φ で近似し、計算順序を (φ(Q)φ(K)ᵀ)V から φ(Q)(φ(K)ᵀV) へ組み替えて O(n) 化する。Performer がこれ。代償は softmax の非線形性の喪失。

三者に共通するのは、近似と引き換えに漸近を下げる点です。出力は full と一致しません。だから「精度の代償をどこから取るか」が選定基準になります。

別レイヤー:FlashAttention は近似しない

ここで軸が切り替わります。FlashAttention は full と出力が厳密に等価で、漸近時間も O(n²·d) のまま。下げるのは中間メモリの実体化と HBM 往復だけです。

for each Q ブロック:
    for each K,V ブロック (SRAM に載せる):
        部分スコアを計算し、オンライン softmax で出力を逐次更新
    出力ブロックだけ HBM に書き戻す   # n×n は一度も実体化しない

タイル化とオンライン softmax で中間 n × n を SRAM 上で消費し、HBM には出力 n × d だけを書きます。追加メモリは O(n²) から O(n) へ落ち、memory-bound だった処理が解放されて実測 2〜4 倍前後。近似がないので既存モデルへ無改造で差し替えられ、疎・線形系とは別レイヤーとして併用できます。

疎/線形系と FlashAttention の決定的な違い

疎・線形・低ランクは出力の値を変える最適化(漸近計算量を下げる)。FlashAttention は値を変えない最適化(同じ計算を速く実行する)。前者は精度トレードオフを伴い、後者は伴いません。両者は競合せず、疎パターンに FlashAttention を併用する実装も普通にあります。

さらに別レイヤー:GQA/MQA は帯域を削る

三つ目の軸は推論時のメモリ帯域です。GQA/MQA は計算量を一切下げません。攻めるのは KV キャッシュ の読み出し量です。

自己回帰の Decode は1トークンずつ進み、毎ステップ KV キャッシュ全体を HBM から読みます。これは帯域律速です。MQA は全 Query ヘッドで K/V を1組に共有し、GQA はグループ単位で共有する中間案。Query ヘッド h・グループ g なら、KV キャッシュと読み出し帯域は約 g/h に縮みます。

GQA は full の計算量を変えない

GQA/MQA は K/V ヘッドの本数を減らすだけで、アテンションの数式も漸近時間も full のままです。効くのは Decode の算術強度(読み出し帯域あたりの演算量)であって、Prefill の O(n²·d) は縮みません。だから長文 Prefill には FlashAttention や疎/線形を、Decode 帯域には GQA を、と軸ごとに別の手を当てます。

年代と分岐:系統樹を文章で

おおまかな時系列で分岐を辿ると、軸が一つずつ追加されてきた歴史が見えます。

  • 2017 Transformer:full アテンション。O(n²·d)。これが基準。
  • 2019 Sparse Transformer:疎パターンで漸近を下げる最初の波(漸近の軸が開く)。
  • 2019 MQA:K/V を1組に共有し Decode 帯域を削る最初の提案(帯域の軸が開く)。
  • 2020 Linformer(低ランク)・Performer(線形)・Longformer/BigBird(疎):漸近を下げる三系統が出揃う。
  • 2022 FlashAttention:近似なしで HBM 往復を消す IO-aware 設計(実機入出力の軸が確立)。
  • 2023 GQA:MQA の品質劣化を抑える中間案。Llama 2 70B が採用し主流化。
  • 2023〜 SSM/Mamba:アテンションを線形再帰で置換し O(n) を狙う、漸近系統の発展形。

並べると、各年の新顔は前の手を否定したのではなく、新しい軸を足したことが分かります。だから現代の長文 LLM は単一の勝者を選ばず、軸ごとに重ねます。

まとめ:三軸で重ねて選ぶ

代表時間計算量出力主に効く所
基準fullO(n²·d)厳密
漸近(疎/線形/SSM)Longformer・Performer・MambaO(n) 級近似長文 Prefill
実機入出力FlashAttentionO(n²·d) のまま厳密等価Prefill・Decode 双方
推論帯域GQA・MQAO(n²·d) のまま厳密(再学習で調整)Decode の KV 読み出し

選定の指針は明快です。まず精度を一切落とさず効く FlashAttention を入れ、Decode 帯域が苦しければ GQA を重ね、それでも長文の漸近が壁なら精度の代償を見極めて 疎/線形系SSM を検討する。

押さえどころ
  • アテンション変種は三つの独立した軸で分かれる:漸近計算量(疎/線形/SSM、近似あり)、実機の入出力量(FlashAttention、近似なし)、推論メモリ帯域(GQA/MQA、計算量不変)。
  • 三軸は直交し競合せず併用できる。「O(n²)」が時間かメモリか、近似ありかなしか、Prefill か Decode かを毎回切り分ける。
  • 実務の積み方は FlashAttention(厳密・無条件)→ GQA(Decode 帯域)→ 疎/線形/SSM(長文漸近、精度の代償と引き換え)の順で重ねる。

AI/機械学習 Article

アテンション変種の系統と計算量マップを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

アテンション

比較で見る軸

難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5

導入後に効く点

full アテンションは系列長 n に対し時間も中間メモリも O(n²·d)。疎・線形・低ランクは漸近を O(n) 級へ落とすが softmax の表現力を近似で犠牲にする。FlashAttention は計算順序と置き場所だけ変え、出力は厳密等価のまま HBM 往復を消す。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
AI/機械学習
タグ数
5

判断チェックリスト

  • 自社の用途が「アテンション / Transformer」に近いか確認する。
  • 強みである「アテンション変種は『何を最適化するか』で層が分かれる。漸近計算量を下げる系(疎・線形・SSM)、近似なしで実機速度を上げる系(FlashAttention)、推論メモリ帯域を削る系(MQA/GQA)は別レイヤーで、競合せず併用できる。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

アテンションTransformer計算量FlashAttentionGQAアテンションTransformer計算量