SVD-LLM V2 阅读笔记:秩怎样分,激活怎样保,局部最优意味着什么

笔记日期: 2026-09-18。作者: Zhongzhu Zhou。

Paper reviewed: SVD-LLM V2: Optimizing Singular Value Truncation for Large Language Model Compression。

Paper authors: Xin Wang, Samiul Alam, Zhongwei Wan, Hui Shen, Mi Zhang。

arXiv: 2503.12340,首次提交于 2025-03-16。本文完整阅读十页会议版,最后两页为参考文献,没有另附附录。下文公式编号属于本笔记,除非特别注明为原论文编号。

1. 我认为这篇论文真正解决了什么

把一个大矩阵换成两个小矩阵,听起来是很直接的压缩方法。但真正进入语言模型之后,至少有三个问题要分别回答:哪些方向可以丢掉,各个矩阵应该保留多少容量,省下的参数能否转换成实际的显存和时间收益。只记住“截掉较小的奇异值”,很容易把这三个问题混为一谈。

SVD-LLM V2 的两个主要设计分别对应前两个问题。它先把不同 Transformer block 中同类型的投影放在一起,根据输出截断误差分配不同的压缩比例;随后在给定秩的情况下,利用输入激活的二阶统计量,把压缩转换成一个可以求局部最优解的低秩近似问题。与第一版相比,第二步改用了两次 SVD,试图缓解原先依赖 Cholesky 分解时遇到的数值困难。

图 1:根据论文第 3.1、3.2 节自绘的概念流程。先决定各矩阵保留多少容量,再决定在对应容量下怎样构造低秩因子;两项决策的作用不同。

最有说服力的结果,是它在论文所选的 SVD 基线上稳定改善了压缩质量。例如 LLaMA-3 8B 减少 20% 参数时,WikiText-2 困惑度从第一版的 11.82 降到 8.01;原始模型为 6.14。C4 上则从 20.05 降到 11.72,原始模型为 9.47。这说明 V2 减轻了压缩造成的损失,但仍然没有恢复到未压缩模型的水平。它发表于 2025 年,表中的“领先”也只针对当时纳入比较的方法,不能直接扩展成对后来工作的排名。

我读这篇论文时最关注的,是“局部最优”四个字的适用范围。这里优化的是一层投影在一批校准输入上的输出误差,而不是整个模型的困惑度,也不是所有未来输入上的最坏误差。这个局部问题有清楚的数学解,价值很实际;但把这个解推广到完整网络,还需要理解秩预算、误差传播和数据分布。

这份笔记先讲清矩阵尺寸、参数比例和激活加权,再逐步推导截断公式,最后分析实验与边界。图中注明“说明性”的数字来自自设的小矩阵或解析计算;注明表号的结果来自论文。本文没有把这些计算当成新的大模型实验,也不把方法解释写成已经复现了作者训练或压缩结果。

2. 前置知识:秩少了,不一定已经省参数

2.1 先把预算算对

采用列向量约定。原始线性层的权重为 W∈Rm×nW\in\mathbb R^{m\times n},输入是 nn 维向量 xx,输出为 WxWx。如果用秩不超过 rr 的矩阵近似它,可以保存两个因子 A∈Rm×rA\in\mathbb R^{m\times r}、B∈Rr×nB\in\mathbb R^{r\times n},前向计算变成 A(Bx)A(Bx)。暂时忽略偏置、对齐和其他元数据,参数量分别为

Pdense=mn,Pfactored=r(m+n).(1)P_{\mathrm{dense}}=mn,\qquad P_{\mathrm{factored}}=r(m+n). \tag{1}

两因子表示真正省参数的条件,是 r(m+n)<mnr(m+n)<mn。因此,秩只要比原矩阵小就一定更省空间,这个直觉并不成立。对方阵来说,秩降到一半,两个因子的参数总量才刚好与原矩阵相同。

论文实验中的压缩比例 RR 指“减少的参数比例”。它与秩的关系是

R=1−r(m+n)mn,r≈(1−R)mnm+n.(2)R=1-\frac{r(m+n)}{mn},\qquad r\approx\frac{(1-R)mn}{m+n}. \tag{2}

以 4096×40964096\times4096 为例,若要减少 20% 参数,秩应该约为 1638,而不是保留 80% 秩所得到的约 3277。后者虽然是一个低秩矩阵,却会在朴素两因子表示下比原始权重占用更多标量。实际秩必须取整数,还可能要按硬件要求对齐;最终比例要重新计算,不能直接照抄目标值。

图 2:根据参数计数公式自绘。方形投影与宽 MLP 投影的收支平衡点不同;横轴保留的秩比例,不能当成纵轴保留的参数比例。

还要分清“被处理的矩阵”和“整个模型”。假设可压缩部分有 PcP_c 个参数,保留不动的 embedding、归一化等部分有 PuP_u 个参数。只在前者中减少 RcR_c,全模型减少的比例就是

Rmodel=RcPcPc+Pu.(3)R_{\mathrm{model}}=\frac{R_cP_c}{P_c+P_u}. \tag{3}

如果进一步量化,参数个数和字节数又不再等价。参数预算、权重文件大小、推理峰值显存应该分别报告。特别是长上下文中,KV cache 可能占据很大空间,权重缩小不代表整个请求的显存按同样比例下降。

2.2 普通 SVD 最优在哪里

把矩阵分解成

W=UΣV⊤,Wr=UrΣrVr⊤,(4)W=U\Sigma V^\top, \qquad W_r=U_r\Sigma_rV_r^\top, \tag{4}

其中奇异值按从大到小排序。Eckart-Young-Mirsky 定理给出的结论是:在所有秩不超过 rr 的矩阵中,截断 SVD 使 Frobenius 范数意义下的权重误差最小,而且

min⁡rank⁡(Z)≤r∥W−Z∥F2=∑j>rσj(W)2.(5)\min_{\operatorname{rank}(Z)\le r}\|W-Z\|_F^2 =\sum_{j>r}\sigma_j(W)^2. \tag{5}

Frobenius 范数的平方,就是所有元素平方的总和。这个目标默认各个输入方向同等重要;而语言模型收到的激活并不是各向同性的。某个方向的权重较小,却可能被输入反复放大。只在权重空间保留“大方向”,不一定能保留模型真正使用的信息。

另一个容易被忽略的区别,是平均误差和个别样本误差。总能量损失很小,不代表每个 token 的误差都很小。一个罕见但关键的方向可以在总和里占很小比例,却决定特定任务的成败。后面的激活加权改进了局部衡量方式,但没有消除这类覆盖范围问题。

3. 为什么要在误差里乘上输入激活

把 NN 个校准 token 的输入向量按列排成 X∈Rn×NX\in\mathbb R^{n\times N}。论文关心的局部误差不是 ∥W−W′∥F\|W-W'\|_F,而是

E(W′)=∥WX−W′X∥F,rank⁡(W′)≤r.(6)\mathcal E(W')=\|WX-W'X\|_F, \qquad \operatorname{rank}(W')\le r. \tag{6}

这句话可以直译成:输入保持相同,尽量让压缩前后的输出接近。令 Δ=W−W′\Delta=W-W',展开平方范数得到

E(W′)2=tr⁡((ΔX)(ΔX)⊤)=tr⁡(ΔXX⊤Δ⊤).(7)\begin{aligned} \mathcal E(W')^2 &=\operatorname{tr}\bigl((\Delta X)(\Delta X)^\top\bigr)\\ &=\operatorname{tr}\bigl(\Delta XX^\top\Delta^\top\bigr). \end{aligned} \tag{7}

所以,校准输入不是可有可无的辅助材料,而是在定义“哪些方向更重要”。C=XX⊤C=XX^\top 是未中心化的二阶矩;如果直接把它换成减去均值后的协方差,就改变了优化目标,除非额外保留均值贡献。常见的“协方差白化”说法在这里需要注意这一点。

先看一个完全可算的小例子:

W=[9002],X=[0.10010],WX=[0.90020].(8)W=\begin{bmatrix}9&0\\0&2\end{bmatrix},\quad X=\begin{bmatrix}0.1&0\\0&10\end{bmatrix},\quad WX=\begin{bmatrix}0.9&0\\0&20\end{bmatrix}. \tag{8}

如果只对 WW 做秩一截断,会保留数值 9 对应的第一个方向。它在权重空间里当然最优,但第二个方向的输入会放大十倍,丢掉它后,输出误差达到 20。反过来,保留权重较小的第二个方向,虽然权重本身差得更多,校准输出误差却只有 0.9。

图 3:式(8)的说明性计算。权重奇异值与输出奇异值给出了不同的重要性排序;这不是某个实际大模型层的测量。

这个例子说明,权重更接近并不必然意味着功能更接近。输入分布决定了权重误差会怎样被放大。激活加权 SVD 的出发点,就是先把这种放大关系纳入度量,再决定保留哪些子空间。

然而,这种“功能”仍只覆盖已观察到的输入。如果校准语料里几乎没有代码,某个对代码有用的方向可能看起来并不重要。扩大同一语料的样本量可以降低采样波动,却不能自动补上新的领域。相同分布下的样本稳定性,与跨分布的能力保留,是不同的问题。

此外,E\mathcal E 不是交叉熵的直接替代品。假设后续网络为 ff,小扰动近似满足 f(y+δy)−f(y)≈Jfδyf(y+\delta y)-f(y)\approx J_f\delta y。同样大小的输出误差,如果沿着后续网络十分敏感的方向,可能造成更大的最终影响。论文选择便宜的局部重建目标,避免逐项估计这种下游敏感性;计算成本因此较低,但局部误差和任务质量之间仍有距离。

还有一个后面会用到的细节:把 XX⊤XX^\top 除以 token 数 NN,不会改变固定层、固定秩下的最优方向,只是整体缩放了目标。但若跨层分配规则依赖误差的绝对数值,这个缩放就可能改变层间预算。局部截断对尺度不敏感,不等于整个压缩流程对尺度也不敏感。

4. 两次 SVD:把加权问题变回普通低秩近似

4.1 第一次分解建立输入度量

先假设 C=XX⊤C=XX^\top 正定,即校准输入在所有输入维度上都提供了非零支持。因为 CC 是对称矩阵,可以写成

C=QΛQ⊤,S=QΛ1/2.(9)C=Q\Lambda Q^\top,\qquad S=Q\Lambda^{1/2}. \tag{9}

对于这样的半正定矩阵,SVD 给出的就是对应的谱结构。这里 SS 不一定是对称平方根;只需要 SS⊤=CSS^\top=C 即可。再定义变换后的权重 D=WSD=WS,以及变换后的输入 H=S−1XH=S^{-1}X。直接计算可得

HH⊤=S−1XX⊤S−⊤=I.(10)HH^\top=S^{-1}XX^\top S^{-\top}=I. \tag{10}

这表示 HH 的行是正交归一的。HH 可以是长方形矩阵,不要求它是一个方阵正交变换。后面的证明真正需要的是:对任意尺寸匹配的矩阵 AA,

∥AH∥F2=tr⁡(AHH⊤A⊤)=tr⁡(AA⊤)=∥A∥F2.(11)\|AH\|_F^2 =\operatorname{tr}(AHH^\top A^\top) =\operatorname{tr}(AA^\top) =\|A\|_F^2. \tag{11}

有了这一步,就能把原始目标改写为

∥WX−W′X∥F2=∥(WS−W′S)H∥F2=∥D−W′S∥F2.(12)\begin{aligned} \|WX-W'X\|_F^2 &=\|(WS-W'S)H\|_F^2\\ &=\|D-W'S\|_F^2. \end{aligned} \tag{12}

由于 SS 可逆,右乘 SS 不改变矩阵秩。因此,在所有秩不超过 rr 的 W′W' 中寻找最优解,等价于给 DD 找普通 Frobenius 意义下的最优秩 rr 近似。输入分布造成的各向异性,已经被吸收到 DD 中。

4.2 第二次分解决定保留的方向

对 DD 做第二次 SVD:

D=UΣV⊤.(13)D=U\Sigma V^\top. \tag{13}

保留前 rr 个分量,再映射回原输入坐标,得到

Wr′=UrΣrVr⊤Λ−1/2Q⊤.(14)W'_r=U_r\Sigma_rV_r^\top\Lambda^{-1/2}Q^\top. \tag{14}

它对应的最小平方误差就是 ∑j>rσj(D)2\sum_{j>r}\sigma_j(D)^2。为什么论文可以用 WXWX 的截断误差来估计这个值?因为

(WX)(WX)⊤=WXX⊤W⊤=DD⊤,(15)(WX)(WX)^\top=WXX^\top W^\top=DD^\top, \tag{15}

所以 WXWX 与 DD 的非零奇异值相同。这一步把“输出能量谱”和“变换后权重的能量谱”联系起来,避免把两种不同矩阵的奇异值凭直觉混用。

原论文的公式展示有几处简写需要在阅读时展开。Algorithm 2 的重建行没有写出右奇异向量因子,而 Theorem 3.1 中包含了它;证明中白化后的范数等式也有符号不一致。上面逐行给出了维度一致的表达和所需的恒等式。这是在澄清纸面数学,不涉及对任何仓库行为的判断。

4.3 最终应保存什么

如果真的把式(14)乘成一个完整的稠密矩阵再保存,就失去了低秩存储的意义。一个方便的写法是把奇异值的平方根分到两边:

A=UrΣr1/2,B=Σr1/2Vr⊤Λ−1/2Q⊤.(16)A=U_r\Sigma_r^{1/2},\qquad B=\Sigma_r^{1/2}V_r^\top\Lambda^{-1/2}Q^\top. \tag{16}

保存 A,BA,B,推理时计算 A(Bx)A(Bx)。把全部奇异值放在左边,在精确实数运算下也完全等价;但量化以后,两边的数值范围和误差放大可能不同。代数等价的因子分配,不一定是低比特表示下同样好的因子分配。

我会把两次分解记成两个不同动作:第一次确定输入度量,第二次在这个度量里选低秩方向。只分解权重,少了输入重要性;只近似当前 WXWX,又没有直接得到适用于未来输入的紧凑线性映射。最后的映射回原坐标,正是把校准结果变成可使用投影层的步骤。

5. 校准矩阵退化时,逆矩阵不能直接略过

论文用 Cholesky 对正定性的要求来解释更换分解方式的动机。确实,奇异的 XX⊤XX^\top 也可以做 SVD;但是“能够分解”与“能够取逆平方根”是两件事。若某个特征值为零,式(14)里的 Λ−1/2\Lambda^{-1/2} 就没有普通逆意义下的定义。这里必须补上适用条件。

一种清楚的数学处理,是只在校准数据真正覆盖的子空间里工作。设 q=rank⁡(X)q=\operatorname{rank}(X),取所有正特征值对应的部分:

C=QqΛqQq⊤,Sq=QqΛq1/2,Hq=Λq−1/2Qq⊤X.(17)C=Q_q\Lambda_qQ_q^\top,\qquad S_q=Q_q\Lambda_q^{1/2},\qquad H_q=\Lambda_q^{-1/2}Q_q^\top X. \tag{17}

此时仍有 HqHq⊤=IqH_qH_q^\top=I_q,并且 X=SqHqX=S_qH_q。对 Dq=WSqD_q=WS_q 做秩 rr 截断后,定义

Wr′=(Dq)rΛq−1/2Qq⊤.(18)W'_r=(D_q)_r\Lambda_q^{-1/2}Q_q^\top. \tag{18}

它能达到校准目标下的最小误差,秩也不超过 rr。这是前一节推导在有支撑子空间上的延伸,不是对论文某个具体阈值方案的陈述。

如果 r≥qr\ge q,甚至可以完全保留所有校准输出。但这不意味着整个线性层的行为都被保留。例如 X=diag⁡(3,0)X=\operatorname{diag}(3,0) 时,目标函数根本没有观察第二个输入方向。把那个方向随意改变,校准误差仍可能为零。这样的“无损”仅对观察到的输入成立,不能推广到任意未来输入。

图 4:自设校准奇异谱的数学示意。零方向没有得到数据支持;很小的正奇异值在映射回原坐标时需要取倒数,会放大数值误差。不是实测模型谱。

在有限精度下,哪些特征值算作零,又需要阈值。使用伪逆时丢掉过小特征值,可以避免很大的倒数,却也改变了所保留的支持空间。另一种办法是加阻尼 λI\lambda I。这使矩阵正定,但它对应的新目标其实是

tr⁡(Δ(C+λI)Δ⊤)=∥ΔX∥F2+λ∥Δ∥F2.(19)\operatorname{tr}\bigl(\Delta(C+\lambda I)\Delta^\top\bigr) =\|\Delta X\|_F^2+\lambda\|\Delta\|_F^2. \tag{19}

右边多出来的是权重空间误差惩罚。所以阻尼不是“只提高稳定性、完全不改变目标”的免费处理,而是在原目标上加了正则项。讨论最优性时,应该说清楚是原始校准目标最优,还是阻尼目标最优。

谱分解本身也不能消除条件数问题。构造 XX⊤XX^\top 会把 XX 的非零条件数平方;很小的特征值仍会让映射回去的因子变大。直接对 XX 做 SVD 可以避开显式构造 Gram 矩阵,但当 token 列数很多时,存储和分解成本又可能更高。逐批累加 XX⊤XX^\top 只需要为当前统计量保留约 O(n2)O(n^2) 空间,因此各有取舍。

论文表 1 给出了有针对性的例子:矩阵 B 在 60% 参数减少时,基线归一化截断误差为 5.9834,V2 为 3.5245,与报告的理论值一致;矩阵 A 在基线设置下失败,而 V2 成功。这支持了改进数值路径的动机。但仅有两个选定矩阵,还不能说明所有层上的失败频率、最坏情况稳定性或对阈值的敏感程度。

6. 各层为什么不能一刀切地压缩

6.1 先分组,再分配比例

同一个 Transformer 里,query、key、MLP gate 等矩阵承担的角色不同。V2 先按投影类型跨 block 分组:各层 query 放一组,各层 key 放一组,MLP 的相应投影也分别处理。在一个有 gg 个矩阵的组中,先用统一的目标参数减少比例 RR 试算每个矩阵的最小输出截断误差 LiL_i。

论文第 3.1 节的文字描述,是先对误差取对数倒数,再归一化分配。为了避免一个符号同时表示变换前后两个量,我把它写成

ai=1log⁡Li,Ri=gRai∑j=1gaj.(20)a_i=\frac{1}{\log L_i},\qquad R_i=gR\frac{a_i}{\sum_{j=1}^{g}a_j}. \tag{20}

在所有 Li>1L_i>1 时,误差大的矩阵得到更小的 aia_i,因此减少的参数比例也更小。它被保留更多容量。所有 RiR_i 加起来为 gRgR,所以组内平均减少比例仍然是 RR。

这个平均值只有在组内各矩阵原始参数量相同时,才直接对应原来的参数预算。若矩阵大小不同,需要比较的是加权总量 ∑iRimini\sum_i R_i m_i n_i,而不是简单的比例平均。即使尺寸相同,秩取整之后,也应重新计算实际预算。

一个说明性例子是 Li=exp⁡(2),exp⁡(4),exp⁡(8)L_i=\exp(2),\exp(4),\exp(8),目标 R=0.4R=0.4。代入后,各矩阵减少比例约为 0.686,0.343,0.1710.686,0.343,0.171。第三个矩阵在统一试压时损失最大,所以获得最多保留容量。这个规则不需要为了每个候选秩组合,都把整个语言模型跑一遍困惑度评估,因而比频繁评估整模型的搜索更便宜。

图 5:根据式(20)计算的自设例子。所有损失同时乘以相同常数后,矩阵间的难易排序不变,但分配比例仍会改变,说明规则依赖损失尺度。

6.2 这是一条启发式,不是全局最优定理

对数倒数有明确的数学边界:Li=1L_i=1 时无定义,Li<1L_i<1 时为负。如果组内出现正负混合的分数,得到的参数减少比例可能没有意义。即使全部为正,过于偏斜的组也可能产生 Ri>1R_i>1。把刚才例子的目标从 0.4 改为 0.8,第一个比例就会超过 1,无法直接落实为合法压缩层。

此外,损失尺度会改变分配。把刚才的三个 LiL_i 全部乘以 exp⁡(2)\exp(2),40% 目标下的分配变成约 0.581,0.387,0.2320.581,0.387,0.232。它们的相对排序完全没有变化,却重新分配了容量。若把同一批 token 重复若干次,Frobenius 误差会按重复次数的平方根放大;统计分布没有改变,绝对误差却变了。是否按 token 数归一化,因此不能当成无关紧要的细节。

我会把这里的结论说得有限一些:这条规则用一次局部探测,给出便宜的跨层预算建议。它不是在所有可行秩组合上最小化最终模型损失,也没有因为用了理论截断误差,就自动获得一个全局最优保证。若需要截断非法比例或重新分配剩余预算,应明确说明规则,因为简单裁剪会改变组内总预算。

一个更直接的替代目标,是利用每层完整的尾部能量曲线:

min⁡r1,…,rg∑i∑j>riσij2,满足 ∑iri(mi+ni)≤B.(21)\min_{r_1,\ldots,r_g} \sum_i\sum_{j>r_i}\sigma_{ij}^2, \quad \text{满足 }\sum_i r_i(m_i+n_i)\le B. \tag{21}

它仍然是局部代理目标,但至少把“优化什么”和“花费多少参数”写在同一个问题里。如果各层每增加一阶秩的成本相同,可以按能保留的奇异能量从大到小选择;成本不同,则不能一般性地把按能量除以成本的贪心,当作精确解。动态规划或整数优化是可能的选择。这是本笔记提出的延伸方向,不是论文宣称采用的算法。

7. 把假设写进编号算法

下面的伪代码整理了论文的数学流程,刻意把预算、支撑空间和度量说清楚。其中,支撑空间处理采用前文的推导延伸;论文没有完整规定的阈值或边界修复,不会在这里被写成作者已经做过的事实。

算法 1:同类型矩阵的压缩比例分配

输入: 各投影 WiW_i、校准输入 XiX_i、目标参数减少比例 RR、投影类型。输出: 各矩阵的整数秩 rir_i 和实际参数总量。

  1. 按投影功能跨 block 分组,记录每个矩阵的 mi,nim_i,n_i,并单独统计保留不压缩的参数。
  2. 用式(2)把统一的试探比例 RR 转换成试探秩,明确取整方式。
  3. 获得 WiXiW_iX_i 或等价变换后矩阵的奇异谱,计算试探秩之外的尾部 Frobenius 误差 LiL_i。
  4. 在分数有定义且具有合法意义时,按式(20)计算对数倒数分数与组内比例。
  5. 标记超出可行范围的比例。完整方法描述应明确如何重新分配;不能悄悄裁剪以后,仍把原目标比例当作实际比例。
  6. 把合法比例转换成整数秩,计算两因子参数量,并加入不压缩部分。
  7. 若要求严格的预算上限,用已经声明的调整策略修正秩,报告目标与实际参数减少比例的差异。

这里需要分开看“重要性排序”和“预算可行性”。一个分数即使能把脆弱层排在前面,也可能给出不合法的比例。硬件对齐还会带来额外影响:若秩必须是 16 或 64 的倍数,每多保留一阶秩就增加 mi+nim_i+n_i 个参数,因此同样的取整步长在不同尺寸矩阵上花费并不相同。

算法 2:给定秩后的激活加权截断

输入: 权重 W∈Rm×nW\in\mathbb R^{m\times n}、校准 token 矩阵 XX、秩 rr、明确声明的支撑或阻尼约定。输出: 因子 A,BA,B。

  1. 从校准 token 逐批累加未中心化二阶矩 C=XX⊤C=XX^\top。
  2. 对 CC 做谱分解,根据约定确定保留的特征值与对应子空间。
  3. 构造 Sq=QqΛq1/2S_q=Q_q\Lambda_q^{1/2},以及变换后的权重 Dq=WSqD_q=WS_q。
  4. 对 DqD_q 做 SVD,保留最大的 rr 个奇异分量;若支持的方向更少,则最多保留这些方向。
  5. 形成 A=UrΣr1/2A=U_r\Sigma_r^{1/2} 与 B=Σr1/2Vr⊤Λq−1/2Qq⊤B=\Sigma_r^{1/2}V_r^\top\Lambda_q^{-1/2}Q_q^\top。
  6. 用 A(Bx)A(Bx) 表达新投影,保持原输出维度,并保留原本的偏置项。
  7. 陈述得到的局部残差及其度量。若使用阻尼,应区分阻尼目标误差与原始校准误差。

这个流程没有要求对权重做梯度微调,但它仍然依赖数据。样本选取、保留子空间的阈值和各矩阵秩都会改变最终近似。“训练后压缩”说明压缩发生在模型训练之后,并不等于不需要校准决策,也不等于任意设置都给出相同结果。

从学习这套方法的角度,我认为最有帮助的检查顺序是先看尺寸,再看目标,再看预算:每个乘法是否能相乘,误差究竟在哪个输入集合上计算,最后两个因子到底比原矩阵少多少参数。把这些问题说清,比背下分解函数的名称更能避免误读论文。

8. 实验结果:相对基线改善,与恢复原模型是两回事

8.1 设置与指标先对齐

论文评估了 LLaMA-7B、13B、30B,LLaMA-3 8B 和 OPT-6.7B。默认校准集是 256 个 WikiText-2 样本,实验使用 A100。十个数据集分为两项语言建模、六项分类和两项生成任务。

不同任务使用的指标并不相同。WikiText-2、C4 是困惑度,越低越好;六项分类任务报告各自准确率和平均准确率;TruthfulQA 在这里报告 BLEU;GSM8K 报告 exact-match accuracy。尤其要注意,TruthfulQA 上的 BLEU 不是对“答案事实正确率”的直接测量,不能把指标名字省掉后改写成真实性提升。

图 6:根据论文表 2 重绘。压缩行均减少 20% 参数;同时保留原模型、第一版和 V2,便于区分“比压缩基线好”与“恢复到原模型”。

表 2 中,LLaMA-7B 的 WikiText-2 困惑度依次为:原模型 5.68,第一版 7.94,V2 7.12。OPT-6.7B 的对应值为 10.87、16.04、13.46。LLaMA-3 8B 为 6.14、11.82、8.01。三组都呈现相同趋势:V2 显著减轻了第一版的压缩损失,但仍有相对原模型的退化。

在 LLaMA-3 8B 上,六任务平均准确率从 0.54 提高到 0.59,原模型为 0.61。这里是提高五个百分点,以表中四舍五入后的数计算,相对提升约 9.3%。GSM8K 从 0.31 提高到 0.40,原模型为 0.45。不能把“相对压缩基线的提升”写成“压缩本身提升了原模型的推理能力”。

更大规模的结果见表 3。减少 20% 参数时,LLaMA-13B 的 WikiText-2 困惑度为原模型 5.09、第一版 6.61、V2 5.46;30B 对应为 4.10、5.63、4.71。这支持方法在论文所测规模之间迁移,但还不是对现代 MoE、多模态或长上下文系统的直接证据。

8.2 消融里,两个改动的贡献并不一样大

图 7:根据论文表 4 重绘,设置为 LLaMA-7B、WikiText-2、20% 参数减少。分别打开比例分配和截断方法,能看到二者的单独作用及组合效果。

四个数值得逐个读:第一版 7.94,只改变分配 7.91,只改变截断 7.43,两者同时使用 7.12。按这些印出的值计算,单独分配使困惑度降低约 0.38%,单独截断降低约 6.42%,组合降低约 10.33%。分配单独带来的差异很小,不宜据此宣称这个分配器已经在广泛场景中占据决定性优势。

组合的绝对改善,大于两个单独改善的简单相加。这与两项设计之间存在相互作用相容:更合适的秩分配,在更可靠的局部截断下可能更能体现价值。但这里只是一种模型、一个压缩预算和一个指标,不能直接推导出所有设置中的交互强度,更不能替代置信区间。

论文图 6 在 LLaMA-7B、20% 参数减少的配置上,改变校准样本数和随机种子,报告变化不超过 1%。这说明已测试采样条件下结果比较稳定。它没有测试从百科文本切换到代码、多语言、检索或对话的领域变化。把“换几个 seed 不太变”概括成“校准集怎么选都不重要”,会明显超出证据范围。

我会把这组实验总结为:V2 在所测 SVD 基线上有一致收益,数值截断改进的作用尤其清楚;局部改善最终转成模型质量收益的大小,仍受模型、预算和校准条件影响。

9. 参数变少,什么时候才会真正变快

对单个输入向量,稠密投影大致需要 mnmn 次乘加,而两因子投影大致需要 r(m+n)r(m+n) 次。理论算术量的下降与参数计数一致,但运行时间还包含 kernel 启动、中间激活的读写、attention、归一化、采样以及 KV cache 访问。两个较窄的乘法,并不总能像一个大乘法那样有效利用硬件。

可以先用 Amdahl 定律建立直觉。若原始时间中有比例 ff 的部分被加速 ss 倍,而其他部分不变,则总加速为

Stotal=1(1−f)+f/s.(22)S_{\mathrm{total}}=\frac{1}{(1-f)+f/s}. \tag{22}

例如,只有 70% 的时间属于可加速部分,且这部分快了两倍,总体也只是约 1.54 倍。这是说明性计算,不是在拟合论文的测量。它提醒我们,权重相关工作之外的时间占比,决定了压缩最终能贡献多少收益。

图 8:根据论文图 5 重绘的吞吐加速。测试为单张 A100、batch size 4、prefill 1024、decode 256。虚线仅表示理想化的权重工作量倒数,不是实测方法。

在论文的这组工作负载下,减少 20%、40%、60%、80% 参数分别得到 1.29、1.63、2.08、2.71 倍吞吐加速。它们确实证明,低秩压缩可以产生真实硬件收益。但这些数字带着具体条件:同样的加速未必出现在 batch size 1、超长上下文或者另一套推理系统中。

小 batch 解码通常更容易受到读取权重的带宽影响;batch 变大后,矩阵乘法利用率和计算占比可能变化。上下文继续增长时,attention 与 KV cache 的成本又会提高。压缩权重带来的收益,因而可能随着同一服务中请求形态的变化而改变。

尤其不能把最高 2.71 倍加速,与前面减少 20% 参数时的精度表拼成一个结果。它们对应不同压缩程度、不同模型质量。要选择部署点,应把同一压缩 checkpoint 的精度、吞吐、峰值显存放在一起,形成一条可比较的折中曲线。否则很容易让读者以为某个模型同时拥有轻压缩的质量和重压缩的速度。

离线压缩成本也应单独考虑。论文在 LLaMA-7B、20% 参数减少时报告:V2 约需 18 个 A100 GPU 分钟,第一版约 15 分钟,ASVD 约 5.5 小时,FWSVD 约 6 小时。压缩一次后长期提供服务,额外几分钟通常不大;若要频繁适配多个领域、多个预算,再选择最好配置,准备成本和工作内存就更值得关注。

因此,“更快”至少有两个独立含义:准备压缩模型所花的时间,以及压缩模型每次服务所花的时间。它们可能朝不同方向变化。把离线 GPU 小时与在线 token/s 分开列,是理解效率论文最基本也最容易被省略的一步。

10. 低秩与量化:减少数量,还是减少每个数的位宽

低秩分解减少需要保存的标量个数,量化减少每个标量所用的 bit 数。二者针对的资源不同,没有理由预设其中一个在所有字节预算上都更优。忽略元数据时,bb bit 的两因子权重大约占

Mfactors≈b8r(m+n) 字节.(23)M_{\mathrm{factors}}\approx\frac{b}{8}r(m+n)\ \text{字节}. \tag{23}

这里没有包含 scale、zero point、padding、没有量化的参数,也没有包含临时 buffer 和 KV cache。因此,匹配名义 bit 数,不等于匹配权重实际存储;匹配权重存储,也不等于匹配峰值推理显存。比较时需要说明预算覆盖了哪些部分。

图 9:根据论文表 7、8 重绘。左右面板是不同权重内存预算,不能跨面板当作同预算比较。极小预算下,纯低秩的困惑度很高;结合量化后,论文报告的折中明显改善。

在 2.8 GB 权重预算下,表 7 的 WikiText-2 困惑度为:GPTQ-3bit 16.28,单独 V2 119,V2 加 GPTQ-4bit 9.97。论文描述的组合方式是先用 V2 减少 30% 参数,再做 4-bit GPTQ。按表中数字,组合方案比 GPTQ-3bit 的困惑度低约 38.8%。但是在同一张表里,单独使用低秩显然不是更好的选择。

在 1.5 GB 下,表 8 报告 BiLLM 为 47.67,16-bit V2 为 99.64,2-bit V2 为 14.73。47.67 到 14.73 的相对下降约为 69.1%。这说明在该实验设置中,同时减少参数个数和每个参数的位宽,比把其中一种压缩推到极端更有优势。

同表中的 PB-LLM 使用 1.9 GB,而不是 1.5 GB,不能写成严格同内存比较。方法名称里的“1-bit”也不意味着包括所有元数据和保留部分在内,每个参数都恰好只占一个 bit。读极低比特结果时,实际字节数往往比方法名字更有信息。

两个误差还会相互影响。若量化后的因子为 A+EAA+E_A 和 B+EBB+E_B,则

(A+EA)(B+EB)−AB=AEB+EAB+EAEB.(24)(A+E_A)(B+E_B)-AB =AE_B+E_AB+E_AE_B. \tag{24}

同样大小的因子误差,会被另一因子的尺度放大。于是,在高精度下最合适的秩,未必在低比特下仍最合适;精确算术下等价的因子缩放,也可能改变量化误差。这给联合选择秩和精度留下了空间,但论文的几组结果不能证明任意量化器与任意秩都能良好组合。

中等权重预算下,论文还比较了结构化剪枝。7 GB 时,V2 的困惑度为 15.62,LLM-Pruner、SliceGPT、BlockPruner 分别为 21.68、27.41、43.05;平均准确率分别为 0.35、0.31、0.29、0.20。这是对所测方法和预算的明确优势,而不是“低秩在任何情况下都胜过剪枝”的普遍规律。

我认为这部分实验最值得记住的,是作者自己的表格已经给出了纯低秩的失败区域。压缩方法有适合的资源区间,并不因为它有漂亮的局部最优定理,就能在最小内存端继续保持优势。承认这个边界,反而更有助于选择可用的组合。

11. 论文已经展示的边界

数学保证的范围可以说得很准确:给定秩、校准输入和相应度量,在精确算术下,前文的谱构造能够达到局部 Frobenius 重建误差最小。它没有同时求出全模型最优的秩分配,没有优化所有下游任务,也没有保护校准分布之外的输入。取整、阻尼和有限精度还会增加额外条件。

实验覆盖的是五个稠密模型配置与一组常见语言建模、分类和生成任务。论文没有直接展示 MoE、多模态、复杂指令跟随、长期 agent 轨迹或长上下文检索。在某些任务中,罕见方向的价值远高于它的总激活能量占比,因此不能仅凭平均重建误差推断能力保留。

校准使用 WikiText-2,再报告 WikiText-2 结果,本身不自动等于数据泄漏;还要看实际的训练划分、测试划分和采样方式。但与跨领域评估相比,它确实更接近校准分布。C4 结果扩展了证据范围,却仍然不能代替部署场景里的代码、语言或上下文分布。校准域与使用域越不一致,局部目标越需要谨慎解释。

作者自己的局限部分承认,在极端压缩处,与量化方法仍有差距。表格也显示,纯低秩在很小权重预算下可能有很高困惑度。混合方案改善了这个问题,但同时引入量化误差、因子尺度和精度选择,已经超出了未量化局部最优定理所覆盖的范围。

关于数值稳定性,论文有选定矩阵的对照,也有最终困惑度的消融;但没有给出所有层、所有精度和校准条件上的失败率分布。校准敏感性图同样只对应特定配置。我的结论会停在“论文所测设置中较稳定”,不会扩大成“校准方式不重要”或“SVD 总能解决数值问题”。

这些边界并不削弱论文的实用价值。它们帮助我们回答更具体的问题:当前预算、模型和输入分布,是否接近论文已经证明有效的区域;如果不接近,最先应该验证的是哪个假设。

12. 独立批判性分析

12.1 比例分配更应该看边际损失

每层只在统一压缩比例处探测一次,相当于把整条谱曲线压成一个数。两个矩阵在该位置的尾部能量可以相同,但再多删一阶秩的代价完全不同:一个矩阵可能仍有许多便宜方向,另一个却已经接近明显的谱拐点。单点误差看不到这段差异。

我更倾向于从完整尾部能量曲线出发,问“多花一单位参数,能减少多少局部误差”。这样,预算的意义明确,也能避免在没有声明尺度的损失上直接取对数。若担心搜索昂贵,可以先求可分离谱目标下的分配,再只对少量敏感位置使用持出模型损失做修正,而不是一开始就在整个组合空间反复评估。

这个建议仍有局限:各层局部能量不一定具有相同的任务含义。因此,谱目标只是更明确的起点,并不是自动解决全局质量问题。它值得做的实验,是在同一参数预算、相同校准数据、相同局部分解下,比较统一分配、单点启发式和尾部曲线分配,观察其收益究竟来自哪里。

12.2 局部最优与误差传播应分开验证

压缩前面的层,会改变后面层实际接收的激活。如果所有层都用原始稠密模型产生的输入校准,那么每个局部最优解都在拟合一个最终压缩模型未必仍然产生的分布。按顺序使用已压缩前缀重新收集输入,可以缓解这个不匹配,但又带来顺序依赖和额外计算。

一个有区分力的实验应固定秩预算和分解方法,只改变校准输入来源:全部用稠密模型输入、按压缩前缀顺序更新输入,或者使用二者混合。一起报告中间层输出漂移、最终负对数似然和任务准确率。这样才能判断,局部误差变小是否真的帮助完整模型,而不只是让被选择的局部目标更容易优化。

从一阶近似看,最终扰动约等于各层局部误差经过下游 Jacobian 后的和。对这个和取平方,会出现不同层误差之间的交叉项。简单相加的局部损失忽略了这些相互作用。因此,即使每层都在自己的目标下最优,也不能推出整个网络最优;attention 与门控的非线性变化还会进一步加大差异。

12.3 数值优势应与正则化效果分开

当 CC 正定时,一个精确的 Cholesky 因子与一个精确的谱平方根,都能给出满足 SS⊤=CSS^\top=C 的变换。因此,在精确算术里,它们对应的局部最优值相同。实践中的差异,可能来自统计量累加精度、条件数、负小特征值的处理,以及阻尼方式,而不只是“用了哪一种分解”这个名字。

我希望进一步看到三类量:原始校准度量下的误差,阻尼度量下的误差,以及映射回原坐标后因子的范数。最后一项很重要,因为校准误差很小,仍可能伴随很大的因子;后者会影响舍入、量化和未见输入。再配合逐层条件数估计分布、需要截断支撑空间的层比例,可以更直接地解释数值收益来自哪里。

这样的分析不会否定两次 SVD 的做法。它能区分两种不同进步:一是更忠实地求解原始目标,二是通过改变度量或正则化,让实际模型更稳。两者都可能有价值,但如果不分开,理论最优性和经验稳定性的关系就会变得含糊。

12.4 实际目标应是一条受质量约束的部署曲线

用户真正需要的通常不是最小局部误差,而是“在允许的质量下降和显存上限内,尽量降低延迟”。秩、精度和工作负载共同决定这个问题。只优化局部误差,可能把参数花在任务价值有限的方向上;只优化参数量,又可能得到硬件利用率较差的矩阵形状。

我会给每个压缩 checkpoint 配对报告质量与延迟,在多个 batch size 和上下文长度下测量。短上下文时,权重带宽可能主导;上下文长了,KV cache 与 attention 可能主导。同一模型在不同请求形态下,压缩某些投影的收益可以明显不同。单个 A100 吞吐曲线足以证明“这种路径能加速”,但不足以替每一个部署场景选出最佳配置。

最后还有准备成本的摊销。如果某个更精细的校准多花一小时,却让每个请求节省一毫秒,那么仅按累计计算时间计算,要约 360 万次请求才抵回这一小时;实际还要考虑并行、设备成本和使用周期。这是说明性算例,不是论文测量。它提醒我们,离线成本和在线收益都该进入选择,而不应相互替代。

我认为这四个方向中,最先值得做的是把预算约束写清,并补充跨校准领域的评价。前者决定比较是否在同一资源条件下成立,后者决定局部最优究竟覆盖了哪些输入。没有这两点,单纯继续降低某张校准表上的误差,可能无法回答部署中真正关心的问题。

13. 结论

SVD-LLM V2 给低秩压缩带来了两个有实际价值的改动:根据冗余差异分配容量,并通过谱分解路线构造激活加权的近似。论文在纳入比较的 SVD 基线上取得了一致质量改善,也在具体 A100 工作负载中给出了真实吞吐收益。

我最想保留的阅读结论,是把预算和保证说清楚。减少参数不等于按同样比例减少秩,校准输出最优不等于整个模型最优,重压缩的最高速度也不能与轻压缩的精度混用。在极小内存预算处,论文自己的结果支持把低秩和量化结合,而不是无限加大纯低秩压缩。

这些限定使方法更容易被正确使用。它的价值并不是提供一个覆盖所有场景的压缩结论,而是把“容量怎么分”和“给定容量如何近似”分开,并让后一件事有清楚可推导的数学目标。下一步的关键,是让这个局部目标与全局质量、校准覆盖及实际硬件成本建立更可靠的联系。

参考来源与配图说明

  1. Wang 等,SVD-LLM V2,NAACL 2025 会议论文,页 4287-4296。本文的方法、理论与实验数字均以此十页版本为准,重点对应第 3、4 节及表 1-8、图 1-6。
  2. arXiv:2503.12340。用于核实论文编号、作者与首次提交日期,不作为另一套独立实验结果。
  3. 论文提供的官方代码入口。仅作为后续资源入口。
  4. ACL Anthology 版权说明。2016 年及之后的 ACL 材料采用 CC BY 4.0。图 1-5 为本笔记的解释图或说明性计算,图 6-9 根据注明的原论文数值重绘。支撑空间延伸、替代预算目标和建议实验属于本文的独立分析。