LLM推論・最適化

Sparse Attention すぱーすあてんしょん

Sparse Attentionスパースアテンション計算量削減長文対応アテンションパターンTransformer
Sparse Attentionについて教えて

簡単に言うとこんな感じ!

通常のアテンションは「全員が全員を見る」けど、Sparse Attentionは「近くの人だけ見る」または「重要な人だけ見る」に絞る仕組みだよ!計算量を大幅に減らせるから、長い文章を扱うときに特に役立つんだ!


Sparse Attentionとは

Sparse Attention(スパースアテンション) とは、通常の全ペアアテンション(Dense Attention)の計算を削減するため、各トークンがアテンションを向ける相手を一部に限定する手法です。通常のアテンションはN個のトークンがあるとN×Nの計算(O(N²))が必要ですが、Sparse Attentionは参照先を絞ることでO(N√N)やO(N log N)程度に削減できます。

長いコンテキストで重要な情報は「近隣」や「特定のパターン」に集中することが多いという観察に基づいています。例えば日本語の文章でも、直前の数文の文脈が次の文に最も影響するケースが多く、1,000トークン前の文章が常に重要とは限りません。


主なSparse Attentionパターン

パターン内容特徴
ローカルウィンドウ前後N個のトークンのみ参照シンプルで長文に有効
ストライド(Strided)N個おきにサンプリング参照グローバルな文脈を捉える
ランダムランダムに選んだトークンを参照理論的な多様性確保
グローバル + ローカル特定トークンは全体参照、他はローカルBigBird・Longformer等
スライディングウィンドウ移動窓で近隣を参照Sliding Window Attentionと重複

歴史と背景

  • 2019年:OpenAI「Sparse Transformer」でストライドパターンを提案
  • 2020年:BigBird(Google)・Longformer(Allen AI)が長文向けSparse Attentionを実用化
  • 2021年以降Flash AttentionとSparse Attentionの組み合わせで効率化が進む
  • 現在:Sliding Window AttentionやGQAと組み合わせて長コンテキスト実現に貢献

Dense vs Sparse Attentionの計算量比較

シーケンス長 N = 10,000 トークンの場合

Dense Attention:
  計算量: N² = 100,000,000 回の操作

Sparse Attention(ウィンドウサイズ 64):
  計算量: N × 64 = 640,000 回の操作
  → 約156倍削減

ただし情報の欠落リスクがあるため、
グローバルトークンとの組み合わせが一般的

関連用語