← 全部论文2609.38166v1 / r1
版本与下载

LeapQuant:通过准确的递归状态量化加速线性注意力

原题:LeapQuant: Efficient Linear Attention with Accurate Recurrent State Quantization
作者:Yi Pan、Haocheng Xi(共同一作)、Kan Zhu、Xingyang Li、Yibo Wu、Mayank Mishra、Hongtao Zhang、William X. Zheng、Baris Kasikci、Song Han、Kurt Keutzer、Rishabh Iyer、Ion Stoica。
版本与时间:arXiv:2609.38166v1,提交于 2026-09-29;本次获取与研读:2026-10-19,修订 r1。
原文与成品:arXiv · 本地 PDF · 英文汇报 PDF · 可编辑 TeX。

论文总览

LeapQuant 研究的是线性注意力在推理时反复读写的递归状态矩阵。状态大小虽然不随上下文长度增长,但每生成一个 token 都搬运整个矩阵,仍会消耗大量显存带宽;前缀缓存还会保存许多状态检查点,扩大容量需求。

直接把状态改存为 BF16 或 INT8 会反复舍入。每一步的误差进入下一步状态,而少数大幅值行列又扩大了量化间隔。作者把问题拆成两部分:减少误差注入次数,减小每次注入的误差。具体方法是:

  1. 按窗口量化(per-window quantization):固定窗口起点的低精度状态,把窗口内更新保存为高精度向量记录;默认每 16 个 token 才重建、量化一次完整状态。
  2. 补偿 token(Compensator Tokens):用少量高精度低秩因子保留状态中的主导结构,并复用真实 token 的秩一更新路径。
  3. 残差平滑(residual smoothing):对剩余矩阵按 key 通道缩放,再量化;读出时恢复坐标。

在三个完整模型、四个主要任务组成的 12 组结果中,8 位 LeapQuant 和 FP32 状态的平均分均为 75.5%。默认 8 位表示的窗口边界状态约为 1.19 字节/元素,相对 FP32 缩小约 3.4 倍;作者报告端到端输出吞吐平均约 1.47 倍。这些收益来自状态表示和推理内核的共同改变,其他模型组件沿用基线精度。(Table 1,PDF p. 7;Sec. 4.3,PDF pp. 8–9)

结构地图

下文页码均指本地原文 PDF,从 1 开始计数。

原文章节主要作用PDF 页码与证据
1 Introduction带宽、检查点容量和量化误差问题pp. 1–2;Fig. 1
2 Related Work区分线性注意力、量化和状态管理研究pp. 2–3
3.1 Preliminaries统一递归更新及量化误差记号pp. 3–4;Eq. (1)
3.2 Per-window quantization固定边界状态和更新记录p. 4;Eqs. (2)–(4),Figs. 2–3(Fig. 2 在 p. 3)
3.3 Compensator Tokens高精度低秩分量与更新路径复用pp. 5–6;Eqs. (5)–(6),Figs. 4–6
3.4 Residual smoothing平滑残差并恢复坐标p. 6;Eq. (7)
4.1 Setups模型、任务、实现及对照pp. 6–7
4.2 Accuracy Results8/6/4 位状态对模型质量的影响pp. 7–8;Table 1
4.3 Efficiency Results内核、解码、内存和端到端吞吐pp. 8–9;Figs. 7–9
4.4 Ablation Study设计贡献、窗口与秩的选择p. 9;Tables 2–3
5 Conclusion低精度状态服务的意义p. 10
A Instances of the General Update不同架构的统一表示p. 13;Table 4
B Derivations误差传播、窗口展开和平滑读出pp. 14–15;Eqs. (8)–(10)
C Full Downstream ResultsGSM8K 和全部量化格式p. 15;Table 5
D Additional Efficiency Evaluation1K–8K 和最长 128K 的效率pp. 15–16;Figs. 10–11
E Evaluation Details生成采样设置p. 16;Table 6

一:动机——固定大小的记忆仍然需要反复搬运

1.1 线性注意力消除了历史长度增长,却留下了状态读写

每个注意力头维护 $S_t\in\mathbb R^{d_k\times d_v}$。常规解码从高带宽显存(HBM)读出旧状态,更新、计算输出,再写回新状态。单步算术量相对搬运字节数较少,因而容易受内存带宽约束。很多层与很多并发请求同时执行时,这个固定成本会变得可观。

前缀缓存带来另一种成本:为了在多个前缀位置恢复状态,系统要保存多份检查点。本文内存实验按每 1,024 个缓存 token 保存一份线性状态计算,因此单个请求的即时状态大小固定,并不意味着缓存总量固定。

递归状态在时间与容量上的成本

原文 Fig. 1,PDF p. 2。 左图纵轴为解码时间占比,横轴为上下文长度;GLM-5.3-Flash-NVFP4、B200、batch 256 下,线性注意力占比随上下文变化较小。右图横轴为 GPU 内存 GB,纵轴为缓存 token 总量,展示 Qwen3.5-9B 的权重、KV cache 和状态检查点容量。两幅图分别解释带宽优化和容量优化的动机。

1.2 为什么普通 KV 量化经验不能直接照搬

已经缓存的历史 KV 通常不随每个新 token 反复改写。递归状态则不断读出、更新和重新量化,舍入误差也随递归继续传播。加上状态存在显著的行列异常值,仅优化一次量化的表示精度不足以解决整个轨迹的问题。

作者将已有的 KVQuant、QuaRot、TurboQuant 适配到递归状态,作为比较对象。论文的方法位置是:把分块线性注意力的状态展开方式用于低精度解码,再把高精度低秩结构组织为可与更新记录共用执行路径的向量对。低秩加量化、分块展开本身都有先例,本文的特点是围绕递归误差和推理开销组合这些机制。(Sec. 2,PDF pp. 2–3)

二:方法——将密集状态改成可读出的分解表示

2.1 统一的状态更新

原文 Eq. (1):

$$ S_t=\operatorname{Diag}(\alpha_t)S_{t-1} +k_t\bigl(v_t-S_{t-1}^{\top}\beta_t\bigr)^{\top}, \qquad o_t=S_t^{\top}q_t. $$
符号维度 / 类型含义
$S_t$$d_k\times d_v$第 $t$ 步递归状态
$q_t,k_t,\beta_t$$d_k$ 维向量输出查询、写入方向、delta 更新的读取方向
$v_t,o_t$$d_v$ 维向量当前 value 与输出
$\alpha_t$对角衰减系数;可由标量广播各 key 坐标保留多少旧状态
$u_t=v_t-S_{t-1}^{\top}\beta_t$$d_v$ 维向量真实写入的修正值
$p,r$正整数窗口长度、补偿 token 数
$\operatorname{quant}_b,\operatorname{dequant}_b$量化 / 反量化算子低位载荷及其尺度元数据的编码和恢复

更新先衰减旧状态,再写入秩一矩阵 $k_tu_t^\top$。其中 $u_t$ 依赖旧状态,因此缓冲的是计算好的修正向量,不是只保存输入 $v_t$ 就结束。没有 delta rule 时令 $\beta_t=0$。

需要区分主文 $\beta_t$ 与 GDN/KDA 原生记号中的标量步长。附录 A 使用 $\tilde k_t,b_t$ 分别表示主文的写向量 $k_t$、读向量 $\beta_t$,原生 $k_t,\beta_t$ 则保留原模型含义:

模型$D_t$写向量 $\tilde k_t$读向量 $b_t$
DeltaNet$I$$\beta_t k_t$$k_t$
Gated DeltaNet(GDN)$\alpha_t I$$\beta_t k_t$$\alpha_t k_t$
Kimi Delta Attention(KDA)$\operatorname{Diag}(\alpha_t)$$\beta_t k_t$$\alpha_t\odot k_t$

例如 KDA 的 $(I-\beta_tk_tk_t^\top)D_tS_{t-1}+\beta_tk_tv_t^\top$ 可展开成上表形式。RWKV7 的独立擦除和写入方向需要拆成两个秩一子步骤;DeltaProduct 也按多个子步骤处理。因此数学表示可覆盖的架构范围大于本文实际验证质量与效率的 GDN/KDA 范围。(Appendix A,Table 4,PDF p. 13)

2.2 误差为何累积:传播项与新误差项

定义相对未量化状态轨迹的偏差:

$$ E_t=\operatorname{dequant}_b(\hat S_t)-S_t^{\mathrm{FP32}}, $$

并以 $\varepsilon_t$ 表示当前量化额外引入的误差。在固定层输入、两条轨迹使用相同更新系数的条件下,附录 Eq. (8) 等价于

$$ E_t= \underbrace{\bigl[\operatorname{Diag}(\alpha_t)-k_t\beta_t^\top\bigr]}_{A_t} E_{t-1}+\varepsilon_t. $$

这里 $A_t$ 是本笔记为解释而引入的简写。若 $E_0=0$,进一步展开得到

$$ E_t=\sum_{s=1}^{t}A_tA_{t-1}\cdots A_{s+1}\varepsilon_s. $$

每次舍入产生的误差都要经历后续的衰减和擦除,再通过 query 进入输出。逐 token 量化让每一步都可能出现新的 $\varepsilon_s$;按窗口量化让完整状态重新量化这一误差源只在边界出现。缓冲向量和算术本身仍有有限精度误差。

这个推导解释单层递归误差如何传播。完整模型中,上游激活与生成 token 也会因量化改变,不能把固定系数的递推直接当成端到端误差上界。论文主要依赖轨迹实验和任务实验验证实际质量。(Appendix B.1,PDF p. 14)

长轨迹中的状态误差

原文 Fig. 3,PDF p. 4。 横轴为 PG-19 上解码 token 数,最长 64K;纵轴为 Qwen3.5-9B 状态相对 FP32 的 MSE,标度为 $10^{-5}$。图例中 -w 表示每 16 个 token 量化一次,内嵌小图放大低误差曲线。正文报告,64K 位置 BF16-w 相对逐步 BF16 的误差下降约 100 倍,INT8-w 相对逐步 INT8 下降约 39 倍,LeapQuant 的误差进一步降低。量化频率减少 16 倍不意味着 MSE 必然只减少 16 倍:被逐步舍入丢弃的微小更新可能存在相关性。

教学例子。 在固定步长为 1 的最近整数舍入下,初值为 10,每步加 0.1:每步舍入会一直停在 10;累积 16 次后才舍入,则把 11.6 舍入到 12。相对精确结果,误差绝对值分别是 1.6 和 0.4。这个标量例子只说明延迟舍入如何保存小更新,不是论文的量化器配置或实验数据。

2.3 窗口化:每步输出,窗口末尾才写回密集状态

固定窗口起点 $\hat S_0$,保存 $(\alpha_i,k_i,u_i)$。定义累计对角衰减

$$ \Gamma_{a:b} =\operatorname{Diag}(\alpha_b)\cdots\operatorname{Diag}(\alpha_a), \qquad \Gamma_{a:b}=I\ \text{if }a>b. $$

把递归逐项展开,即原文 Eq. (4):

$$ S_\ell=\Gamma_{1:\ell}\hat S_0+ \sum_{j=1}^{\ell}\Gamma_{j+1:\ell}k_ju_j^\top, \qquad 1\leq\ell\leq p. $$

式中的量化状态参与运算时隐含反量化。到 $\ell=p$ 时重建 $S_p$,再形成下一窗口的低精度边界表示。

逐 token 量化与窗口量化

原文 Fig. 2,PDF p. 3。 左侧每个更新后都重新量化;右侧让起点状态保持不变,用高精度向量记录窗口内变化。图中 0.5%、2%、10% 等数字是机制示意,不能当成实测误差读数。

关键是无需为了生成每个输出都显式构造 $S_\ell$。由对角矩阵 $\Gamma^\top=\Gamma$,对任意读取向量 $x$ 有

$$ S_\ell^\top x =\hat S_0^\top\Gamma_{1:\ell}x+ \sum_{j=1}^{\ell}u_j\bigl(k_j^\top\Gamma_{j+1:\ell}x\bigr). $$

这就是附录 Eq. (9) 在窗口起点为 0 时的形式。取 $x=\beta_i$ 并读取第 $i-1$ 步,得到计算 $u_i$ 所需的旧状态投影;加入第 $i$ 条记录后,取 $x=q_i$ 得到输出。自回归生成仍然每步进行,窗口长度不会要求等待 16 个 token 才输出。

基础状态读出成本为 $O(d_kd_v)$,每条向量记录增加 $O(d_k+d_v)$,累计衰减可增量维护。窗口化减少密集状态的重建、量化和写回频率,每个 token 仍需读取基础状态及缓冲记录,不能把 $p=16$ 直接解释成总带宽成本下降 16 倍。(Sec. 3.2,PDF p. 4;Appendix B.2,PDF p. 14)

2.4 补偿 token:把大幅值结构变成几条高精度更新

窗口化后,一次量化仍可能因异常值而损失较多信息。Fig. 5(PDF p. 6)的横轴为保留的奇异方向数,纵轴为累计能量占比,展示中位数与四分位区间;少数方向已经捕获大部分能量。这一观察支持用较小的秩保护主导结构,因此作者拟合一个低秩分量:

$$ S_p=\tilde K\tilde U^\top+R_p,\qquad \tilde K\in\mathbb R^{d_k\times r},\quad \tilde U\in\mathbb R^{d_v\times r}. $$

残差定义为 $R_p=S_p-\tilde K\tilde U^\top$,所以分解本身在精确算术下是恒等式;近似来自残差量化和有限精度存储:

$$ \tilde S_p=\operatorname{dequant}_b(\hat R_p)+\tilde K\tilde U^\top, \qquad \hat R_p=\operatorname{quant}_b(R_p). $$

原文 Eq. (5) 先写出最小化 $\|S_p-ku^\top\|_F$ 的秩一拟合目标,Eq. (6) 推广到 $r$ 个外积。实现用幂迭代拟合,不能把这一目标式理解成每个窗口都执行完整、精确的 SVD。

补偿 token 与真实更新共享表示

原文 Fig. 4,PDF p. 5。 蓝色为低位残差,紫色为补偿向量对,灰色为真实 token 的更新记录;顶部柱形说明移走主导结构后行范数更平坦。图示省略了完整的时间衰减,实际计算遵循 Eq. (7)。

称之为“token”,是因为 $(\tilde k_h,\tilde u_h)$ 与真实更新 $k_ju_j^\top$ 都是秩一外积,可共用解码内核的向量记录路径。它们没有文本含义,不产生输出。补偿记录被放在新窗口真实记录之前,自身加入时采用恒等衰减,随后与窗口起点状态一起经历真实 token 的衰减。

窗口结束时,旧补偿项与真实更新共同参与重建;旧补偿项随后被替换为新拟合项。保存的补偿向量数始终是 $r$,不会随上下文累积。默认 $r=4$、因子为 FP16;4 位实验改用 $r=8$。(Sec. 3.3,PDF pp. 5–6;Sec. 4.1,PDF p. 7)

2.5 残差平滑:只改变残差坐标

对残差 $R_0$,每个 key 行的尺度 $c_a$ 取该行平均绝对值的平方根,并设置正数下限:

$$ c_a\approx\sqrt{\frac{1}{d_v}\sum_{j=1}^{d_v}|(R_0)_{aj}|}, \qquad C=\operatorname{Diag}(c). $$

上式的近似号仅省略下限处理;论文未给出该下限的具体常数。量化 $C^{-1}R_0$,读出时乘回 $C$。$C$ 在一个窗口内固定,在下一个边界根据新残差重算。原文 Eq. (7) 为

$$ \hat R_0^C=\operatorname{quant}_b(C^{-1}R_0), $$
$$ S_p=\Gamma_{1:p} \left[C\,\operatorname{dequant}_b(\hat R_0^C)+\tilde K\tilde U^\top\right] +\sum_{j=1}^{p}\Gamma_{j+1:p}k_ju_j^\top. $$

低秩补偿和平滑对状态分布的影响

原文 Fig. 6,PDF p. 6。 三幅图依次是原状态、移去补偿项后的残差、平滑后的残差;底面为 key/value 通道,竖轴为幅值相对中位数的比值。示例取 Qwen3.5-9B 第 13 层第 16 头、8K 上下文,最大值从 176 倍降至 47 倍,再到 5.3 倍。前两幅用原状态的中位数归一化,第三幅使用平滑后残差的中位数;这是分布形状变化,不能直接当成同尺度的绝对误差下降倍数。

附录 B.3 明确了 8 位残差采用按 value 通道的对称 INT8 量化。设 $Z_0$ 为整数载荷,$B$ 为 value 侧对角尺度:

$$ \operatorname{dequant}_8(\hat R_0^C)=(Z_0/127)B, \qquad [C\operatorname{dequant}_8(\hat R_0^C)]^\top\Gamma x =B(Z_0^\top/127)C\Gamma x. $$

$C$ 作用于 key 坐标,$B$ 作用于 value 投影。这些尺度只用于量化残差,不能再乘到已在原始坐标中的补偿项或真实更新上。

完整读出式为原文 Eq. (10):

$$ \begin{aligned} S_\ell^\top x={}& \operatorname{dequant}_b(\hat R_0^C)^\top C\Gamma_{1:\ell}x\\ &+\tilde U\bigl(\tilde K^\top\Gamma_{1:\ell}x\bigr)\\ &+\sum_{j=1}^{\ell}u_j\bigl(k_j^\top\Gamma_{j+1:\ell}x\bigr). \end{aligned} $$

三项分别是“量化残差”“补偿项”“窗口内真实更新”的投影,解释了为何三种机制可以在一个状态读取路径中组合。(Sec. 3.4,PDF p. 6;Appendix B.3,PDF pp. 14–15)

2.6 一次窗口的执行过程

下面是基于上述公式整理的教学伪代码,Read 使用 Eq. (10),不代表作者代码接口:

持久表示:量化残差 Rhat、残差尺度 C/B、补偿因子 Ktilde/Utilde
当前窗口:真实更新列表 records

对每个新 token i:
    u_i = v_i - Read(当前表示, records, beta_i)
    records.append(alpha_i, k_i, u_i)
    o_i = Read(当前表示, records, q_i)
    若记录数达到 p:
        S = Reconstruct(当前表示, records)
        Ktilde, Utilde = PowerIterationFit(S, rank=r)
        R = S - Ktilde @ Utilde.T
        重新计算行平滑尺度 C 与量化尺度 B
        Rhat = Quantize(C^{-1} @ R)
        清空 records
    输出 o_i

其本质是修改推理状态的保存和读取方式。模型无需重训,也无需校准数据;窗口边界仍要付出低秩拟合、尺度更新和量化的运行时成本。

三:实验——质量、内核与服务吞吐分别比较

3.1 模型与推理设置

模型线性注意力本文使用范围
Qwen3.5-9BGDN完整模型质量与效率
Qwen3.5-35B-A3BGDN完整模型质量与效率
Kimi-Linear-48B-A3B-InstructKDA完整模型质量与效率
Qwen3.8-FlashGDN8 层版本,仅测效率
GLM-5.3-FlashKDA8 层版本,仅测效率

两种 8 层版本保留单层解码成本,但不保留完整模型输出,不能据其吞吐推断完整模型的质量。实现集成于 vLLM,解码内核使用 TileLang。默认 $p=16$,8/6 位用 $r=4$,4 位用 $r=8$;补偿向量与更新缓冲采用 FP16,平滑尺度为 FP32。其他组件沿用基线精度。(Sec. 4.1,PDF pp. 6–7)

3.2 任务、指标和生成协议

主要质量表使用 AIME 2026、GPQA-Diamond、LiveCodeBench v6、MMLU-Pro。表头中的 MMLU 实际指 MMLU-Pro;LCB 指 LiveCodeBench。附录 Table 5 增加 GSM8K。分数单位均为百分比,越高越好;作者报告三个随机种子的平均结果。Table 1 的 Avg. 是三个模型、四个任务共 12 个分数的平均,不包含 GSM8K。

两个 Qwen 模型开启 thinking:temperature 1.0、top-p 0.95、top-k 20、presence penalty 1.5,最大输出 81,920 tokens。Kimi 是无 thinking 模式的指令模型:temperature 1.0、top-p 1.0、presence penalty 0,最大输出 65,536 tokens。每个模型的所有方法使用相同提示与采样设置,最大模型长度设为输出上限加 8,192。(Appendix E,Table 6,PDF p. 16)

3.3 对照方法与效率口径

质量对照包括 FP32/BF16 状态,逐步 FP8/INT8,以及适配的 KVQuant、QuaRot、TurboQuant;6/4 位组还包括 NVFP、MXFP、按通道 INT 等格式。原文选择较好的直接量化格式进入主表,附录保留全部结果。质量主表中的量化基线每个 token 都重新量化,因此它比较的是完整方法组合;窗口、补偿与平滑各自的贡献要看消融。

效率实验比较对象与配置指标
单层内核FLA FP32 状态内核;32 heads,$d_k=d_v=128$token/s,及相对基线倍数
纯解码vLLM FP32 状态,开启 CUDA graphs,默认 4K 上下文整个模型的 decode throughput
内存每 1K 缓存 token 保存状态检查点状态字节数、端到端显存减少比例
离线端到端GSM8K、MMLU-Pro、GPQA 工作负载output token/s,包含并发容量收益

内核实验覆盖 B200、RTX PRO 6000、RTX 5090;图示端到端结果使用 B200 和 RTX PRO 6000。Kimi 的端到端吞吐采用 Qwen3.5-9B 的长度分布模拟生产 KDA 工作负载,需与其自然较短输出的质量评测区分。(Sec. 4.3,PDF pp. 8–9)

四:结果——8 位接近基线,收益取决于状态所占成本

4.1 8 位质量:保留长推理比保留简单任务更困难

状态方法12 组平均分(%)相对 FP32(百分点)
FP3275.50.0
BF16 逐步68.7−6.8
LeapQuant 8 位75.50.0
FP8 逐步34.2−41.3
INT8 逐步26.3−49.2
KVQuant 8 位适配67.0−8.5
QuaRot 8 位适配50.1−25.4
TurboQuant 8 位适配49.6−25.9

来源:Table 1,PDF p. 7;百分点按表中一位小数相减。

最能体现问题的是 Qwen3.5-9B:AIME 从 FP32 的 87.9% 降到 BF16 的 72.1%、逐步 FP8 的 14.6%、逐步 INT8 的 7.1%;LeapQuant 8 位保持 87.9%。其 LCB 同样恢复到 FP32 的 64.1%。这说明减少误差累积可以比单纯增加存储位数更有效。

平均相同不代表每格相等。三个模型的 8 位 LeapQuant 与 FP32 单项差值介于 −0.8 至 +0.8 个百分点,支持接近无损的描述;没有方差或区间可供判断这些小差别的显著性。Kimi 生成较短,作者认为它对逐步量化相对不敏感,但其 BF16 MMLU-Pro 仍从 72.4% 降到 64.0%。

附录增加的 GSM8K 分别为:FP32 96.1 / 96.7 / 92.1,8 位 LeapQuant 96.3 / 96.5 / 92.0(顺序为 Qwen9B、Qwen35B、Kimi)。较简单数学任务的表现较稳定;只看 GSM8K 会低估长推理和代码生成的量化风险。(Table 5,PDF p. 15)

4.2 更低位宽:6 位有损,4 位存在明显模型差异

位宽LeapQuant 平均分(%)同组较强对照对照平均分(%)
875.5KVQuant67.0
672.4TurboQuant / NVFP631.9 / 29.6
460.4TurboQuant / MXFP422.9 / 9.7

来源:Table 1,PDF p. 7。6 位相对 FP32 的平均差为 −3.1 个百分点,4 位为 −15.1 个百分点。4 位配置同时把补偿数从 4 增至 8。

4 位 Kimi 的四项分数为 67.9 / 69.2 / 40.5 / 73.4,与 FP32 的 67.5 / 70.3 / 41.4 / 72.4 相差不超过 1.1 个百分点。相比之下,Qwen3.5-35B-A3B 的 AIME 从 91.5% 降至 59.2%,LCB 从 75.6% 降至 37.4%。因此,4 位依然明显优于对照,但接近无损的主要证据来自 8 位。

4.3 单层内核:大 batch 下压缩带宽很有效

单层内核吞吐

原文 Fig. 7,PDF p. 8。 六个面板分别展示 GDN/KDA 与三种 GPU 的组合;横轴是 batch size,纵轴是百万 token/s,柱上数字为相对 FP32 的吞吐倍数。

GPU,batch 512GDN 加速KDA 加速
NVIDIA B2002.68×2.41×
RTX PRO 60003.95×3.38×
RTX 50904.25×3.64×

配置为单层、32 heads、$128\times128$ 状态。更高并发增大了状态流量占比;作者据此解释为什么消费级/工作站 GPU 的收益更大。摘要的 2.05–3.70× 是概括性的平均范围,上表是明确 batch 下的结果,两者统计口径不同。

4.4 整个模型解码:未优化部分稀释了内核收益

模型纯解码吞吐

原文 Fig. 8,PDF p. 8。 每列对应一个模型,上排 B200,下排 RTX PRO 6000;横轴为 batch,纵轴为千 token/s。默认上下文 4K。

在 B200、batch 512 下,五个模型按 Qwen9B、Qwen35B、Kimi、GLM-Flash、Qwen-Flash 顺序,收益为 1.23 / 1.24 / 1.22 / 1.37 / 1.33×。后两个为 8 层效率模型。RTX PRO 6000 在可容纳的最大 batch 下为 1.27 / 1.41 / 1.22 / 1.42 / 1.57×。

该图有一个影响横向比较的例外:RTX PRO 6000 上三个完整模型最大 batch 为 256,Qwen35B 此时上下文改为 2K;两个 8 层模型可测到 batch 512。小 batch 收益较弱,例如 B200 上 Qwen35B 的 batch 32 为 1.00×。整模吞吐还受权重计算、MoE、其他注意力层等成本约束,不能由单层 4 倍收益直接推算。

4.5 状态内存:8 位残差不等于每元素只占 1 字节

原文报告窗口边界表示为 1.19 字节/元素。按 $d_k=d_v=128,r=4$,可以做如下表示尺寸推算:

$$ \underbrace{1}_{\mathrm{INT8\ residual}} +\underbrace{\frac{2r(d_k+d_v)}{d_kd_v}}_{\mathrm{FP16\ compensators}} +\underbrace{\frac{4(d_k+d_v)}{d_kd_v}}_{\mathrm{row/value\ scales}} =1+0.125+0.0625=1.1875. $$

这与约 1.19 字节一致;$4/1.1875\approx3.37$,即约 3.4 倍的边界状态压缩。尺寸推算对应向量尺度按 FP32 计的表示账本,不是独立的显存测量。还要另外计算活跃请求的更新缓冲,不能把 3.4 倍套到整个模型或每步所有内存流量。

正文给出 $p=16$ 时每头每层约 8 KiB 的 FP16 更新缓冲。结合 Table 4 的显式记录数,GDN 的 $16(1+128+128)\times2=8,224$ 字节约为 8 KiB;KDA 若显式保存每个通道的衰减,则 $16(128+128+128)\times2=12,288$ 字节,即 12 KiB。这是按附录记录格式的推算,说明缓冲大小依赖架构;正文的约 8 KiB 不应无条件应用到所有记录形式。

按每 1K 缓存 token 一个检查点的设置,作者报告端到端显存分别减少 41% / 51% / 56%(Qwen9B / Qwen35B / Kimi),Qwen9B 在一张 B200 上最多可容纳约 1.4 倍并发请求。检查点越多,压缩边界表示的价值越明显。(Sec. 4.3,PDF pp. 8–9;Appendix A/B.3,PDF pp. 13–14)

4.6 端到端推理:同时受益于更快解码与更高并发

端到端输出吞吐

原文 Fig. 9,PDF p. 9。 六幅图为三个完整模型在两种 GPU 上的离线推理;横轴依次是 GSM8K、MMLU-Pro、GPQA,纵轴为千输出 token/s,柱上为吞吐倍数。

模型B200:GSM / MMLU / GPQARTX PRO 6000:GSM / MMLU / GPQA
Qwen3.5-9B1.23 / 1.30 / 1.44×1.40 / 1.38 / 1.31×
Qwen3.5-35B-A3B1.43 / 1.60 / 1.58×1.65 / 1.59 / 1.41×
Kimi-Linear-48B-A3B1.54 / 1.60 / 1.47×1.48 / 1.51 / 1.49×

总体范围为 B200 1.23–1.60×、RTX PRO 6000 1.31–1.65×。图中 18 个四舍五入倍数的算术平均约 1.47,与作者的总体描述一致。这是输出吞吐,而非单请求延迟或首 token 延迟。Kimi 使用 Qwen9B 长度分布这一条件也适用于这里的全部 Kimi 数字。

4.7 消融:窗口化贡献最大,补偿和平滑收回剩余质量

Qwen3.5-9B 状态方案AIME(%)LCB(%)内核加速
FP32 逐步87.964.11.00×
BF16 逐步72.149.61.64×
BF16 + 窗口87.862.91.71×
INT8 逐步7.19.22.43×
INT8 + 窗口82.460.62.64×
再加补偿 token86.661.52.56×
再加平滑,即完整方法87.964.12.52×

来源:Table 2,PDF p. 9;内核在 batch 256 相对 FP32 比较。

窗口化把 INT8 的 AIME 提高 75.3 个百分点,是最大的单步改进。补偿和平滑再分别补回 4.2、1.3 个百分点。完整方法的内核速度略低于只有窗口的 INT8,但换回了基线质量。BF16 的窗口化结果也表明,时间上的误差注入频率是独立于 8 位格式选择的重要因素。

固定 $r=4$,窗口 $p$AIME / LCB(%)内核加速
486.2 / 62.81.59×
887.1 / 63.22.13×
1687.9 / 64.12.52×
3287.9 / 64.22.20×
固定 $p=16$,补偿数 $r$AIME / LCB(%)内核加速
285.7 / 63.42.57×
487.9 / 64.12.52×
888.1 / 64.02.37×
1687.9 / 62.80.74×

来源:Table 3,PDF p. 9。

增大 $p$ 可减少边界处理,却扩大每步读取的缓冲、占用更多共享内存,$p=32$ 因此比 16 慢。增大 $r$ 提高低秩容量,但拟合与重建成本最终会暴露出来,$r=16$ 甚至慢于 FP32。默认 $(p,r)=(16,4)$ 是本文测得的质量与速度折中,并非两个参数越大越好。

4.8 长上下文:混合架构决定收益会不会被稀释

附录 Fig. 10 在 B200 上补充 1K、2K、4K、8K 上下文和多个 batch。该图是堆叠柱:浅色为 FP32 吞吐、深色为 LeapQuant 增量,完整柱高才是新吞吐。混合稠密全注意力的模型随上下文增大,未优化的全注意力占比上升;Kimi 在 8K、batch 512 下仍有 1.18× 解码加速。

稀疏混合模型的长上下文效率

原文 Fig. 11,PDF p. 16。 B200、batch 256;左图 GLM-5.3-Flash 最长 128K,右图 Qwen3.8-Flash 最长 96K,均为 8 层效率版本。GLM 从 4K 的 1.25× 到 128K 的 1.23×;Qwen 从 4K 的 1.23× 到 96K 的 1.20×。线性注意力与稀疏注意力组合时,长上下文对相对收益的稀释较小。这组实验测量的是速度,未测量这些长度下的任务准确率。

五:结论——量化递归记忆,需要同时设计时间和表示

LeapQuant 最值得借鉴的思想是把何时量化纳入状态表示设计。递归更新经常比旧状态小,把每次微小变化都立即舍入会持续损失信息;用向量记录保留近期变化,再在窗口边界处理密集状态,可以同时改善精度和数据搬运。补偿 token 则让低秩保护和真实更新共享计算形式,使质量修复能够以较低的额外内核开销实现。

本论文最充分的实证结论是:在所测 GDN/KDA 完整模型中,8 位残差、少量 FP16 补偿项和窗口更新组合,保留了接近 FP32 的质量,并在大 batch 与前缀缓存较重的负载中产生吞吐收益。4 位有明显的模型和任务差异;小 batch、全注意力占比大的负载、过大的补偿秩也会削弱收益。

进一步研究可以沿两个具体问题展开:一是按层、按头或按轨迹动态选择 $p,r$,只在需要时多付出精度成本;二是在相同窗口机制下比较不同残差量化器和补偿拟合策略,区分表示选择与量化时机的贡献。这里是基于本文消融的研究推论,尚无本文实验结果。

图件均来自 Yi Pan 等人的 arXiv:2609.38166v1 作者源码,与原文对应图核对;原论文采用 CC BY 4.0 许可。除明确标出的教学例子、尺寸推算和研究推论外,实验数字均引用该版本原文。