BitDecoding-FP4:原生 FP4 KV Cache 解碼

Published · AI Daily — AI-assisted deep research, methodology & disclosure

長上下文大模型服務中,KV cache 同時佔用顯存容量與頻寬。NVFP4、MXFP4 等 4-bit microscaling 格式可縮小快取,並讓 attention 跑在 FP4 Tensor Cores 上。但現有 FP4 KV 系統採用樸素量化,精度損失嚴重;注重精度的 4-bit 演算法依賴向量碼本,查表開銷拖慢解碼吞吐。BitDecoding-FP4 以演算法與系統協同設計彌合這道斷層。演算法端有三項:Dual-Residual Query Quantization 把 query 拆成兩個 FP4 張量,將 query logit 誤差從 60% 降到 1%;Underflow-Aware Probability Scaling 防止 E4M3 scale 把長上下文機率捨入為零;Outlier-Aware Key Quantization 結合靜態平滑、Hadamard 旋轉與 scale 搜尋來壓制 key 離群值。系統端以轉置 softmax、融合的機率量化,以及面向 paged KV cache 的堆疊 query MMA 消除 softmax 瓶頸。在稠密與 MoE 模型、GQA 與 MLA 結構上,NVFP4 精度與 BF16 KV 相差不超過 0.5 分,MXFP4 為 1 分,並能在 RL 訓練 rollout 中跟上 BF16 KV。在 NVIDIA B300 上服務 Qwen3-4B 與 Qwen3-30B-A3B,峰值吞吐比 BF16 KV 高 2.4 至 3.0 倍。

长上下文大模型推理服务里,KV cache 是最大的资源消耗者之一。它既占据大量显存容量,又在每一步 decoding 时被整体读取一遍,占用显存带宽。上下文越长,并发越高,这个问题就越突出。把 KV cache 压到 4 bit 是很自然的出路。NVFP4 和 MXFP4 这类 4-bit microscaling 格式,不仅能把缓存体积缩小,还允许 attention 直接在 FP4 Tensor Cores 上计算,省去反量化的绕路。可是论文指出,算法研究和系统加速之间一直有一道根本的断层。一边是现有的 FP4 KV 系统,它们采用朴素的 vanilla 量化,速度有了,精度却明显下滑。另一边是注重精度的 4-bit 算法,它们依赖向量码本,而码本查表带来的额外开销会直接拖低 decoding 吞吐。两边都没有同时拿下准确和高效。BitDecoding-FP4 正是为补上这道断层而提出的算法与系统协同设计,目标是做到准确且高效的原生 FP4 KV 解码。作者的思路是先把误差来源拆开,针对 query、概率和 key 三个环节分别治理,再在系统层面消除 softmax 带来的瓶颈。

整套方案在稠密模型与 MoE 模型上验证,覆盖 GQA 与 MLA 两种注意力结构,实现也已在 GitHub 开源。在算法层面,论文针对三个误差来源各给出一项技术。第一项是 Dual-Residual Query Quantization。原生 FP4 计算要求 query 也被量化,一次 FP4 量化会让 query logit 出现很大偏差。作者把 query 拆成两个 FP4 张量,第二个张量负责补偿第一个张量留下的残差,让两次低精度表示叠加后逼近原值。按摘要的数据,这使 query logit 误差从 60% 降到 1%。第二项是 Underflow-Aware Probability Scaling。长上下文下单个 softmax 概率非常小,量化概率时所用的 E4M3 格式的 scale 可能被舍入成零,整块概率随之归零,后续与 value 的乘加就丢掉了信息。该技术通过调整概率的缩放,避免这种下溢。第三项是 Outlier-Aware Key Quantization。key 张量里存在离群值,而 token-wise scaling 下一个离群值就会撑大整个 token 的量化范围,压坏其他通道的精度。

作者把静态平滑、Hadamard 旋转和 scale 搜索组合使用:平滑与旋转先把离群值的能量摊开,scale 搜索再为每组数据挑选更合适的缩放。在系统层面,论文用转置 softmax 配合融合的概率量化来拆除 softmax 瓶颈,让概率量化不再单独占用一轮内存读写。同时,它在 paged KV cache 上采用堆叠 query 的 MMA,让矩阵乘单元得到更充分的利用。实验覆盖稠密模型与 MoE 模型,注意力结构包括 GQA 和 MLA。摘要没有列出具体的评测基准名称,只给出了相对 BF16 KV 的精度差距,所以这里只复述这些结论。使用 NVFP4 时,BitDecoding-FP4 的精度与 BF16 KV 相比只差 0.5 分以内;使用 MXFP4 时,差距在 1 分以内。MXFP4 略逊一筹,说明格式本身的 scale 表示对误差有影响,但 1 分的差距对多数部署仍属可接受。论文还检验了一个对精度更敏感的场景,即 RL 训练的 rollout。rollout 用推理引擎生成样本,若 KV 量化带来的分布偏移过大,会干扰训练信号。结果显示 BitDecoding-FP4 能够跟上 BF16 KV 的表现。在系统性能方面,作者在 NVIDIA B300 上做端到端服务评测,模型为 Qwen3-4B 和 Qwen3-30B-A3B,前者是小型稠密模型,后者是 MoE 模型。

与 BF16 KV 相比,峰值服务吞吐提升 2.4 到 3.0 倍。另一个关键数字是 query logit 误差从 60% 降到 1%,它说明第一项算法改进确实切中了朴素 FP4 方案的主要损失来源。需要说明的是,摘要没有给出逐项消融的数值,各技术的单独贡献无法在此量化。这项工作的价值在于证明了原生 FP4 KV 解码不必在精度和速度之间二选一。过去的路线要么牺牲精度换取简单的 vanilla 量化,要么引入码本换取精度却损失吞吐。BitDecoding-FP4 表明,只要把误差来源逐个拆开,再让算法设计迁就硬件的数据通路,就能同时保住两头。对工业落地而言,KV cache 缩小意味着同一块卡能容纳更长的上下文或更多的并发请求,2.4 到 3.0 倍的峰值吞吐提升会直接转化为单位成本的下降。它针对 Blackwell 一代 B300 的 FP4 Tensor Cores,也为后续硬件上的低精度 attention 提供了参考。对开源社区来说,实现已经公开,推理引擎的开发者可以直接借鉴转置 softmax、融合概率量化和堆叠 query MMA 这些系统技巧。研究者也能在其基础上继续探索更激进的量化方案。RL 训练 rollout 上与 BF16 KV 保持一致,更为训练与推理共用低精度缓存扫清了一个顾虑。当然,论文目前展示的只是两个 Qwen3 模型的服务结果,更多模型和更长上下文上的表现,还有待后续工作验证。

Sources

FAQ

BitDecoding-FP4 是什么?

BitDecoding-FP4 是一套算法与系统协同设计的原生 FP4 键值缓存解码方案。它针对 query、概率和 key 三个误差来源分别治理,再用转置 softmax 等系统技巧消除瓶颈,目标是同时做到准确与高效。

BitDecoding-FP4 为什么重要,带来了什么提升?

KV 缓存同时占显存容量与带宽。BitDecoding-FP4 在 B300 上服务 Qwen3-4B 与 Qwen3-30B-A3B,峰值吞吐比 BF16 KV 高 2.4 至 3.0 倍。

BitDecoding-FP4 接下来还要关注什么?

论文只展示了 Qwen3-4B 与 Qwen3-30B-A3B 两个模型的服务结果,摘要未给出逐项消融数值。更多模型、更长上下文的表现需后续验证,实现已在 GitHub 开源,可自行试用。