# スライディングウィンドウアテンション(Sliding Window Attention)
## 定義
スライディングウィンドウアテンション(SWA)は各トークンが現在位置周辺のウィンドウ内のトークンにのみアテンションを行う**ローカルアテンション**機構。グローバルアテンション(全トークン間)と対比して、KV キャッシュのメモリを大幅に削減できる。
```
グローバルアテンション: 各トークン → 全トークン(O(n) KV キャッシュ)
スライディングウィンドウ: 各トークン → 前後 w トークンのみ(O(w) KV キャッシュ)
```
LongFormer 論文(2020)で初導入。グローバルアテンションとローカルアテンションを階層的に組み合わせる設計が多い。
## モデル別の採用状況と設計差異
| モデル | グローバル:ローカル比 | ウィンドウサイズ | 備考 |
|--------|----------------------|-----------------|------|
| Gemma 2 | 1:1 | 4096 | 均等配置 |
| Gemma 3 | 1:5 | 1024 | ローカル寄り |
| Gemma 4 | 1:5 | 1024 + K=V 再利用 | K=V 再利用でさらに削減 |
| GPT-OSS | 1:1 | — | 1 層おきに SWA |
| Xiaomi MiMo-V2-Flash | 1:5 | 128 | 非常に積極的な削減 |
| Arcee AI Trinity Large | 1:3 | 4096 | 大型ウィンドウで精度重視 |
| Mistral Small 3.1 | 廃止 | — | 以前は採用、3.1 で廃止 |
| Olmo 3 7B | — | — | グローバルアテンション層のみ YaRN |
| SmolLM3 | — | — | NoPE との組み合わせ(全層ではない) |
## 設計上のトレードオフ
- **KV キャッシュ削減**: ウィンドウサイズ w に比例。w = 1024 ならメモリ使用量は 1024 トークン分で固定(シーケンス長によらない)。
- **モデリング性能**: Gemma 3 のアブレーション研究では SWA 導入によるパープレキシティへの影響はほぼゼロ。
- **推論レイテンシ**: Mistral の推測では SWA はメモリは削減するが推論レイテンシを必ずしも削減しない(FlashAttention のような最適化カーネルはフル GQA 前提で設計されているため)。
- **ウィンドウサイズ**: 小さすぎると長距離依存の捕捉に支障。Xiaomi の 128 トークンは現時点で最も積極的な設定。
## Gemma 4 の追加工夫
Gemma 4 のグローバルアテンション層では `values = keys` と設定し、K キャッシュと V キャッシュを統一することで KV キャッシュをさらに半分に削減。また部分 RoPE(p-RoPE)で全次元の 25% にのみ回転位置埋め込みを適用。
## 横断的知見
- **MoE との組み合わせは未実証**: SWA と MoE の組み合わせは Xiaomi・Arcee AI が採用しているが、Raschka は「SWA と MoE の組み合わせは将来的に面白い方向」と評し、現時点では Gemma(SWA, dense)と Llama/DeepSeek(MoE, global attention)が分かれている。
- **Mistral の判断**: SWA はメモリは節約するがレイテンシ低減効果が限定的であるため、Mistral Small 3.1 では廃止。FlashAttention のカーネル最適化が GQA + フルアテンション前提であることが一因。
## 関連
- 概念: [[Grouped-Query Attention]] / [[Multi-Head Latent Attention]] / [[KVキャッシュ管理]] / [[NoPE]] / [[Transformer]]
- エンティティ: [[Gemma 3]] / [[Gemma 4]] / [[Xiaomi MiMo-V2-Flash]] / [[Arcee AI Trinity Large]] / [[GPT-OSS]]
- ソース: [[The Big LLM Architecture Comparison]]