ローカル・グローバルアテンション(ローカルグローバルアテンション)
スパースアテンションの基本設計パターンで、各トークンが隣接トークンのみに注意するローカル層と、特定のアンカートークンが全トークンに注意するグローバル層を組み合わせる手法。LongformerやBigBirdの中核構成であり、2025年のMistralやDeepSeekにも受け継がれている。
ローカル・グローバルアテンションとは
ローカル・グローバルアテンションは、スパースアテンション機構の最も基本的かつ広く採用されている設計パターンである。全トークン間のFull Attention(O(n²))の代わりに、「近傍トークンへの注意(ローカル)」と「全体を俯瞰する特別なトークンへの注意(グローバル)」を組み合わせることで、O(n)の計算量で長文を効率的に処理する。
ローカルアテンションの仕組み
ローカルアテンション(Local Attention / Sliding Window Attention)では、各トークンが固定幅ウィンドウ内の隣接トークンのみに注意を向ける。
ウィンドウ幅の設計指針
| モデル | ウィンドウ幅 | レイヤ数 | 受容野 | コンテキスト長 |
|---|---|---|---|---|
| Longformer-base | 512 | 12 | 6,144 | 4,096 |
| Mistral 7B | 4,096 | 32 | 131,072 | 32,768 |
| Mistral 8x22B | 4,096 | 56 | 229,376 | 65,536 |
| Phi-3-mini | 2,048 | 32 | 65,536 | 128,000 |
| Gemma 2 9B | 4,096 | 42 | 172,032 | 8,192 |
受容野 = ウィンドウ幅 × レイヤ数。受容野がコンテキスト長以上であれば、理論的には全入力の情報が各トークンに到達可能である。Mistral 7Bの場合、受容野131,072はコンテキスト長32,768の約4倍であり、情報の到達性に十分な余裕がある。
ウィンドウ幅とメモリ使用量の関係
ウィンドウ幅wを大きくすると精度は向上するがメモリ使用量も増加する:
- w=128: メモリ使用量最小(ベースの約1.2倍)、短い依存関係のみ捕捉
- w=512: Longformerのデフォルト。中程度のメモリ、文段落レベルの依存関係
- w=4,096: Mistralのデフォルト。やや高メモリ、数ページ分の依存関係
- w=8,192: 高メモリ、章レベルの依存関係
グローバルアテンションの仕組み
グローバルアテンション(Global Attention)では、選択された少数のトークンが全入力トークンに対して双方向に注意を向ける。これらのグローバルトークンは情報のハブ(Hub)として機能し、離れた位置のトークン間の情報伝達を仲介する。
グローバルトークンの選択戦略
- 固定位置: [CLS]、[SEP]、文頭トークンなど事前に定義した位置(Longformer、BigBird)
- 学習ベース: モデルが学習を通じてグローバルトークンの位置を動的に決定(ETC、GMAT)
- タスク依存: 質問応答では質問トークン、要約ではセクション先頭にグローバルを付与(Longformer推奨設定)
- 均等配置: 入力をkトークンごとに分割し、各ブロックの先頭にグローバルを付与(Global-Local Transformer)
グローバルトークン数と性能の関係
| グローバル数 | 追加計算量 | 精度向上 | 用途 |
|---|---|---|---|
| 1-2 | O(2n) | 基本的な集約 | 文書分類 |
| 質問長(10-30) | O(30n) | 質問-文書対応 | 質問応答 |
| n/64 | O(n²/64) | 高精度だがFull寄り | 高精度要求タスク |
| √n | O(n^1.5) | 精度-速度のバランス | 汎用 |
ローカル+グローバルの理論的背景
グラフ理論の観点から、ローカルアテンションは「格子グラフ」、グローバルアテンションは「スターグラフ」に対応する。両者の組み合わせにより、任意の2トークン間が最大2ホップ(トークンA → グローバルハブ → トークンB)で接続される。
情報伝達パスの分析
1層のローカル+グローバルアテンション:
- ローカル-ローカル: 距離w以内のトークン間で直接情報伝達
- ローカル-グローバル-ローカル: グローバルトークンを経由して、距離w以上のトークン間で2ホップ情報伝達
- グローバル-グローバル: 複数のグローバルトークン間で全体構造を把握
L層のスタック後:
- ローカルのみの到達距離: L×w
- グローバル経由の到達距離: 事実上無制限(1層目で全情報がグローバルに集約)
現代のアーキテクチャへの影響
| モデル (2024-2026) | ローカル部分 | グローバル部分 | 特徴 |
|---|---|---|---|
| Mistral 7B/Nemo | SWA w=4096 | なし(純ローカル) | FlashAttention最適化 |
| Jamba (AI21) | SWA混合 | Mamba SSM層 | Transformer+SSMハイブリッド |
| DeepSeek-V3 | NSA圧縮 | 動的選択 | ハードウェア最適化 |
| Gemma 2 | 交互SWA | Full Attention層 | ローカル/Full交互配置 |
| Command R+ | SWA | RAG統合グローバル | 検索拡張と統合 |
特筆すべきは、Gemma 2の「交互配置」アプローチである。奇数レイヤにSliding Window(ローカル)、偶数レイヤにFull Attention(事実上のグローバル)を配置し、レイヤ単位でローカル/グローバルを交互に適用する。
実装のベストプラクティス
- ウィンドウ幅はGPUのSRAMサイズに合わせて設定(A100: w=4096が最適、H100: w=8192まで効率的)
- グローバルトークン数はタスクに応じて最小限に(分類なら1-2個で十分)
- FlashAttention実装との互換性を確認(FlashAttention-2はSWAネイティブ対応)
- マルチヘッドアテンション内で、一部のヘッドをローカル専用、一部をグローバル対応とする「混合ヘッド」も有効
よくある質問(FAQ)
Q1: ローカルのみ(グローバルなし)で十分なケースはあるか? A: ある。Mistral 7BはSliding Window Attention(ローカルのみ)で高い性能を示している。32層×w=4096の受容野が十分に大きいため、多層スタックによる情報伝達で長距離依存を捕捉できる。ただし文書間の矛盾検出など、離れた箇所の直接比較が必要なタスクではグローバルの追加が有効。
Q2: グローバルトークン数を増やすと必ず精度は上がるか? A: 必ずしもそうではない。グローバル数をn/64以上にするとFull Attentionに近づくため計算量が増大し、スパースアテンションの利点が薄れる。経験的には、質問応答で質問トークン数程度、分類で1-2個が最適解となることが多い。
Q3: 自作PCでローカル・グローバルアテンションを試すにはどうすればよいか? A: 最も手軽な方法はMistral 7Bの量子化版(GGUF Q4_K_M、約4.4GB)をllama.cppで動作させること。RTX 3060(12GB VRAM、約4万円)で32Kコンテキストまで動作する。Longformerを試すならHugging Face Transformersからlongformer-base-4096を利用し、RTX 3060で十分。
まとめ
- ローカル(Sliding Window)+グローバル(特定ハブトークン)がスパースアテンションの基本設計
- グラフ理論的に、2ホップで任意のトークン間の情報到達を保証
- Longformer、BigBird、Mistral、Gemma 2など広く採用されている
- ウィンドウ幅とグローバル数の適切な設定がモデル性能の鍵
- 2025-2026年はSSMとのハイブリッドや動的選択など発展形が主流