跳到主要内容
起居室老虎
返回

Looped Transformer的量化:误差传播、NVFP4 与差分调制

7,714 字约 27 分钟

循环语言模型(Looped Language Models,或者叫 Recurrent Depth 模型)最近很火。像 Huginn-012511、Parcae22 和 IFM33 这类工作,主体结构都是把中间的一组核心层(core)拿出来反复迭代 RR 次:输入先经过浅层的 prelude 编码,送进共享权重的 core 循环跑上十几到几十步,最后由 coda 层解码输出。

这种结构在做量化或者算子加速的时候特点很明显。以 Parcae-1.3B 为例,它中间循环的 core 参数量只占整个模型的 16.9%16.9\%,但在循环次数 r=8r=8 和 r=16r=16 时,core 里面的 Linear 层分别占到了全部线性层加 LM head 权重相关 FLOPs 的 78.2%78.2\% 和 87.8%87.8\%44。Huginn-0125(3.5B)的 core 由一个 adapter 加 4 个循环层组成,一共 17 个 Linear 层,默认推理要循环访问 R=32R=32 次。所以从计算占比来看,只要把 core 里这十几个共享 Linear 层量化好,就能覆盖掉绝大部分的矩阵乘开销。

Looped Model 在套用传统量化方法时遇到了新的问题。普通前馈模型里每一层有各自独立的参数矩阵,而在循环模型里,模型在 k=1,…,Rk=1, \dots, R 的每一步读取的都是同一份核心权重,如果直接用静态量化(比如舍入 Roud To Near, RTN),相当于在连续 RR 次迭代里每一步都往循环里反复注入完全相同的权重误差矩阵。

从 SNN 的 IF Neuron 等收到启发,下文尝试了 IFneuron,或者说一阶 Σ-Δ\Sigma\text{-}\Delta 在 PTQ、QAT、W4A4 部署和硬件微基准上的实验结果。总体上来讲,在循环步上做权重 Σ-Δ\Sigma\text{-}\Delta 在冻结权重的 W4A16 前向推理里确实能把输出失真压下去不少;但在 QAT 里,它在主权重上并没有稳定比过相同设置下的随机舍入(SR);在 W4A4 评测里,表现最好的组合并不包含权重 Σ-Δ\Sigma\text{-}\Delta;同时在核心线性层的微基准测速中,在线生成量化码也没有拿到端到端的速度收益。

0. 循环模型里的误差传播与 NVFP4 精度分工

0.1. 误差传播

先看循环模型前向传播的形式。记输入经过 prelude 之后的初始隐状态为 h0=I(e)h_0 = I(e),在接下来的 RR 次循环访问中,每一步迭代调用同一个映射 FF,最后经过 coda 层 GG 得到输出分布:

h0=I(e),hk=F(hk−1,e;Wk),k=1,…,R,p=softmax(G(hR)).h_0 = I(e), \qquad h_k = F(h_{k-1}, e; W_k), \quad k = 1, \dots, R, \qquad p = \mathrm{softmax}\big(G(h_R)\big).

在全精度模型里,每一步访问的都是同一份精确权重 Wk≡W∗W_k \equiv W^\ast。考虑把核心层量化,设第 kk 次访问实际使用的量化权重为 Wˆk=W∗+Ek\widehat W_k = W^\ast + E_k,其中 EkE_k 是第 kk 步的权重量化误差(这里把每一步的权重写成可以随步数 kk 变化的 WkW_k,方便后面同时分析静态量化和每步换码的动态方案)。

把第 kk 步隐状态偏离全精度轨迹的一阶扰动记作 δhk\delta h_k,在高精度轨迹 (hk−1,W∗)(h_{k-1}, W^\ast) 附近做一阶展开,可以得到单步的误差递推:

δhk≃Jkδhk−1+CkEk,Jk=∂F∂h|(hk−1,W∗),Ck=∂F∂W|(hk−1,W∗).\delta h_k \simeq J_k\, \delta h_{k-1} + C_k E_k, \qquad J_k = \frac{\partial F}{\partial h}\Big|_{(h_{k-1},\, W^\ast)}, \qquad C_k = \frac{\partial F}{\partial W}\Big|_{(h_{k-1},\, W^\ast)} .

其中 JkJ_k 是第 kk 步循环块对隐状态 hh 的雅可比矩阵,CkC_k 是对权重的局部雅可比。由于初始状态 h0h_0 不受 core 权重量化的影响(δh0=0\delta h_0 = 0),把这个递推从第 1 步展开到第 RR 步,中间每一步的误差累积过程就是:

δh1≃C1E1,δh2≃J2C1E1+C2E2,  ⋮δhR≃∑k=1RJRJR−1⋯Jk+1CkEk,\begin{aligned} \delta h_1 &\simeq C_1 E_1, \\ \delta h_2 &\simeq J_2 C_1 E_1 + C_2 E_2, \\ &\ \ \vdots \\ \delta h_R &\simeq \sum_{k=1}^{R} J_R J_{R-1} \cdots J_{k+1}\, C_k E_k , \end{aligned}

再把最后一步隐状态的扰动 δhR\delta h_R 投影到最终的损失 ℓ\ell 上,总的一阶 loss 偏差可以写成各步权重误差与敏感度的内积和:

δℓ≃∑k=1R⟨Bk,Ek⟩,Bk=Ck⊤Jk+1⊤⋯JR⊤∂ℓ∂hR.\delta \ell \simeq \sum_{k=1}^{R} \langle B_k, E_k \rangle, \qquad B_k = C_k^\top J_{k+1}^\top \cdots J_R^\top\, \frac{\partial \ell}{\partial h_R} .

BkB_k 是把共享权重在时间上解绑之后,第 kk 次访问对最终 loss 的敏感度,里面已经包含了从第 k+1k+1 步到第 RR 步的下游传播 JR⋯Jk+1J_R \cdots J_{k+1}。为了分析这 RR 次访问里到底有几步在起主要作用,可以用参与率的形式定义一个有效访问深度 ReffR_{\mathrm{eff}}:

Reff=(∑k=1R‖Bk‖F2)2∑k=1R‖Bk‖F4.R_{\mathrm{eff}} = \frac{\big(\sum_{k=1}^R \|B_k\|_F^2\big)^2}{\sum_{k=1}^R \|B_k\|_F^4} .

需要注意的是,循环里的误差传播并不一定会随步数按指数级放大,具体表现为收缩还是振荡,取决于各步雅可比 JkJ_k 的谱特征。在 Huginn-0125(R=32R=32)上实测局部敏感度分布,算出来的有效访问次数 ReffR_{\mathrm{eff}} 大约只有 6.16.1,其中最后 3 次访问就占了全部敏感度平方和 ∑k=1R‖Bk‖F2\sum_{k=1}^R \|B_k\|_F^2 的 63%63\%。这说明起码在 Huginn 上,前面几十步注入的扰动在往后传的过程中很大一部分已经衰减掉了,最终输出对最后几步的权重误差最为敏感。

同一共享核心被反复访问。下半图为通用NVFP4计算的精度分工示意;本文本地训练实验仅对权重做假量化,激活与实际GEMM仍是BF16,不能把示意当成已实现的原生训练路径。

0.2. NVFP4 的精度分工

在具体讨论怎么压低这个误差之前,先明确一下我们关注的低比特格式 NVFP4 以及它在训练中的精度分工(见图 1)。

NVFP4 采用 4-bit 的 E2M1 浮点表示(1 位符号、2 位指数、1 位尾数),它在正半轴上的 8 个离散格点为:

𝒞+={0, 0.5, 1, 1.5, 2, 3, 4, 6},\mathcal{C}_+ = \{0,\ 0.5,\ 1,\ 1.5,\ 2,\ 3,\ 4,\ 6\},

加上正负号一共 16 个编码,由于 ±0\pm 0 重合,实际对应 15 个不同的数值。因为 E2M1 本身的数值范围很小,NVFP4 使用两级缩放:每 16 个连续元素组成一个块(block),配一个 FP8(E4M3)格式的块尺度 sblocks_{\text{block}},整个张量再乘一个 FP32 的全局尺度 stensors_{\text{tensor}}:

Wˆ=stensor⋅sblock⋅q,q∈±𝒞+.\widehat W = s_{\text{tensor}} \cdot s_{\text{block}} \cdot q, \qquad q \in \pm\mathcal{C}_+ .

由于 𝒞+\mathcal{C}_+ 的格点是非均匀的(00 到 22 之间步长为 0.50.5,22 到 44 步长为 11,而 44 到 66 步长直接跳到了 22),定块尺度的时候可以用 Four Over Six(4/6 自适应块尺度)55:对每个 16 元素块,分别尝试把块内绝对值最大值向上取整映射到 66 或映射到 44 两个候选块尺度,直接按 RTN 重建均方误差(MSE)在这两个候选尺度中选误差更小的那个。其中映射到 44 相当于增大了块尺度(让归一化后的块内元素落在 [−4,4][-4, 4] 内,避开 44 到 66 之间步长为 22 的粗格点区间,同时在码本上端留出到 66 的余量)。

在训练场景下,按照 NVIDIA 给出的 NVFP4 预训练方案66,不同张量的精度分工是固定的:只有 GEMM 的两个输入操作数被量化到 FP4,GEMM 的累加输出保持 BF16 或 FP32;对精度敏感的算子或层保留高精度;主权重(master weights)、累加的权重梯度以及优化器状态都留在 FP32。

后文我们在 Parcae-140M 上做的本地继续训练实验,同样保留了 FP32 的主权重与优化器状态、用 BF16 作为计算视图,但为了隔离观察共享权重量化本身的影响,只对 core 里面的 13 个 Linear 层权重做了伪量化,非 core 权重和 bias 不量化,激活、反向传播以及实际的 GEMM 算子仍然保持高精度(norm、rotary、loss 和尾段阻尼累加可用 FP32)。

1. 相关工作

针对循环语言模型的低比特量化,最近已经有几篇工作从不同角度给出了方案。

一类做法是把常规 LLM 的 PTQ 方法(旋转变换、缩放与 GPTQ)适配到循环结构上。Loopy77 在共享核心上使用跨步共享的旋转与缩放变换,在挑量化参数时直接对齐目标深度下的 NLL,并配合渐进式的全深度评估。LoopQ88 做了 loop-aware 的通道缩放、可折叠进权重的特定变换以及沿循环轨迹的激活校准(trajectory calibration),并在每个循环步上施加独立的低秩跨步修正项(CTA)和偏置。更早一些,Hyperloop Transformers99和 Nux Li1010 讨论过如何汇总所有访问步的统计量来构造跨步 GPTQ Hessian,并分析了循环模型里的反馈暴露(feedback exposure)与校准盲区(calibration blindness)——只按单步局部误差做校准,放到多步闭环里误差会逐步偏离校准分布。

另一类做法是从步间残差入手。ResidualQuant1111 主体是做循环 Transformer 的 2-bit KV Cache 残差量化,不过它把思路扩展到了激活预测残差编码,也就是利用相邻循环步激活相近的特点,只对前后两步的激活差值做量化。这其实就是信号处理里的差分脉冲编码调制(DPCM),后文我们在 W4A4 部署里用的激活跨步差分就直接对应这个思路。

把 Σ-Δ\Sigma\text{-}\Delta 调制 用到神经网络权重上同样有先例。Frame Quantization1212 在冗余框架表示下分析过神经网络的 Σ-Δ\Sigma\text{-}\Delta 量化;SDQ-LLM1313 则把 Σ-Δ\Sigma\text{-}\Delta 用在大模型的 1-bit / 三值权重量化上。因为普通前馈模型每层权重只算一次,SDQ-LLM 必须靠显式的空间过采样(spatial oversampling)来造出序列维度;而在循环模型里,同一份权重本来就要沿着迭代深度 k=1,…,Rk=1,\dots,R 被连续访问 RR 次,直接顺着循环步做时间维度的 Σ-Δ\Sigma\text{-}\Delta 是一个很自然的想法。在低比特训练方向上,除了 NVFP4 预训练方案66与 4/6 块尺度55之外,Quartet II1414 探索了用局部无偏梯度估计来改进 NVFP4 训练,然而局部算子的无偏估计放进多步非线性循环复合之后,并不保证全局的训练梯度也是无偏的。

2. 循环步上的 Σ-Δ 调制与尾段阻尼

2.1. 一阶 Σ-Δ

既然静态 RTN 在循环模型里的主要问题是每一步都重复注入同一个误差 Ek≡EE_k \equiv E,一个直接的改进思路是在每次访问时换用不同的量化码,让多步之间的误差互相抵消。随机舍入(SR)靠随机采样让单步条件期望等于原权重;一阶 Σ-Δ\Sigma\text{-}\Delta 调制 则是通过确定性的误差反馈来实现抵消——把第 k−1k-1 步量化剩下的余差(residue)rk−1r_{k-1} 存下来,加到第 kk 步的输入上再做最近舍入。

固定量化尺度 ss,从零初始余差 r0=0r_0 = 0 开始,在每次访问 k=1,…,Rk = 1, \dots, R 上执行递推:

r0=0,vk=W∗+rk−1,Wˆk=Qs(vk),rk=vk−Wˆk.r_0 = 0, \qquad v_k = W^\ast + r_{k-1}, \qquad \widehat W_k = Q_s(v_k), \qquad r_k = v_k - \widehat W_k .

把单步量化误差 Ek=Wˆk−W∗E_k = \widehat W_k - W^\ast 用 vkv_k 和 rkr_k 代换,可以直接写成相邻两步余差的差分:

Ek=Wˆk−W∗=Wˆk−vk+rk−1=rk−1−rk.E_k = \widehat W_k - W^\ast = \widehat W_k - v_k + r_{k-1} = r_{k-1} - r_k .

对前 mm 次访问的误差求和,中间项全部裂项相消:

∑k=1mEk=(r0−r1)+(r1−r2)+⋯+(rm−1−rm)=−rm,1m∑k=1mWˆk−W∗=−rmm.\begin{aligned} \sum_{k=1}^{m} E_k &= (r_0 - r_1) + (r_1 - r_2) + \dots + (r_{m-1} - r_m) = -r_m , \\ \frac{1}{m}\sum_{k=1}^{m} \widehat W_k - W^\ast &= -\frac{r_m}{m} . \end{aligned}

只要余差 rmr_m 有界,前 mm 步量化权重的平均偏差就会按 1/m1/m 衰减。拿均匀整数格点(间隔为 11,⌊v+1/2⌋\lfloor v + 1/2 \rfloor 舍入)上的标量 x=0.3x = 0.3 举例:静态 RTN 每一步都取 00,单步误差固定为 −0.3-0.3,累积误差随步数线性发散;而一阶 Σ-Δ\Sigma\text{-}\Delta 前 8 步的递推数值如下表所示:

访问 kk12345678
vkv_k0.30.6−0.10.20.5−0.20.10.4
qkq_k01001000
rkr_k0.3−0.4−0.10.2−0.5−0.20.10.4
qk−xq_k - x−0.3+0.7−0.3−0.3+0.7−0.3−0.3−0.3

通过每隔几步跳出一个 11,前缀累积误差始终等于 −rk-r_k,被限制在 [−0.5,0.5][-0.5, 0.5] 之间(图 2)。

均匀整数格点上的精确标量玩具:x=0.3,half-up舍入,量化间隔1。SD累计误差等于负余差;这是码序列性质,不是语言模型的loss结论。

2.2. 非均匀 NVFP4 码本上的保守余差界

因为 NVFP4 的格点是不等距的,不能直接把均匀量化的 Δ/2\Delta/2 套上去。不过对于当前从零余差出发的递推实现(无 phase、无 pin,同一条链内尺度固定),在理想算术下仍然可以证明一个保守的权重表示误差界。

一般地,令有限一维码本为 𝒞={c0<⋯<cN}\mathcal{C} = \{c_0 < \cdots < c_N\},记端点 a=c0=min⁡𝒞a = c_0 = \min\mathcal{C}、b=cN=max⁡𝒞b = c_N = \max\mathcal{C},最大相邻格距为 d=maxi⁡(ci+1−ci)d = \max_i(c_{i+1} - c_i)。固定输入 x∈[a,b]x \in [a, b](输入必须落在真实码本的凸包 [a,b][a, b] 内,不能扩到任意外部区间,否则如 𝒞={0,1}\mathcal{C}=\{0,1\}、取 x=2x=2 时余差会发散),取区间外饱和到端点的最近舍入量化器 QQ,按 r0=0,vk=x+rk−1,qk=Q(vk),rk=vk−qkr_0=0, v_k=x+r_{k-1}, q_k=Q(v_k), r_k=v_k-q_k 递推,则对每个 kk 都有 |rk|≤d/2|r_k| \le d/2:

  1. 初值 r0=0r_0 = 0 满足界;假设 |rk−1|≤d/2|r_{k-1}| \le d/2。
  2. 因 x∈[a,b]x \in [a, b],有 vk∈[a−d/2, b+d/2]v_k \in [a - d/2,\ b + d/2]。
  3. 若 vk∈[a,b]v_k \in [a, b],由最大相邻格距定义和最近舍入直接给出 |vk−Q(vk)|≤d/2|v_k - Q(v_k)| \le d/2。
  4. 若 vk>bv_k > b,量化器饱和到 Q(vk)=bQ(v_k) = b,故 0<rk=x+rk−1−b≤d/20 < r_k = x + r_{k-1} - b \le d/2;vk<av_k < a 时对称得到 −d/2≤rk<0-d/2 \le r_k < 0。
  5. 归纳即得 |rk|≤d/2|r_k| \le d/2;结合裂项式 ∑k=1m(qk−x)=−rm\sum_{k=1}^m (q_k - x) = -r_m,前 mm 步的平均误差不超过 d/(2m)d/(2m)。

应用到有符号 E2M1 码本上:它的实际数值端点是 [−6,6][-6, 6],最大相邻格距为 d=2d = 2。4/6 块缩放在默认全局尺度 stensor=max⁡|W|/(6⋅256)s_{\text{tensor}} = \max|W|/(6\cdot 256) 下,候选 E4M3 块尺度向上取整后不管是映射到 66 还是映射到 44,都保证归一化权重 |x|≤6|x| \le 6。因此即便反馈输入 vkv_k 临时达到 [−7,7][-7, 7],端点饱和仍然保证归一化余差 |rk|≤1|r_k| \le 1。设 s=stensorsblocks = s_{\text{tensor}} s_{\text{block}} 为该块的实际解码总尺度,在权重单位上就有:

|rk(W)|≤s,|1m∑k=1mwˆk−w|≤sm.|r_k^{(W)}| \le s, \qquad \left|\frac{1}{m}\sum_{k=1}^{m} \widehat w_k - w\right| \le \frac{s}{m} .

这是逐元素、逐块尺度下的保守界(不同块的 ss 不能当成同一个常数),它只约束权重的平均表示误差,并不能由此推出非线性网络的最终 loss 也按 1/m1/m 下降;同时该证明针对的是递推 F4,不覆盖后文微基准测试中使用的两点闭式差分实现 F4b。

2.3. 分部求和与逆序尾段

把 Ek=rk−1−rkE_k = r_{k-1} - r_k 代入前面的一阶 loss 扰动式 δℓ≃∑k=1R⟨Bk,Ek⟩\delta\ell \simeq \sum_{k=1}^R \langle B_k, E_k \rangle,利用 r0=0r_0 = 0 做分部求和(阿贝尔变换),可以得到:

δℓ≃∑k=1R⟨Bk,rk−1⟩−∑k=1R⟨Bk,rk⟩=(⟨B1,r0⟩+∑k=1R−1⟨Bk+1,rk⟩)−(∑k=1R−1⟨Bk,rk⟩+⟨BR,rR⟩)=∑k=1R−1⟨Bk+1−Bk, rk⟩−⟨BR, rR⟩.\begin{aligned} \delta\ell &\simeq \sum_{k=1}^{R} \langle B_k, r_{k-1} \rangle - \sum_{k=1}^{R} \langle B_k, r_k \rangle \\ &= \Big( \langle B_1, r_0 \rangle + \sum_{k=1}^{R-1} \langle B_{k+1}, r_k \rangle \Big) \\ &\quad - \Big( \sum_{k=1}^{R-1} \langle B_k, r_k \rangle + \langle B_R, r_R \rangle \Big) \\ &= \sum_{k=1}^{R-1} \langle B_{k+1} - B_k,\ r_k \rangle \;-\; \langle B_R,\ r_R \rangle . \end{aligned}

从这个式子可以看出,如果相邻步之间的敏感度变化很平缓(Bk+1−BkB_{k+1} - B_k 很小)且末端边界项 −⟨BR,rR⟩-\langle B_R, r_R \rangle 也小,一阶 loss 误差就能在步间大部分抵消掉(这两条属于有利条件,不是严格必要条件)。但直接把正序 Σ-Δ\Sigma\text{-}\Delta 放到预训练好的循环模型上跑,马上会遇到两个具体问题。

第一个问题是末端边界项的位置。前面测 Huginn 的敏感度分布时已经看到,最后几步的 ‖Bk‖F\|B_k\|_F 是最大的。如果正序跑完 RR 步,没消掉的余差 rRr_R 刚好乘在最大的敏感度 BRB_R 上。在冻结权重推理(PTQ)里,为了避开这个边界项,可以在前 BB 次访问先用普通的 RTN 码,到最后 KK 次尾段访问(总步数 B+KB+K 固定)时从 r0=0r_0 = 0 重新起一条长 KK 的 Σ-Δ\Sigma\text{-}\Delta 链,但把这 KK 个码倒过来用(第 jj 次尾段访问取 EK−j+1E_{K-j+1}):

∑j=1K⟨Bj,EK−j+1⟩=∑j=1K⟨Bj,rK−j⟩−∑j=1K⟨Bj,rK−j+1⟩=(∑j=1K−1⟨Bj,rK−j⟩+⟨BK,r0⟩)−(⟨B1,rK⟩+∑j=1K−1⟨Bj+1,rK−j⟩)=−⟨B1, rK⟩+∑j=1K−1⟨Bj−Bj+1, rK−j⟩.\begin{aligned} \sum_{j=1}^{K} \langle B_j, E_{K-j+1} \rangle &= \sum_{j=1}^{K} \langle B_j, r_{K-j} \rangle - \sum_{j=1}^{K} \langle B_j, r_{K-j+1} \rangle \\ &= \Big( \sum_{j=1}^{K-1} \langle B_j, r_{K-j} \rangle + \langle B_K, r_0 \rangle \Big) \\ &\quad - \Big( \langle B_1, r_K \rangle + \sum_{j=1}^{K-1} \langle B_{j+1}, r_{K-j} \rangle \Big) \\ &= -\langle B_1,\ r_K \rangle + \sum_{j=1}^{K-1} \langle B_j - B_{j+1},\ r_{K-j} \rangle . \end{aligned}

逆序之后,最后一步访问拿的是链上的第一个码(也就是普通 RTN 码,这里 r0=0r_0 = 0 把 ⟨BK,r0⟩\langle B_K, r_0 \rangle 消掉了,但要注意最后一步本身是 RTN 误差 −r1-r_1 而不是零误差),而整条链剩下的边界项 rKr_K 被挪到了尾段入口处的 −⟨B1,rK⟩-\langle B_1, r_K \rangle,那里的敏感度比最末端小得多。

2.4. 负模态与尾段阻尼

第二个问题是 Σ-Δ\Sigma\text{-}\Delta 产生的高频交替误差在负模态下会被放大。Σ-Δ\Sigma\text{-}\Delta 的本质是把零频(常值)误差推向高频(正负交替)。用一个常系数实标量递推来近似局部单模态的误差响应(设 |λ|<1|\lambda| < 1):

ek=λek−1+εk.e_k = \lambda\, e_{k-1} + \varepsilon_k .

当 |λ|<1|\lambda| < 1 且注入常值误差 εk≡1\varepsilon_k \equiv 1 时,稳态响应为:

edc=λedc+1⟹edc=11−λ.e_{\mathrm{dc}} = \lambda e_{\mathrm{dc}} + 1 \quad\Longrightarrow\quad e_{\mathrm{dc}} = \frac{1}{1-\lambda} .

当注入纯交替误差 εk=(−1)k\varepsilon_k = (-1)^k 时,稳态幅值为:

c=−λc+1⟹|c|=11+λ.c = -\lambda c + 1 \quad\Longrightarrow\quad |c| = \frac{1}{1+\lambda} .

如果该模态为正(比如 λ=0.9\lambda = 0.9,满足 |λ|<1|\lambda|<1),常值注入会被放大 1010 倍,而交替注入只有 1/1.9≈0.531/1.9 \approx 0.53,做高频整形自然有利。但如果局部存在靠近 −1-1 的负模态(比如 λ=−0.9\lambda = -0.9,对应相邻步敏感度反号,差分 Bk+1−BkB_{k+1} - B_k 反而变成相加),常值注入的稳态只有 0.530.53,正负交替的高频注入却会跟 λ<0\lambda < 0 同相叠加,稳态幅值被放大到 1/(1−0.9)=101/(1 - 0.9) = 10。

在我们测试的有限模型与文档样本上,局部探针确实观测到了明显的负模态读数(近期关于 Ouro 和 Huginn 的 KV-Cache 误差诊断工作1515也有局部的负模态观察)。我们在整个文档序列隐状态上,对 J−IJ - I 的有限差分 JVP 做 30 步幂迭代,取最后 5 次 Rayleigh 商加 11 作为局部负模态探针读数(注意这只是单方向探针读数,并非完整谱分解认证的特征值,也不能直接推广成所有循环模型的普遍规律):Huginn 在第 16 次访问之后的文档中位数探针读数约为 −0.89-0.89,Parcae-1.3B 的文档中位数探针读数约为 −0.77-0.77。

这也和局部的数值探测对应:拿 Parcae-140M 的预训练 checkpoint(r=8r=8,不做 QAT)直接测前向 NLL 缺口,静态 RTN 的缺口是 0.0580.058;在这个设置下如果不加阻尼直接上 Σ-Δ\Sigma\text{-}\Delta,缺口反而扩大到 0.0800.080,直接上随机舍入 SR 更是扩大到 0.0930.093(当然这不代表在所有设置下不加阻尼都一定更差,比如部分 INT4 设置下不加阻尼的 Σ-Δ\Sigma\text{-}\Delta 相对于 RTN 依然能有正收益)。

为了压住这种高频振荡,可以在尾段对隐状态做显式的阻尼更新(damping):

hk=(1−β)hk−1+βF(hk−1,e;Wˆk),0<β≤1.h_k = (1-\beta)\, h_{k-1} + \beta\, F(h_{k-1}, e; \widehat W_k), \qquad 0 < \beta \le 1 .

此时标量误差递推变成:

ek=(1−β)ek−1+β(λek−1+εk)=aek−1+βεk,a=1−β+βλ.e_k = (1-\beta) e_{k-1} + \beta(\lambda e_{k-1} + \varepsilon_k) = a\, e_{k-1} + \beta\,\varepsilon_k, \qquad a = 1 - \beta + \beta\lambda .

在满足 |a|<1|a| < 1 的条件下,再看两种注入下的稳态响应:

常数注入:edc=aedc+β ⟹ edc=β1−a=ββ(1−λ)=11−λ,交替注入:c=−ac+β ⟹ c=β1+a=β2−β(1−λ).\begin{aligned} \text{常数注入:}\quad & e_{\mathrm{dc}} = a e_{\mathrm{dc}} + \beta \ \Longrightarrow\ e_{\mathrm{dc}} = \frac{\beta}{1-a} = \frac{\beta}{\beta(1-\lambda)} = \frac{1}{1-\lambda}, \\ \text{交替注入:}\quad & c = -ac + \beta \ \Longrightarrow\ c = \frac{\beta}{1+a} = \frac{\beta}{2 - \beta(1-\lambda)} . \end{aligned}

可以看到,阻尼对常数注入的稳态放大倍数 1/(1−λ)1/(1-\lambda) 没有任何影响(分子分母的 β\beta 约掉了),所以它并不能帮静态 RTN 消除正模态下的常值偏差;但对交替注入来说,它把有效极点从 λ\lambda 拉到了 a=1−β+βλa = 1 - \beta + \beta\lambda。当 λ=−0.9\lambda = -0.9、取 β=0.5\beta = 0.5 时,有效极点变成 a=0.05a = 0.05(满足 |a|<1|a|<1),原本靠近 −1-1 的高频放大直接被压了下去(图 3)。在刚才那个 Parcae-140M 预训练 checkpoint(r=8r=8)上,给 Σ-Δ\Sigma\text{-}\Delta 加上尾段阻尼后,NLL 缺口就从 0.0800.080 降到了 0.0240.024。

局部标量响应玩具:e(k)=(1−β+βλ)e(k−1)+βε(k),e(0)=0,共32次访问。常值/纯交替注入用于展示频率差异;SD误差一般不是纯交替,各面板纵轴独立。

从数学性质上讲,对于一个固定的自治映射 FF,当 β>0\beta > 0 时,阻尼更新不会改变它的不动点集合(即 h∗=F(h∗)h^\ast = F(h^\ast) 与 h∗=(1−β)h∗+βF(h∗)h^\ast = (1-\beta)h^\ast + \beta F(h^\ast) 等价);但在有限的 RR 步循环里,加阻尼是会改变输出轨迹的,而且当每一步用的是动态变化的量化权重 Wˆk\widehat W_k 时,也不能直接套用固定自治映射的结论。不过在 Huginn 上实测 BF16 下改用 16+16, β=0.5 阻尼调度,相对原标准调度的 KLstd\mathrm{KL}_{\text{std}} 在 FineWeb 上只有 0.000850.00085,在 FineMath 上也只有 0.00160.0016,相比量化误差本身要小得多。

2.5. 实现细节

把这套做法用到 PTQ 和 QAT 时,两边的具体配置有一些差别:

PTQQAT
链从哪开始前 BB 次用 RTN 码;尾段从 r0=0r_0=0 重新起一条长 KK 的链每次 forward 从第 1 次访问起跑一条长 DD 的链
码的使用顺序逆序,最后一次访问拿链上第一个码正序
阻尼区间尾段 KK 次(Huginn 16+16,Parcae-1.3B 8+8)最后 ⌊D/2⌋\lfloor D/2 \rfloor 次,DD 为该微批采样的深度
块尺度由冻结权重算出,所有对照方案共用每次 forward 由当前 master 重算,forward 内固定

QAT 阶段因为每次微批采样的深度 DD 在变,且权重和敏感度分布在随训练更新,直接从第 1 次访问起正序跑一条长 DD 的链、对后半段 ⌊D/2⌋\lfloor D/2 \rfloor 步加阻尼更直接。核心前向逻辑用 PyTorch 写出来如下:

# W: FP32 master;D: 本微批采样的深度;beta: 尾段阻尼系数
s = block_scale_46(W) # 4/6 块尺度,本次 forward 内固定
x = W / s # 归一化权重
r = torch.zeros_like(x) # 余差,每次 forward 清零
for k in range(1, D + 1):
v = x + r
q = e2m1_round(v) # 就近取 E2M1 码
r = v - q # 没表达出去的部分留给下一次访问
W_k = W + (s * q - W).detach() # STE:前向用码,梯度直接回到 W
f = F(h, e, W_k)
h = f if k <= D - D // 2 else (1 - beta) * h + beta * f

3. 实验结果与分析

3.1. PTQ

先看只把共享 core 的 Linear 权重压成 NVFP4(W4A16)、保持激活高精度的 PTQ 实验1616。为了把权重量化本身的失真和阻尼调度的微小偏移拆开看,定义两个 KL 散度指标:

KLsched=DKL(pBF16, sched‖pquant, sched),KLstd=DKL(pBF16, std‖pquant, sched).\begin{aligned} \mathrm{KL}_{\text{sched}} &= D_{\mathrm{KL}}\big(p_{\text{BF16, sched}} \,\|\, p_{\text{quant, sched}}\big), \\ \mathrm{KL}_{\text{std}} &= D_{\mathrm{KL}}\big(p_{\text{BF16, std}} \,\|\, p_{\text{quant, sched}}\big). \end{aligned}

其中 KLsched\mathrm{KL}_{\text{sched}} 以同阻尼调度的 BF16 为参考,KLstd\mathrm{KL}_{\text{std}} 以原版无阻尼标准调度的 BF16 为参考。实验在 Huginn-0125(16+16, β=0.5)和 Parcae-1.3B(8+8, β=0.5)上各测 128 篇文档 ×512\times 512 tokens,所有方法共用同一套 4/6 块尺度与阻尼调度(SR 使用 seed 42 生成的一条固定权重轨迹在各文档上共享;95% 置信区间由 2000 次配对文档 bootstrap 算出,不含独立 SR 轨迹的重采样方差)。按 KLsched\mathrm{KL}_{\text{sched}} 统计的比值如下表与图 4 所示:

模型Σ-Δ\Sigma\text{-}\Delta / RTNSR / RTNΣ-Δ\Sigma\text{-}\Delta / SR(95% CI)
Huginn0.1750.4550.385 [0.374, 0.399]
Parcae-1.3B0.3350.8110.413 [0.382, 0.450]

PTQ实验,绘制以同调度BF16为参考的KL_sched之比,不是KL_std。NVFP4 W4A16、相同F4 4/6尺度及调度,β=0.5;128文档×512 tokens。95%区间来自2000次配对文档bootstrap;SR只有固定seed42轨迹,区间不覆盖权重轨迹方差。

在 Huginn 上,RTN、SR 和逆序 Σ-Δ\Sigma\text{-}\Delta 的平均 KLsched\mathrm{KL}_{\text{sched}} 分别为 0.022290.02229、0.010140.01014 和 0.003910.00391,Σ-Δ\Sigma\text{-}\Delta 把散度压到了 RTN 的 17.5%17.5\%、SR 的 38.5%38.5\%;在 Parcae-1.3B 上三者平均 KLsched\mathrm{KL}_{\text{sched}} 分别为 0.094840.09484、0.076880.07688 和 0.031790.03179,Σ-Δ\Sigma\text{-}\Delta 是 RTN 的 33.5%33.5\%、SR 的 41.3%41.3\%。如果换成相对原始调度的 KLstd\mathrm{KL}_{\text{std}},比值同样接近:Huginn 上 Σ-Δ\Sigma\text{-}\Delta / RTN 为 0.1990.199 [0.188, 0.211],Σ-Δ\Sigma\text{-}\Delta / SR 为 0.4220.422 [0.406, 0.440];Parcae-1.3B 上分别为 0.3380.338 [0.310, 0.368] 和 0.4150.415 [0.384, 0.452]。另外在同家族 IFM(819M)的 6 个 checkpoints 上测试,Σ-Δ\Sigma\text{-}\Delta / SR 的比值也都落在 0.294∼0.4110.294 \sim 0.411 之间。

为了确认逆序 Σ-Δ\Sigma\text{-}\Delta 的收益到底是不是来自码字的排列顺序,在 Huginn(INT4 g32 W4A16,16+16, β=0.5,64 篇文档)上做了一组打乱消融:保留逆序 Σ-Δ\Sigma\text{-}\Delta 生成出来的同一组码字集合(multiset),仅把它们在尾段各步之间的使用顺序随机打乱,测得的 KLstd\mathrm{KL}_{\text{std}} 如下:

逆序 Σ-Δ\Sigma\text{-}\Delta同一组码打乱顺序独立 SRRTN
0.00720.01320.01600.0342

同一组码一旦打乱顺序,KLstd\mathrm{KL}_{\text{std}} 就从 0.00720.0072 退化到 0.01320.0132,接近独立 SR(0.01600.0160)。这说明在 PTQ 里,步与步之间的顺序配合确实是关键。

3.2. QAT 与二阶机制猜想

接下来看 QAT 的表现。从 Parcae-140M 预训练 checkpoint 出发继续训练 300M tokens(573 步,microbatch 8,global batch 256,序列长度 2048,验证集 10M tokens),跑了 seed 42 和 43 两个随机种子(共享初始权重和深度采样序列)。训练深度按均值 8 的截断泊松分布采样,TBPTT 回传最后 min⁡(4,D)\min(4, D) 步,阻尼组对最后 ⌊D/2⌋\lfloor D/2 \rfloor 步取 β=0.551\beta = 0.551,仅对 13 个 core Linear 权重做假 NVFP4 量化。

评估分两种方式(均以相同 seed、相同深度 r=8r=8 或 r=16r=16 下的 BF16 继续训练结果为参考算 ΔNLL\Delta\text{NLL} 缺口):master 是撤掉量化器,把训练出来的 FP32 主权重直接放在原始无阻尼标准调度下用高精度评估;own 是保留该组自己的量化与调度评估。两 seed 平均结果如下表与图 5 所示:

训练组master 缺口 r=8r=8master 缺口 r=16r=16own 缺口 r=8r=8own 缺口 r=16r=16
RTN0.03540.03570.00890.0088
RTN + 最后 10% BF16 healing0.02550.02570.01770.0177
SR0.00860.00860.03340.0307
SR + damp0.00740.00860.02540.0191
Σ-Δ\Sigma\text{-}\Delta + damp0.00690.00900.01280.0112

Parcae-140M从预训练checkpoint QAT 300M tokens,验证10M tokens。柱为seed42/43均值,点为单seed,无置信区间;两seed共享初始化和深度序列。ΔNLL参照各自seed、同深度的BF16组;当前仅权重假量化,激活/GEMM高精度。

对比表里的两组指标,可以看到几个很清楚的趋势:

对于为什么会出现这种 master 和 own 分化的现象,可以借用解绑视角下的二阶展开做一些猜想性的分析(以下关于固定误差补偿、STE 偏置、优化器平均与曲率的解释均属于理论猜想,实验中没有直接测量梯度偏置或参数位移)。把 RR 次访问的权重写成拼接向量 θ∗=(W∗,…,W∗)\theta^\ast = (W^\ast, \dots, W^\ast),扰动 ε=(E1,…,ER)\varepsilon = (E_1, \dots, E_R) 的均值记为 μ=𝔼[ε]\mu = \mathbb{E}[\varepsilon],协方差为 Σ=Cov(ε)\Sigma = \mathrm{Cov}(\varepsilon),则期望损失的二阶展开为:

𝔼ℒ(θ∗+ε)≈ℒ(θ∗)+g⊤μ+12tr⁡[H(Σ+μμ⊤)].\mathbb{E}\,\mathcal{L}(\theta^\ast + \varepsilon) \approx \mathcal{L}(\theta^\ast) + g^\top \mu + \tfrac{1}{2}\operatorname{tr}\!\big[H(\Sigma + \mu\mu^\top)\big] .

这里 HH 是完整的跨访问步 Hessian(注意共享权重的局部极小点只保证各步梯度之和为零,不保证解绑后的完整 Hessian HH 半正定;同时 SR 的单步条件零均值经过非线性复合后不代表训练梯度无偏,而 Σ-Δ\Sigma\text{-}\Delta 本身是确定性有偏序列)。

在这个框架下,静态 RTN 每次都注入完全固定的常值误差 ε=(E,…,E)\varepsilon = (E, \dots, E),主权重 W∗W^\ast 在 STE 梯度驱动下很可能会往反方向发生静态偏移,专门去补偿和抵消这个固定的格点误差——所以带着 RTN 量化器跑 own 时刚好正负抵消表现很好,可一旦撤掉量化器测 master,这个为了迁就固定误差而长歪了的偏移量就暴露了出来。而 SR 和 Σ-Δ\Sigma\text{-}\Delta 在不同访问步之间不断变换码字,跨步平均偏差小,主权重无法靠简单的静态位移去迎合某一个固定码点,反而留在了靠近高精度解的位置(如果非循环模型加动态抖动也能看到类似效果,那说明这种保护主权重的作用并非循环结构所独有)。至于训练主权重时 Σ-Δ\Sigma\text{-}\Delta 为什么没能拉开和 SR 的差距,一个很自然的猜想是:TBPTT 只回传最后 4 步截断了长链梯度,而且优化器本身在几百步迭代和不同采样深度之间做着长程动量平均,这种跨 step 的时间平均已经把单次 forward 内部 Σ-Δ\Sigma\text{-}\Delta 相比 SR 的局部消误差优势抹平了。

3.3. W4A4 部署组合与 GSM8K 生成评测

再看权重和激活同时压到 4-bit 的 W4A4 部署场景。在 Huginn-0125(R=32R=32)上测试 INT4 W4A4(权重 g32,激活 per-token),范围分 “仅 17 个 core Linear” 和 “17 个 core + 16 个 prelude/coda Linear” 两档(排除 embedding、norm 和 LM head),评测 WikiText word PPL 以及六个 0-shot 任务(LAMBADA acc、ARC-E acc_norm、ARC-C acc_norm、PIQA acc_norm、HellaSwag 前 2000 题 acc_norm、WinoGrande acc)的等权平均分。

如果直接用标准调度的 INT4 W4A4 RTN(core + prelude/coda),WikiText PPL 会直接崩到 18627.718627.7,六任务均分掉到 31.47%31.47\%。真正能把 W4A4 精度拉回来的组合是旋转变换 + 沿轨迹校准的 GPTQ + 激活 DPCM + 尾段阻尼调度,然而这套表现最好的 INT4 组合里完全没有使用权重 Σ-Δ\Sigma\text{-}\Delta(表与图 6 中略去了崩溃的裸 RTN 行):

配置量化范围WikiText word PPL相对 BF16六任务均分
BF16—13.127158.15%
旋转 + GPTQ,标准循环仅 core14.8341.13053.79%
旋转 + 轨迹 GPTQ + DPCM + 阻尼调度仅 core13.3431.01657.55%
旋转 + GPTQ,标准循环core + prelude/coda15.3821.17253.06%
旋转 + 轨迹 GPTQ + DPCM + 阻尼调度core + prelude/coda13.7671.04956.70%

Huginn R32,选定BF16和旋转GPTQ相关五个配置;没有将RTN崩溃行截断后放入图中。量化配置为INT4 W4A4,该组合不含权重SD。六任务等权平均,0-shot,HellaSwag仅2000题;eligible范围排除embedding、norm、head。该图衡量质量,不是原生速度。

在仅量化 core 时,这套不含权重 Σ-Δ\Sigma\text{-}\Delta 的组合把 PPL 从常规旋转 GPTQ 的 14.83414.834 压到了 13.34313.343(相对 BF16 仅高 1.6%1.6\%),六任务均分达到 57.55%57.55\%,离 BF16(58.15%58.15\%)只差 0.600.60 个百分点;扩到 core + prelude/coda 后 PPL 也只有 13.76713.767,六任务均分 56.70%56.70\%(如果不加旋转、只用轨迹 GPTQ + DPCM + 阻尼,仅 core 时六任务为 56.61%56.61\%,但扩到 prelude/coda 时会掉到 43.57%43.57\%)。需要说明的是,这套组合是结合相关工作思路改造拼装的方案,没有做全部组件的逐项消融,也没有复现官方 Loopy/LoopQ 的全部模块(例如未实现 CTA)。

在 GSM8K(1319 题,8-shot chat CoT,greedy 解码,max_new_tokens=256)上,我们也对比了 Huginn R32 在 NVFP4 W4A4 下的生成准确率1717(当前结果中没有跑 SR 或 SR+damp 对照,也没有在 GSM8K 上评测上面的 INT4 旋转组合):

配置strictflexibleflexible 相对 BF16(配对 95% CI)
BF1635.33%42.84%—
RTN,标准调度29.57%32.15%−10.69 [−13.2, −8.0] pp
无副本:轨迹 GPTQ (4/6) + DPCM + 阻尼调度31.92%39.12%−3.71 [−5.84, −1.59] pp
全编码:权重 Σ-Δ\Sigma\text{-}\Delta + 激活 Σ-Δ\Sigma\text{-}\Delta-DPCM(需参考权重)33.21%40.03%−2.81 [−4.85, −0.83] pp

无参考权重副本的静态组合(轨迹 GPTQ (4/6) + 激活 DPCM + 阻尼)把 flexible 准确率从 RTN 的 32.15%32.15\% 拉回到 39.12%39.12\%(对 516 题);如果把权重和激活都换上 Σ-Δ\Sigma\text{-}\Delta 编码(需保留高精度参考权重),flexible 准确率进一步到 40.03%40.03\%(对 528 题,多对 12 题)。不过因为全编码方案同时改了激活编码并保留了参考权重副本,这 12 道题的增益并不能单独归因给权重 Σ-Δ\Sigma\text{-}\Delta。

4. 系统开销与实际部署的考量

只看前面的质量指标,权重 Σ-Δ\Sigma\text{-}\Delta 在特定设置下确实能降低前向误差;但把存储和当前算子微基准的耗时摆在一起看,就能理解为什么在目前的推理实现下做动态权重 Σ-Δ\Sigma\text{-}\Delta 很难直接拿到端到端的系统收益。

首先是存储与访存。静态 PTQ 量化完之后只需要存一份 4-bit 权重;而权重 Σ-Δ\Sigma\text{-}\Delta 在推理时每一步的码字都不同。如果在线实时生成码,显存里就必须额外留一份参考权重(比如 FP8 或约 6.5 bpp6.5\text{ bpp} 的 INT6 经验表示,注意这些只是经验工程点而非信息论下界)和残差状态 buffer,每步都要额外读写这些状态;如果改为离线预生成 RR 步的 4-bit 码流(RR 份 codebank)存下来,虽然每次访问只读取其中一份 bank(单步读取的数据量并不会直接乘以 RR),但权重码字的存储容量最多会膨胀到原来的 RR 倍,而且不同步读取不同 bank 也会削弱同一份权重常驻缓存的复用效果。

更直接的开销体现在当前 GPU 实现的动态码生成耗时上。我们在 RTX PRO 6000 Blackwell Server Edition(SM120)上对 Huginn core Linear 做了一组热 L2(hot-L2)形状加权微基准测试1818(单位为每次核心访问的微秒数 μs\mu\text{s},只测核心 Linear 流水线,不是端到端模型吞吐,不含 attention、norm、DPCM、反向传播和优化器;这里动态路径测的是从 FP8 参考权重出发、包含每步自适应 4/6 块尺度搜索的两点闭式 F4b 实现,与前面用 BF16 参考权重的递推 F4 质量路径在数值上不完全相同,不能把两边直接拼成一个质量/速度点):

MMBF16FP8预量化 NVFP4 RTNNVFP4 + 每次访问生成码
12238167411989910
409634208203331042019122

可以看到,在这组核心 Linear 微基准中:当 M=1M=1 时,静态预量化 NVFP4 每次访问耗时 1198 μs1198\ \mu\text{s},比 BF16(2238 μs2238\ \mu\text{s})快将近一倍;而每次访问在线生成 NVFP4 码需要 9910 μs9910\ \mu\text{s}(其中光码生成就占了约 8732 μs8732\ \mu\text{s}),反而比 BF16 慢了 4 倍多。当 M=4096M=4096 时,在线生成码的耗时(19122 μs19122\ \mu\text{s})相对于 BF16(34208 μs34208\ \mu\text{s})仍然快了约 1.791.79 倍,但相比静态预量化 NVFP4(10420 μs10420\ \mu\text{s})慢了 1.841.84 倍,相对 FP8(20333 μs20333\ \mu\text{s})则只快了约 1.061.06 倍。至于训练阶段,虽然训练本来就要保留 FP32 主权重,但维护残差 buffer 和额外读写同样有成本,加上前面 QAT 实验里 Σ-Δ\Sigma\text{-}\Delta 在主权重上并没有稳定跑赢同调度的 SR + 阻尼(而且像 31.6%31.6\% 这类数字只是核心线性层的 FLOP 占比代理,并不是实测的原生 FP4 端到端训练加速),目前也没有在端到端训练上拿到实际加速。

5. Conclusion

总体上来讲,把这些实测结果和猜想区分开来看:在 Huginn 和 Parcae-1.3B 的局部探针中能观测到负模态读数,在 Huginn 上也能测到后倾的尾段敏感度分布,这解释了为什么在相关设置里给 Σ-Δ\Sigma\text{-}\Delta 或 SR 配上尾段阻尼能够明显抑制高频失真。一阶权重 Σ-Δ\Sigma\text{-}\Delta 在 W4A16 PTQ 里确实能显著压低输出散度,但在 Parcae-140M 的 QAT 里,它的主权重表现并没有稳定超过同调度的 SR + 阻尼。至于前面提到的固定误差补偿、梯度跨步时间平均与曲率效应,目前都属于机制层面的猜想,后面还需要做更多的实验和理论分析。

脚注

  1. Jonas Geiping 等. Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach. https://arxiv.org/abs/2502.05171 ↩

  2. Hayden Prairie, Zachary Novack, Taylor Berg-Kirkpatrick, Daniel Y. Fu. Parcae: Scaling Laws For Stable Looped Language Models. https://arxiv.org/abs/2604.12946v1 ↩

  3. Towards Looped Models Done Right, Part II: Rethinking at Fixed Points. https://arxiv.org/abs/2610.06833v1 ↩

  4. 按每次访问每个权重元素 2 FLOPs 计算,不含 attention score 等非权重计算。 ↩

  5. Jack Cook 等. Four Over Six: More Accurate NVFP4 Quantization with Adaptive Block Scaling. https://arxiv.org/abs/2512.02010 ↩ ↩2

  6. NVIDIA. Pretraining Large Language Models with NVFP4. https://arxiv.org/abs/2509.25149。精度分工见 §4.1;文中 1.2B 模型的 Linear 不带 bias。 ↩ ↩2

  7. Loopy: Low-Bit Quantization Framework for Looped Language Models. https://arxiv.org/html/2610.05265v2 ↩

  8. LoopQ: Quantization for Looped Language Models. https://arxiv.org/html/2605.16343v2 ↩

  9. Hyperloop Transformers. https://arxiv.org/html/2604.21254v1(§4.2) ↩

  10. Nux Li. Quantizing Looped Transformers: Feedback Exposure and Calibration Blindness. https://arxiv.org/html/2609.30820v1 ↩

  11. ResidualQuant: KV Cache Quantization for Looped Transformers with 2-Bit Residuals. https://arxiv.org/html/2610.10381v1。激活残差量化见 §5.4 与附录 H。 ↩

  12. Wojciech Czaja, Sanghoon Na. Frame Quantization of Neural Networks. https://arxiv.org/abs/2404.08131v1 ↩

  13. SDQ-LLM: Sigma-Delta Quantization for 1-bit LLMs of any size. https://arxiv.org/html/2510.03275v1 ↩

  14. Quartet II: Accurate LLM Pre-Training in NVFP4 by Improved Unbiased Gradient Estimation. https://arxiv.org/abs/2601.22813 ↩

  15. Where KV-Cache Error Lives in Looped Language Models: A Diagnostic Study of Ouro and Huginn. https://arxiv.org/html/2610.41825v1 ↩

  16. 主表采用 KLsched\mathrm{KL}_{\text{sched}};KLstd\mathrm{KL}_{\text{std}} 的比值按相同的 2000 次配对 bootstrap 另行计算。SR 使用 seed 42 的一条固定权重轨迹。 ↩

  17. 置信区间按题目配对进行 bootstrap 计算。 ↩

  18. 每个形状取 50 次计时的中位数,并选择最快的后端。 ↩