0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2ビットKVキャッシュで長文検索を守るNOVA-KV、鍵はクエリが見る次元

0
Posted at

Qwen3-8B は 12.8 万トークンの長文から目的の一文を 83% の精度で拾い出せる。ところが KV キャッシュを 2 ビットまで潰した瞬間、ある定番手法ではその精度が 0.0% に落ちる。モデルの重みは一切いじっていない。壊れたのはキャッシュの丸め方だけだ。この落差を突き詰めて、2 ビットでも長文の検索精度をほぼ保った手法が 8 月に arXiv へ出た。南カリフォルニア大のグループによる NOVA-KV である。

KV キャッシュを「読む」時間が、計算そのものより長い

LLM が長い文脈を扱うとき、生成する 1 トークンごとに過去全トークンぶんの KV キャッシュ(各トークンの Key と Value を保存したテンソル)をメモリから読み出す。文脈が 10 万トークンを超えると、このキャッシュは数十 GB に達する。論文の出発点はここで、要旨はこう言い切っている。

Loading it takes longer than computing attention over it, so throughput is bandwidth-bound.

つまりアテンションの行列積そのものより、キャッシュをメモリから読み込む時間のほうが長い。デコード速度はメモリ帯域で頭打ちになっている。だからキャッシュを小さくすれば、それがそのまま速度と同時実行数の増加につながる。16 ビットの値を 2 ビットに落とせば理屈のうえで転送量は 8 分の 1、デコードは数倍になる余地がある。

問題は、その圧縮で精度を落とさずに済むか。KV キャッシュ量子化は 2024 年の KIVI(Key は channel 方向、Value は token 方向という非対称な丸め方を提案した ICML 2024 の研究)あたりから実用段階に入り、4 ビット圏では QuaRot のように行列を回転させて外れ値をならす手法がほぼ無損失を達成していた。QuaRot は LLaMA2-70B の 4 ビット化でゼロショット性能の 99% を保つ。ただしそれは 4 ビットの話だ。

4 ビットで効く「回転して丸める」が、2 ビットの長文で崩れる

2 ビットまで下げると景色が変わる。NOVA-KV が既存手法と比べた RULER の針探し(長い干し草の山に埋めた一本の針、つまり特定情報を後から正しく引き出せるか)の結果が象徴的だ。

モデル 手法(ビット/要素) 128K 文脈での検索精度
Qwen3-8B BF16(16 ビット) 83.4%
QuaRot(2.25) 0.0%
OSCAR(2.28) 25.3%
NOVA-KV(2.22) 75.4%
GPT-OSS-20B BF16 80.4%
QuaRot / OSCAR 0.0%
NOVA-KV(2.41) 54.0%

同じ 2 ビット強でも、回転ベースの QuaRot は長文検索が完全に崩壊する。原因は評価している「誤差」の種類にある。QuaRot 系がやっているのは、ランダム行列や Hadamard 行列で各次元の分散を平らにならしてからスカラー量子化する、という手続きだ。これは Key や Value のテンソルそのものをできるだけ忠実に復元することを目指す。復元誤差(元の値と丸めた値の差)を小さくする発想である。

ところが復元が多少ずれても最終的な出力が無事なら実害はないし、逆に小さなずれが致命傷になる次元もある。分散を一律にならす回転は、エネルギーを一点に集めるのではなく全次元へ均等にばらまくので、限られた 2 ビットを「効く次元」に集中投下できない。低ビットでスカラー量子化を使うこと自体も効率が悪い。長文になるほど誤差が積み上がり、針探しのような一点を厳密に当てるタスクで先に破綻する。

丸めるべきは「値」ではなく「アテンションの結果」

NOVA-KV の主張を一言でいえば、Key と Value を正確に復元しようとするのをやめる、である。キャッシュは最終的にアテンション積を計算するためだけに存在する。ならば最小化すべきは Key/Value の復元誤差ではなく、それらが生むアテンション出力の誤差だ。論文はこの視点を「クエリが見ている場所にビットを配る」と表現し、出力誤差を次のように分解する。

アテンション出力の誤差 ≒ (Key の量子化誤差 × クエリ統計 QᵀQ)
                       + (Value の量子化誤差 × スコア統計 SᵀS)

Key の誤差はクエリの統計 QᵀQ で、Value の誤差はアテンションスコアの統計 SᵀS で重み付けされる。要は「クエリが強く見る方向の Key」と「大きなスコアが乗る Value」の誤差だけが効くので、そこへビットを集中させればよい。

技術的なヤマは、この重み付き誤差をどう扱いやすい形に落とすかにある。NOVA-KV はキャリブレーション用データの統計から、Key と Value それぞれの最適変換を閉じた式で導く。導かれた Key の変換は直交行列ではないが、一般化された Parseval 関係(直交変換なら変換前後で二乗誤差が保存される、という定理の非直交版)を満たす。この性質のおかげで、扱いにくい「アテンション積の誤差」が変換後の空間では普通の二乗誤差(MSE)に化ける。あとは MSE を最小化するベクトル量子化(複数の係数をまとめて 1 つのコードに割り当てる方式。1 次元ずつ丸めるスカラー量子化より低ビットで有利)を素直に当てればいい。固定長レイアウトの制約は、係数を等体積のグループに分けることで、同じサイズのコード表でも可変レートの最適に届くと示している。

理屈だけでなく数字も出ている。GPQA・HumanEval・LiveCodeBench v6・AIME25・MATH500 を平均した汎用性能で、Qwen3-8B は BF16 の 74.7% に対し NOVA-KV(2.22 ビット)が 72.9%、差は 1.8 ポイントで統計的に区別がつかない水準だ。私がとくに効くと見るのは、Sliding-window と MoE を混ぜたハイブリッド構成の GPT-OSS-20B での挙動である。ここでは比較対象の OSCAR が 76.5% から 13.9% へ崩落するのに対し、NOVA-KV は 72.4% を保った。2 ビットで実用に耐える手法がこの構成では他に存在しない、という点は地味だが重い。

速度面は、直近と先頭の少数トークンだけ 16 ビットで残しつつ本体を 2 ビット強に落として、Qwen3-8B のデコードが 1.6〜3.1 倍、より小さい Qwen3-4B では最大 3.4 倍。90K 文脈あたりで約 3 倍に達する。GPT-OSS-20B は sliding-window 層が多いぶん 1.1〜1.5 倍にとどまる。長い文脈ほど圧縮率がそのまま時間短縮に効く、という帯域律速の性質どおりの結果だ。

手放しで使う前に見ておく前提

面白い手法だが、そのまま本番に持ち込める段階ではない。まず理論は「高解像度」つまりビット数が十分多い前提で組まれており、著者自身が 2 ビットではその仮定が崩れうる、理論は保証ではなく設計の指針だ、と書いている。係数を等体積に分ける最適な分割は NP 困難なのでヒューリスティックで代用しているし、Key と Value は別々に最適化していて同時最適化は今後の課題として残る。実運用で効くのはチャンク分割した prefill(長い入力を分割して逐次処理する方式。多くの推論エンジンが採用する)での挙動で、後続チャンクが量子化済みの履歴に対してさらに量子化を重ねるため誤差が累積する。論文はこれを認めつつ、複利的に膨らむ影響には踏み込んでいない。キャリブレーションは GPQA-Diamond で行い、MMLU で取り直しても劣化は 2 ポイント以内とはいえ、較正データ依存は残る。そして現時点で公開実装は見当たらない。追試したいなら自前で再現するしかない。

それでも、この論文が示した発想の転換は KV キャッシュ量子化の枠を超えて効くと思う。テンソルを忠実に復元することと、そのテンソルが担う計算を保つことは別物だ、という一点である。量子化にせよプルーニングにせよ蒸留にせよ、圧縮の評価軸を「元の値との近さ」から「下流の計算結果への影響」へ移すと、限られた予算の配り先が変わる。長文推論のコストが重くのしかかる場面で、まず疑うべきは「何を保存しているつもりか」なのかもしれない。一次情報は下記の arXiv 版で確認できる。

※本記事は一次情報の調査をAIが行い、事実確認のうえ執筆・公開しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?