一句话定义
低秩误差补正(low-rank error correction) 指量化之后,除了低位宽的权重矩阵 W_q,再额外存一个低秩的修正项 E ≈ BA(两个瘦长小矩阵相乘),推理时按 (W_q + BA)x 计算。
补的不是逐元素误差,而是误差里成块、有方向的那一部分。
它解决什么问题
训练后量化(PTQ)到 4 位,在支持 FP4 的硬件上能直接换来显存占用和吞吐。代价是精度掉,而且掉法不均匀。
量化误差的分布是有形状的:少数通道的激活值特别大,把量化区间撑开,同层其它通道就挤在很窄的格点上;误差在某些奇异方向上集中,其它方向几乎无损。于是出现一个别扭的局面——整体指标只掉一点,某一类输入却系统性错。
有两种修补办法,各有各的麻烦:
- 微调权重,把它们往回调一点。 最直接,但调完的权重就不再落在标准 4 位格点上。硬件要的是标准格式,浮点尾巴一出现,快路径就用不上,省下来的时间又还回去了。
- 误差反馈:把每一列舍入的残差传给下一列。 这在层内有效,但对整个矩阵层面的结构性偏差着力有限,且需要按顺序算,破坏了并行。
低秩补正的定位在两者之间:主矩阵保持标准低位宽不动,硬件照旧走快路径;补正项是额外的一次小矩阵乘,参数量小、计算便宜;而低秩本身正好匹配「误差集中在少数方向上」这个结构。
关键做法
arXiv 上 2026 年 10 月的一篇工作(编号 2610.32243,方法名 BiLoCo)把补正项的两个因子做成二值的,背景写明是面向 Blackwell 上 FP4 推理这条路线。这类方法的通用骨架是四步:
- 先量出误差矩阵。 用
E = W - W_q得到逐元素的差值,这是要拟合的目标。 - 做低秩分解。 取
E的低秩近似BA,秩定得很小——几千到几万个参数的量级。秩一大就退化成了重训,成本优势和「不动主矩阵」的好处一起消失。 - 把因子做成极低位。 二值(或极低比特)的因子让这次额外的乘法便宜到可以忽略,也让它更容易落到硬件的整数通路上。这是「补正」和「又加了一个 4 位矩阵」的区别。
- 只补部分层。 离群值重、误差集中的层补,其余层纯 PTQ。层数一多,补正项带来的额外计算会累积。
求解通常在校准集上做逐层最小二乘:固定该层输入,找使输出偏差最小的 A、B。有的工作会把激活分布也加权进去。
与相邻方法的区别
- 和误差反馈量化:后者在同一矩阵内部、按列把舍入残差传给相邻列,是顺序传播;低秩补正是给整个矩阵加一个全局修正项,可以整体一次算完。
- 和正交旋转:旋转改的是分布形状,让量化本身更准(把离群值摊平);低秩补正是量化之后修误差。两者可以叠加,作用阶段不同。
- 和量化感知训练:QAT 在训练时让网络去适配硬件格点,要改训练流程、要原数据;低秩补正是拿到模型就能做的后处理。
用不上的时候
- 硬件没有对应的低位快路径时,收益不确定。 补正项本身也是一次矩阵乘。如果主矩阵本来就没享受到 FP4 的加速,多出来的这一项是净成本。
- 校准集决定补正项的效果。 补正项只有极少的参数,它拟合的是校准集上的误差结构。校准图和部署图不是一回事时,补上去的是别人的偏差。这一点和 4 位量化本身的敏感性是叠加的。
- 权重文件不再是「纯 4 位」。 加载器要认识这个额外的张量,推理图里要多一次算子。换引擎、换芯片、换框架版本,都可能要重新生成补正项。
- 秩不是越大越好。 秩接近满秩时,等价于重新训了一个浮点模型,压缩收益清零。
- 掉点集中在模型没见过的品类上时,补正救不了。 那是覆盖问题,不是量化误差——补的是「见过的东西被压糊了」,不是「没见过的东西」。
- 整体指标只掉零点几个点时,先看掉在哪。 如果错误分散在各品类、没有系统性方向,低秩项能榨出的空间很小,投入产出比不如补样本。
参考
arXiv:2610.32243,BiLoCo: Binary Low-Rank Corrections for Post-Training Quantization(2026-10-23)。摘要指出,面向 FP4 的训练后量化已成为降低大模型推理成本的关键手段,尤其在支持 FP4 的 Blackwell GPU 上;该工作以二值低秩因子构成补偿项,在保持主权重低位宽格式的前提下修正量化误差。
延伸阅读
- 模型压到 4 位,掉的那点精度补在哪 —— 这篇讲的是这件事对门店意味着什么。
相关词条
火眼识别提供端侧视觉引擎与设备管理平台,相关方案见 火眼识别官网。