スパースアテンション(スパースアテンション)
Transformerの自己注意機構において、全トークン間の計算を省略し一部のトークンペアのみに注意を限定することで、計算量をO(n²)からO(n√n)やO(n log n)に削減する手法の総称。長文処理の効率化に不可欠な技術。
スパースアテンション(Sparse Attention)とは
スパースアテンションは、Transformerモデルの自己注意機構(Self-Attention)において、全トークンペア間の注意計算を行わず、特定のパターンに基づいて計算対象を絞り込む技術である。標準的なSelf-Attentionはシーケンス長nに対してO(n²)の計算量とメモリを要するが、スパースアテンションはこれをO(n√n)やO(n log n)に削減し、長いコンテキストウィンドウの実現を可能にする。
背景と必要性
GPT-4oやClaude 4 Opusが200Kトークン、Gemini 2.5 Proが1Mトークンのコンテキストウィンドウを提供する2025-2026年の状況において、Full Attentionでは計算コストが爆発的に増大する。例えばシーケンス長128Kトークンの場合、Full Attentionでは約164億回のアテンション計算が必要だが、スパースアテンションを適用すれば数十億回以下に削減可能となる。
| モデル | コンテキスト長 | アテンション方式 | 推論速度向上 |
|---|---|---|---|
| GPT-4o | 128K tokens | Multi-Head + Sparse | 約2-3x |
| Claude 4 Opus | 200K tokens | Hybrid Attention | 約2-4x |
| Gemini 2.5 Pro | 1M tokens | Ring + Sparse | 約3-5x |
| Llama 3.1 405B | 128K tokens | GQA + Sparse | 約2x |
| Mistral Large 2 | 128K tokens | Sliding Window | 約2-3x |
主なスパースアテンションのパターン
スパースアテンションには複数のパターンが存在し、それぞれ異なる特性を持つ。
- ローカルアテンション(Local/Sliding Window): 各トークンが周辺の固定幅ウィンドウ内のトークンのみに注意を向ける。計算量はO(n×w)(wはウィンドウ幅)
- グローバルアテンション: 特定のトークン([CLS]やセンテンス先頭など)が全トークンに注意を向け、情報のハブとして機能する
- ストライドアテンション(Strided): 一定間隔でトークンをサンプリングし、離れた位置の情報を効率的に捕捉する
- ランダムアテンション: ランダムに選択されたトークンペアに注意を向け、グラフ理論的に情報の到達性を確保する
- ブロックスパース: アテンション行列をブロック単位で分割し、特定のブロックのみ計算する。GPU上でのメモリアクセスパターンを最適化できる
- ハッシュベース: LSH(Locality-Sensitive Hashing)を用いて類似度の高いトークンペアのみを計算対象とする
- 学習ベース: どのトークンペアに注意を向けるかをモデル自身が学習する適応型アプローチ
スパースアテンションの実装比較
| 手法 | 計算量 | パターン | GPU効率 | 代表モデル |
|---|---|---|---|---|
| Sliding Window | O(n×w) | ローカル固定 | 高い | Mistral 7B |
| BigBird | O(n) | ローカル+グローバル+ランダム | 中程度 | BigBird-RoBERTa |
| Longformer | O(n) | ローカル+グローバル | 中程度 | Longformer-4096 |
| Reformer (LSH) | O(n log n) | ハッシュベース | 低い | Reformer |
| Flash Attention 2/3 | O(n²)※IO最適化 | Dense(IO-aware) | 非常に高い | ほぼ全モデル |
| Ring Attention | O(n²/devices) | 分散Dense | 高い | Gemini系 |
FlashAttentionとの関係
FlashAttention(Tri Dao, 2022-2024)は厳密にはスパースアテンションではなくIO-Awareな実装最適化であり、計算量自体はO(n²)のまま変わらない。しかしHBMとSRAM間のデータ転送を最小化することで実効速度を2-4倍向上させる。FlashAttention-2(2023)ではさらに最適化が進み、A100 GPU上で理論ピーク性能の50-73%を達成した。FlashAttention-3(2024)ではH100のTensor Coreに最適化され、FP8対応も実現した。
実際の大規模モデルでは、FlashAttentionとスパースアテンションを組み合わせて使用するのが一般的である。例えばMistral 7BはSliding Window AttentionをFlashAttention実装上で動作させている。
2025-2026年の最新動向
- MoBA(Mixture of Block-sparse Attention): 2025年にMistral AIが提案。各注意ヘッドが動的にブロックを選択し、タスクに応じた最適なスパースパターンを学習する
- NSA(Native Sparse Attention): DeepSeek-V3で採用。ハードウェアに最適化されたネイティブスパース実装で、H100/B200上で最大8倍の高速化を実現
- Ring Attention: Google DeepMindが大規模分散環境向けに開発。複数デバイス間でアテンション計算を分散し、事実上無制限のコンテキスト長を実現
- InfLLM: 2025年提案のオフロード型アプローチ。重要なトークンのKVキャッシュのみGPUに保持し、残りをCPUメモリにオフロード
よくある質問(FAQ)
Q1: スパースアテンションを使うと精度は下がるのか? A: 適切に設計されたスパースパターンであれば、Full Attentionと比較して精度低下は1-2%以内に収まることが多い。BigBirdやLongformerでは、多くの下流タスクでFull Attentionと同等の性能を示している。ただし、全トークンの相互関係が重要なタスク(例: 文書間の矛盾検出)では若干の精度低下が観測される。
Q2: FlashAttentionとスパースアテンションはどちらを使うべきか? A: 両者は排他的ではなく併用可能である。コンテキスト長が32K以下ならFlashAttention単体で十分な速度が得られる。64K以上のロングコンテキストではスパースアテンション+FlashAttention実装の組み合わせが推奨される。
Q3: 自作PCでスパースアテンションモデルを動かすにはどのGPUが必要か? A: VRAM容量が最重要。Longformerベースの中規模モデルはRTX 4070 Ti Super(16GB VRAM、約13万円)で動作可能。大規模モデル(70Bパラメータ以上)ではRTX 4090(24GB VRAM、約30万円)やRTX 5090(32GB VRAM、約40万円)が必要。量子化(GGUF Q4_K_M等)との併用で、より少ないVRAMでも動作可能。
まとめ
- スパースアテンションはTransformerの計算量O(n²)をO(n)やO(n log n)に削減する必須技術
- ローカル、グローバル、ランダム、ハッシュベースなど複数のパターンが存在
- FlashAttentionとは相補的な関係にあり、実運用では併用が一般的
- 2025-2026年はMoBA、NSA、Ring Attentionなど次世代手法が急速に普及
- ロングコンテキスト(64K+トークン)の実現に不可欠な基盤技術