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




