SGLang把KV缓存压到4位:长上下文解码吞吐提升26%到30%,智能体高并发下FP8先撑不住
核心概要
SGLang 为分页 KV 缓存加入 NVFP4 存储,把每个 token 的键值数据从 FP8 再压到约 56% 的字节量。在 Qwen3.8-27B 上,32K、160K、1M 三种输入长度下保持相同解码并发,峰值批解码吞吐提升约 26% 到 30%;智能体负载并发超过 12 后,FP8 吞吐骤降而 NVFP4 继续上升。精度上两个模型的差距随任务不同,最大为 SWE-bench Verified 上的 1.60 个百分点。
深度剖析
长上下文推理的 KV 缓存现在可以按 4 位存储,解码阶段直接读取压缩后的键值,不再先整体解压再计算。 此前生产系统普遍用 FP8 存 KV,相对 BF16 已把数据量减半,但 4 位格式的量化误差更大,是继续压缩的主要障碍。 在单块 NVIDIA RTX PRO 6000 Blackwell 上,Qwen3.8-27B 在 32K、160K、1M 输入、每请求 1024 输出 token 的固定负载下,保持相同解码并发时峰值批解码吞吐提升约 26% 到 30%。
实现把 NVFP4 缓存接入 SGLang 的三条注意力路径:初始预填充、分块预填充或扩展、解码。 初始预填充的注意力直接消费当前提示的 FP8 键值,同时把同一份数据量化后写入 NVFP4 缓存;扩展阶段把缓存前缀反量化进一对跨层共享的 FP8 工作区,再与当前分块一起计算。 解码路径在注意力核内完成反量化,避免对整个缓存做一次独立的读写往返;每个 16 值块占 8 字节打包数据加 1 字节块缩放,合计约为 FP8 同等键值量的 56%。
容量受限时,更小的缓存让同一块 GPU 常驻更多请求,吞吐增益随之放大。 相同并发下 NVFP4 与 FP8 的差距来自读流量减少;放开并发后,NVFP4 还能多容纳请求,这部分收益此前不存在。 32K、160K、1M 下常驻请求数分别从 44、10、1 增至 70、15、2,峰值批解码吞吐分别提升 37.37%、57.75%、78.46%;预填充在相同并发下平均首 token 时间只增加 0.20% 到 0.40%。
启示与展望
演示范围是 SGLang 中实验性的 NVFP4 KV 缓存,精度在 Qwen3.5-397B-A17B 与 Qwen3.8-27B 上评测,性能在单块 RTX PRO 6000 Blackwell 与 8 卡 RTX 6000D 节点上测量;1M 负载是使用显式上下文长度覆盖的性能实验,模型原生上限为 262,144 token。
当前支持仍是实验性的,仅覆盖 SM12x 与 SM100/SM103 以及 GQA 和稀疏 MLA 模型;实验未启用 NVFP4 的逐张量 FP32 全局缩放(取 1.0),校准可能缩小与 FP8 的精度差距。两个模型和少量任务不足以确立模型规模与量化容忍度之间的一般关系,解码吞吐增益也不等同于端到端加速。
