# スライディングウィンドウアテンション(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]]