长上下文推理的显存瓶颈一直是生产部署的痛点。KV-cache 量化作为缓解手段,长期面临「容量 - 吞吐量 - 精度」的不可能三角:TurboQuant 等方案虽能压缩 2-4 倍显存,但 vLLM 官方测试显示其吞吐量较 FP16 下降 40-52%,且低比特量化往往伴随精度损失。华为 CSL 近期开源的 KVarN(Variance-Normalized KV-Cache)试图打破这一困局 —— 在 Qwen3-32B 实测中,它实现了约 4 倍 KV-cache 容量、高于 FP16 的吞吐量,同时保持 FP16 级精度。
四阶段量化流水线
KVarN 的核心创新在于对量化前的数据分布进行预处理。其处理流程分为四个阶段,每个阶段针对低比特量化的特定误差来源进行优化:
第一阶段:原始缓存(Cache) 接收来自注意力层的标准 FP16 KV tile,形状为 (channels × tokens)。这是量化的输入基线。
第二阶段:旋转缓存(Rotated Cache) 沿通道维度应用 Hadamard 旋转。这一正交变换将各通道的离群值(outliers)均匀分散到整个 tile 中,避免少数通道的极端值主导量化范围。由于 Hadamard 矩阵的正交性,注意力分数在数学上保持不变。
第三阶段:归一化缓存(Normalized Cache) 采用类 Sinkhorn 的迭代方差归一化算法,交替进行列向和行向的标准差归一化(在 log 空间执行)。该步骤均衡化 tile 内的方差分布,在舍入操作前主动压缩动态范围,从源头降低量化误差。
第四阶段:量化缓存(Quantized Cache) 执行非对称就近舍入(asymmetric round-to-nearest),支持 INT8/FP8 及更低比特配置。量化尺度在读取时重新折叠:keys 按通道反量化,values 按 token 反量化。
当前发布的默认配置 kvarn_k4v2_g128 采用 4-bit keys 与 2-bit values,group size 为 128。该配置在精度上通过了 vLLM 最严格的验收标准,同时保持高于 FP16 的吞吐。
性能表现与对比分析
在 AIME25 基准测试(16K 上下文突发负载,TP=2)中,KVarN 与 FP16 基线及 TurboQuant 的对比呈现清晰的帕累托优势:
| 方案 | KV-cache 容量 | 相对吞吐量 | 精度 |
|---|---|---|---|
| FP16 | 1× | 1.0× | 基线 |
| TurboQuant | 2.3-3.7× | 0.48-0.60× | 轻微损失 |
| KVarN (k4v2) | ~4× | ~1.3× | FP16 级 |
KVarN 的关键突破在于打破了「量化必降速」的惯性认知。TurboQuant 在读取 KV-cache 时需即时反量化至 BF16 进行注意力计算,频繁的 dequantize 操作成为吞吐瓶颈;而 KVarN 通过预处理阶段的方差归一化,允许在更低比特下保持精度,且其 Triton kernel 实现减少了内存带宽压力。据官方数据,KVarN 在相同容量下达 TurboQuant 约 2.4 倍吞吐。
部署实践与调参要点
KVarN 以 vLLM v0.22.0 fork 形式发布,安装与启用流程极简:
# 安装
git clone https://github.com/huawei-csl/KVarN.git
cd KVarN
VLLM_USE_PRECOMPILED=1 pip install -e .
# 启动服务
vllm serve Qwen/Qwen3-32B \
--dtype float16 \
--kv-cache-dtype kvarn_k4v2_g128 \
--block-size 128
关键参数说明:
--kv-cache-dtype:启用 KVarN 的唯一必需标志,当前推荐kvarn_k4v2_g128--block-size:固定为 128(一个 vLLM block 对应一个 KVarN tile),其他页大小待后续支持--dtype:KVarN 计算仍使用 FP16,与量化存储分离
单 GPU 内存紧张场景:vLLM 的 CUDA graph 内存探查器可能过度预留内存,导致 KV pool 被压缩。需设置环境变量 VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS=0,或提高 --gpu-memory-utilization 以释放完整容量。
多卡 / 充裕显存场景:KVarN 在存在足够 decode workspace 时自动实现最佳容量,无需额外调参。
局限与适用场景
KVarN 当前版本存在以下工程约束:
- 页大小限制:仅支持 block_size=128,若业务需其他分页策略需等待更新
- 模型覆盖:作为 vLLM 原生后端,兼容 vLLM 支持的模型架构,但具体精度验证需参考官方列表
- 校准 - free 的边界:虽无需离线校准,但极端分布的自定义模型可能需要验证
适用场景优先级:
- 长上下文 Agent 系统:3-5 倍容量提升直接支撑 100K+ token 的 agentic workflow
- 高并发推理服务:吞吐反超 FP16 意味着可在不牺牲 QPS 的前提下服务更多并发
- 显存受限边缘部署:单卡运行大模型时,KV-cache 压缩往往是唯一可行的扩容手段
总结
KVarN 通过 Hadamard 旋转与迭代方差归一化的组合,在低比特 KV-cache 量化中实现了精度、容量与吞吐的三赢。其「单标志启用、无需校准」的设计降低了生产落地门槛,而 Apache 2.0 许可证与 vLLM 原生集成确保了生态兼容性。对于正在评估 KV-cache 量化方案的团队,KVarN 提供了目前少有的「不妥协」选项 —— 在获得数倍显存收益的同时,无需接受吞吐或精度的折损。
资料来源
- GitHub: https://github.com/huawei-csl/KVarN
- arXiv 论文: https://arxiv.org/abs/2606.03458
- vLLM TurboQuant 评测: https://vllm.ai/blog/2026-05-11-turboquant
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。