vLLM TurboQuant Study: 正確性とパフォーマンス分析
vLLM は、KV キャッシュを 3〜4 ビットに圧縮し、注意計算のために BF16 にデクォンタイズする TurboQuant という KV‑cache 量子化手法に関する包括的な調査を実施しました。この調査の結論は、TurboQuant は KV‑cache の容量を増やすことはできるものの、スループット、レイテンシ、正確性を犠牲にすることが多く、ほとんどのユーザーに対しては FP8 が推奨されるデフォルトであるということです。
量子化方式の比較
この調査では、30B から 200B 以上のパラメータを持つモデル(Llama-3.3-70B-Instruct、Qwen3-30B-A3B、MiniMax-M2.7 など)を対象に、4 つの TurboQuant バリアントと非量子化 BF16、FP8 のベースラインを比較しました。
- FP8 (
--kv-cache-dtype fp8): ストレージと注意計算の両方をハードウェアネイティブな FP8 Tensor Core 演算で量子化します。KV‑cache の容量が 2 倍になり、正確性の損失はほぼ無視でき、BF16 のパフォーマンスと同等またはそれ以上です。 - TurboQuant k8v4: 8 ビットキーと 4 ビットバリューを使用します。
- TurboQuant 4bit-nc: 4 ビットキーとバリューにノルム補正を加えたものです。
- TurboQuant k3v4-nc: 3 ビットキーと 4 ビットバリューにノルム補正を加えたものです。
- TurboQuant 3bit-nc: 3 ビットキーとバリューにノルム補正を加えたものです。
正確性への影響
正確性の低下は、量子化バリアントの aggressiveness によって大きく異なります。特に長文コンテキストや推論タスクで顕著です。
長文コンテキスト検索
openai/mrcr タスクを用いた結果、ビット数が高いバリアント(k8v4 と 4bit-nc)は検索性能をうまく保ちます。一方、攻撃的なバリアント(k3v4-nc と 3bit-nc)は有意な劣化を示しました。Qwen3-30B-A3B-Instruct-2507 では、これらのバリアントが BF16 と比べて約 30% の相対的劣化を示し、シーケンス長が 128k〜256k の間でエラーが蓄積されました。
推論性能
デコード中心の推論ベンチマーク(AIME25、GPQA:Diamond、MATH500、LiveCodeBench-v6)において、攻撃的な TurboQuant バリアント(k3v4-nc と 3bit-nc)は Qwen3-30B-A3B-Thinking-2507 で最大 20 ポイントの正確性低下を引き起こしました。200B 以上のパラメータを持つ MiniMax-M2.7 でも、これらのバリアントは AIME25 と LiveCodeBench-v6 で顕著な劣化を示し、モデルサイズだけでは低ビット量子化の正確性損失を完全に相殺できないことが分かりました。
パフォーマンスとサービング指標
TurboQuant は、注意計算の前に低ビットストレージを BF16 に戻すデクォンタイズオーバーヘッドが発生します。一方、FP8 は FP8 のままで計算します。
レイテンシとスループット
- FP8: レイテンシオーバーヘッドがほぼなく、すべてのテストモデルで BF16 と同等のスループットを実現します。
- TurboQuant: すべてのバリアントで測定可能なレイテンシ増加が見られます。Llama-3.3-70B ではオーバーヘッドが 10%〜68% の範囲で、バッチサイズが大きくなるほど増加します。スループットは BF16 より常に低く、バリアントに応じて BF16 の 66%〜80% の範囲です。
サービング速度(TPOT と TTFT)
- Token 当たりの出力時間 (TPOT): FP8 は BF16 と同等かそれ以上の速度です。TurboQuant バリアントは負荷が増すにつれてトークンあたりのオーバーヘッドが大きくなり、Llama-70B のバースト時には BF16 より 1.5 倍〜2.5 倍遅くなります。
- 最初のトークンまでの時間 (TTFT): メモリが制約されるシナリオ(例: 4xH100 上の Llama-3.3-70B)では、BF16 の TTFT がメモリ飽和により急増します。TurboQuant バリアントは同時リクエスト数を増やせるため TTFT を大幅に短縮し、3.5 秒未満で収まります(BF16 は約 17 秒)。しかし、FP8 が最も優れた結果を示し、TTFT は約 1.3 秒です。
最終的な推奨事項
評価に基づき、vLLM は KV‑cache dtype の選択に関して以下のガイダンスを提供します。
- FP8 (
--kv-cache-dtype fp8) を使用: デフォルトとして最適です。容量が 2 倍になり、スループットコストがなく、正確性の損失もほぼ無視できます。 - TurboQuant 4bit-nc を使用: メモリが制約され、容量(最大 3.4 倍)とバースト時の TTFT 向上が正確性の中程度の損失とスループット低下を上回る場合に検討してください。
- TurboQuant k8v4 は避ける: FP8 に比べてわずかな節約(2.4 倍)しかなく、パフォーマンス上の利点がありません。
- TurboQuant k3v4-nc と 3bit-nc は避ける: 正確性が大幅に低下し、パフォーマンスも著しく劣化するため、実運用には不適です。
- BF16 を使用: GPU メモリがボトルネックでない場合は、非量子化ベースラインを維持してください。