この論文の実装に約2日かかりました:TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate
リポジトリ:github.com/yashkc2025/turboquant
これまで私が扱ってきた量子化の話は、だいたい次のどちらかに収まっていました:
- キャリブレーションデータが必要(k-means、クリッピング範囲など)
- もしくは素朴にやる(一様量子化)しかなくて、そのぶん品質を犠牲にする
この論文は基本的にこう言っています:じゃあ…どっちもやらなかったらどうなる?
主なアイデアは奇妙なくらいシンプルです:
- あなたのベクトルを用意する
- ランダム回転をかける
- すると座標が突然うまく振る舞う(だいたい~ガウスっぽい)
- だから次元ごとの最適な1D量子化をそのままやれる
学習なし。データセット固有のチューニングなし。同じ量子化器がどこでも動く。
内積に対する良い修正もあります:
通常のMSE量子化は内積をバイアスします(かなりひどく、低ビットでは特に)
そこで彼らは、残差に対して1ビットのJL風補正を加える――> 無偏になります
これが実際に役立つ理由:
- トランスフォーマーのKVキャッシュ トークンがストリーミングで流れてくるのでキャリブレーションできない――> だからオンラインで動くのが効く
- ベクタDB / 埋め込み 各ベクトルを独立に圧縮できるので、前処理ステップが不要
私を驚かせた点:
- 回転ステップがすべての魔法をやっている
- その後は、すべてが解けた1D問題に還元される
- 理論がタイト:最適な歪みの下界から~2.7×以内
実装メモ:
- numpyでかなりきれいに動く
- 回転は高コスト(O(d³))
- 端数ビット(論文はチャンネル分割で2.5 / 3.5-bit)を実装していない
[link] [コメント]



