Transformerの自己注意機構で、各トークンが全トークンではなく固定幅のウィンドウ内のトークンのみに注意を向ける手法。計算量をO(n²)からO(n×w)に削減し(wはウィンドウ幅)、長系列の効率的な処理を可能にする。Mistralモデルで実用化された。
PC構成ビルダーで最適なパーツを選択
Sliding Window Attention(SWA、スライディングウィンドウアテンション)とは、Transformerの自己注意機構において、各トークンが注意を向ける範囲を固定幅のウィンドウに制限する手法である。標準的なSelf-Attentionでは全トークン対全トークンのO(n²)計算が必要だが、SWAではウィンドウ幅wに制限することでO(n×w)に計算量を削減する。
SWAの核心は「言語の局所性」という観測に基づく。自然言語では、あるトークンの意味は近傍のトークンに最も強く依存し、遠方のトークンへの依存度は急速に減衰する。この性質を利用し:
例: ウィンドウ幅4,096、32層のモデルでは理論上の受容野は4,096×32=131,072トークン。これがMistral 7B(SWA w=4,096、32層)が実効的に長い系列を処理できる理由である。
| モデル | ウィンドウ幅 | 層数 | 理論受容野 | 公称コンテキスト長 | 備考 |
|---|---|---|---|---|---|
| Mistral 7B | 4,096 | 32 | 131,072 | 32,768 | SWA実用化の先駆者 |
| Mistral Large 2 | 可変 | 非公開 | 非公開 | 128,000 | SWA+Full Attentionのハイブリッド |
| Mixtral 8x7B | 4,096 | 32 | 131,072 | 32,768 | MoE+SWAの組み合わせ |
| Gemma 2 | 4,096/8,192 | 交互 | 可変 | 8,192 | 偶数層SWA/奇数層Full |
| Phi-3-mini | 2,048 | 32 | 65,536 | 128,000 | SWA+Longrope併用 |
全層でSWAを適用。最もメモリ効率が高いが、長距離依存の捕捉は受容野に依存:
SWA層とFull Attention層を交互に配置:
シーケンスを固定長チャンクに分割し、チャンク内はFull Attention、チャンク間はSWA:
SWAはFlash Attention 2/3と組み合わせることで最大の性能を発揮する:
Q1: SWAのウィンドウ幅はどう決めるべきか? A: タスクの局所依存性に依存する。コード生成・翻訳など局所パターンが主要なタスクでは2,048〜4,096で十分。長文書要約や多文書比較では8,192以上が推奨される。Mistral 7Bのw=4,096は多くのタスクで良好なバランスを示す。
Q2: SWAを使うとPerplexityは悪化するのか? A: 短〜中程度のテキスト(数千トークン)では影響は軽微(perplexity増加1%未満)。ただし長距離の事実参照や因果推論を含むタスクでは、Full Attentionに比べて精度低下が顕著になる場合がある。
Q3: SWAとSparse AttentionやLinear Attentionの違いは? A: SWAは「固定幅の局所窓」という最もシンプルなスパースパターン。Sparse Attention(BigBird等)は局所窓+ランダム+グローバルトークンを組み合わせた複合パターン。Linear Attentionはカーネル近似によりO(n)を実現するが精度面でSelf-Attentionに劣る。SWAは実装のシンプルさと性能のバランスが優れている。