- はじめに — 同じ戦場、別の武器
- ハイブリッド SWA とは何か — 局所的な窓と大域的な視野
- MiMo v2.5 が実際に行ったこと — アーキテクチャ
- 潜在力を本番へ — KV キャッシュの再設計とスケジューリング
- おわりに — 正直に読む
- 参考資料
はじめに — 同じ戦場、別の武器
前回の量子化記事 の最後の結論は「次のボトルネックは KV キャッシュ」でした。長コンテキストではキャッシュが重みより大きくなり、だからキャッシュをより少ないビットで保存する KV 量子化が次の戦場だと書きました。この記事は 同じ戦場を別の軸から 攻める話です。量子化が「KV 項目ひとつを何ビットで保存するか」なら、今日のテーマであるハイブリッド SWA は「KV 項目をそもそも何個保持するか」です。
きっかけは Xiaomi が公開した MiMo v2.5 推論最適化の記事 です。記事の最初の一文が問題意識を的確に要約しています — 「強力でありながら長コンテキスト推論に効率的なモデル」を望むが「この二つの目標は本質的に緊張関係にある」ということ。この緊張をアーキテクチャで解く道具がハイブリッド SWA です。
ハイブリッド SWA とは何か — 局所的な窓と大域的な視野
標準的なアテンションでは、すべてのトークンが前のすべてのトークンを見ます — 系列長 N に対して計算は N の二乗、KV キャッシュは N に比例して増えます。 スライディングウィンドウアテンション(SWA) は、各トークンが直近 W 個のトークンだけを見るように制限します。すると一層の計算は N×W に線形化され、KV キャッシュは系列全体ではなくウィンドウサイズ W で上限が決まります — 系列が長いほど利得が大きくなります。
良くなるのは二つで、分けて見るのが良いです。KV 項目が減れば メモリ が減り、同じ GPU により多くの同時リクエストとより長いコンテキストを載せられます(容量の利得)。そして decode はメモリ帯域に縛られるため、ステップごとに小さいキャッシュを読むことは 速度 でもあります(遅延の利得)。MiMo の記事が KV 圧縮を「容量レベル(capacity-level)の利得」と呼ぶ理由がこれです — 長コンテキストでのより大きな報酬は、そもそもワークロードを載せられるかどうかです。
問題は、SWA だけでは窓の外の情報を失う点です。文書の冒頭にある名前を後から正確に参照する種類のタスク(いわゆる needle-in-a-haystack)は、局所的な窓だけでは崩れます。そのため最新のモデルは SWA を単独では使わず、 大半の層は局所的な窓(SWA)、少数の主要な層は大域的な視野(フルアテンション) として混ぜます。これがハイブリッド SWA であり、Mistral の SWA に始まり、Gemma 3(局所/大域層の比率を上げ、窓を短く保つ)や GPT-OSS などで既に定着した設計です。要点は「局所性でコストを削りつつ、数個の大域層で長距離依存を捕まえる」ことです。
なぜ今これが重要かというと、コンテキストが数十万〜100 万トークンへ伸びるにつれ、フルアテンションの KV キャッシュがサービングコストの支配的な項目でありボトルネックになったからです。量子化がこの問題への「数値」軸の答えなら、ハイブリッド SWA は「アーキテクチャ」軸の答えです。
MiMo v2.5 が実際に行ったこと — アーキテクチャ
記事によれば、MiMo-V2.5-Pro は 70 層のうち 10 層のみフルアテンション、残り 60 層が SWA です(大域はわずか約 1/7)。スライディングウィンドウのサイズは 128 トークン — Gemma 3 の短い窓の方針よりもさらに攻めた値です。
全70層
├─ SWA 60層 (各トークンは直近128トークンのみ → KVは窓サイズで上限)
└─ Full 10層 (大域的な視野・長距離の想起 → KVは系列長に比例して増加)
理論上の上限: 計算量 ≈ 1/7, KVキャッシュ ≈ 1/7 (約7.0倍)
この構成で記事は、総計算量がフルアテンションの「約 1/7」、KV キャッシュメモリも「1/7 に近く」下がり、それぞれ 約 7.0 倍 の削減になると述べます。ただしこの 7 倍はアーキテクチャが与える上限(理論値)であって、実測された端から端までの速度向上ではない点を先に釘を刺しておきます。
計算に正直な但し書きをひとつ。10 個のフルアテンション層は依然 O(N) のキャッシュを持つため、総 KV はおおよそ (60·W + 10·N) / (70·N) です。系列が短いうちは 1/7 の近くですらなく、N が大きくなって初めて局所項が洗い流され、比率が 10/70 に近づきます。記事が「1/7 に近く」と言い、利得が系列長とともに増えると強調する理由がこれです — 7 倍は定数ではなく漸近線です。
残りの構成は最近のサービングモデルの標準的な組み合わせです — 疎な MoE(層あたり平均エキスパート負荷は約 0.85)、デコードを加速する 3 層 MTP(Multi-Token Prediction) 。MTP は下でも出てくるので一言添えると、モデルが 1 ステップで複数の将来トークンを予測して検証し、受理率が高ければ一度の順伝播で 1 トークンより多く進む手法です(モデルに組み込まれた投機的デコード風の工夫)。総パラメータ数は公開されていません。
潜在力を本番へ — KV キャッシュの再設計とスケジューリング
ここがこの記事で最も価値のある部分です。興味深いのはアーキテクチャそのもの(今や一般的)ではなく、この 7 倍の「潜在力」を実際に回収するのにかかったエンジニアリングです。
- デュアルプール KV キャッシュ — 従来の単一プールはすべての層に O(N) のメモリを確保するため、SWA の窓スパース性を活かせません。そこでフルアテンション用プールと SWA 用プールを分離し、SWA プールはウィンドウ分だけ確保して保存を O(W) に強制します。
- SWA を意識したプレフィックスキャッシュ — プレフィックスキャッシュは「同じトークン列なら同じ KV」を前提に再利用しますが、SWA では同じ列でも KV の末尾の一部しか残っていないか、完全に追い出されている場合があります。そこで「末尾 W 個のトークンが SWA プールに有効なスロットを持つか」まで見る ウィンドウ安全長(window-safe length) でマッチ長を切り詰めます。雑に扱うと無効なスロットを読んで静かに間違えます。
- チャンクプレフィル — 長いプレフィルを 16K トークンの固定チャンクに分割します。記事はプレフィックスが長いほどスループットが急落すると正直に明かします — プレフィックスがほぼ無い時の 1 倍から、1M トークンのプレフィックスで約 0.12 倍まで。
- PD 分離 + EP 縮小 — プレフィルとデコードを分離配置し、SWA で KV キャッシュが減った分、エキスパート並列(EP)のサイズを半分に縮小しました。記事はこれだけで端から端までの性能が 約 40% 改善 したと報告します(自社測定値)。
- プレフィル時の MTP 対応 — プレフィルで MTP を有効にしないと最初の 128 デコードトークンの予測受理率が底でしたが、これを修正して 最初の 0–128 トークンで 2.3 倍、128–256 トークンで 1.5 倍 の加速を得たとしています(自社測定値)。
- 長さバケッティング + NUMA チューニング — リクエストを長さでバケット(0–64K / 64K–256K / 256K–1M)に振り分け、NUMA 配置を調整して、バッチを均質に保ちメモリアクセスを局所に留めます。
本番指標としては、サーバ側の KV キャッシュヒット率が平均 93% 、ヘビーユーザーでは 95% 以上だと明かしています。いずれもベンダーの自己申告値であり、再現可能な公開ベンチマークではありません。KV キャッシュ効率のランキングで自社モデルが DeepSeek-V4 系に次ぐ 2 位という主張も、自社によるランキングです。
おわりに — 正直に読む
まず本当に良い点。この記事の価値は「速くしました」という自慢ではなく、 SWA を本番に載せる際に静かに壊れる箇所を露わにしたこと です。特にプレフィックスキャッシュが SWA で無効化される問題(ウィンドウ安全長)は、大半の宣伝記事が飛ばす、実務者が実際に踏む罠です。アーキテクチャ上の利得(7 倍)がシステムエンジニアリングなしには回収されないという語り口も正直です。
長コンテキストのサービングを作るなら、持ち帰るべき教訓はモデルではなくチェックリストです — KV プールを分け、プレフィックスキャッシュのマッチをウィンドウ対応にし、長いプレフィルをチャンクに割り、プレフィル直後の初期トークンの MTP 受理率を測り直す。どれも MiMo 専用ではなく、すべて素朴な SWA デプロイが静かに利得を失う箇所です。
欠けているものも明確です。第一に、 品質の話が丸ごとありません。 SWA は定義上、窓の外の情報を失い、だからこそハイブリッドが存在するのに — 10 個の大域層がその損失をどれだけ埋めるのか、needle-in-a-haystack や長距離の想起で 128 の窓が持ちこたえるのかについての数値がひとつもありません。128 はかなり攻めた窓なので、なおさら気になる点です。第二に、 見出しの数値は大半がベンダーの本番内部指標 (93%、40%、2.3 倍)であって、独立に再現できるベンチマークではありません。7 倍でさえ実測ではなく上限です。
公平に言えば、これは本番システムのレポートです。ですからキャッシュヒット率や端から端までの改善のような自己申告の本番指標は、その主張には適した種類の数値でもあります — 学術ベンチマークでないことが欠点ではありません。本当の空白はシステムの数値ではなく、品質についての沈黙です。
だから前回の量子化記事と結論が同じになります。量子化は KV 項目の ビット数 を減らし、SWA は KV 項目の 個数 を減らします — 直交する二つの軸なので重ねて使えます(窓で絞ったキャッシュをさらに FP8 で保存)。そしてどちらの軸でも、紙の上の削減は自分のタスクの評価セットで測り直すまでは潜在力にすぎません。MiMo の記事の後半全体が、まさに「7 倍を実際にどれだけ回収できるか」の記録であること — それがこの記事が与える最も正直な教訓です。
参考資料
현재 단락 (1/31)
[前回の量子化記事](/blog/2026-07-08-llm-quantization-2026) の最後の結論は「次のボトルネックは KV キャッシュ」でした。長コンテキストではキャッシュが重みよ...