微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 大模型压缩到4比特还能保住精度?关键在于旋转要对齐量化器的"免费通道"

大模型压缩到4比特还能保住精度?关键在于旋转要对齐量化器的"免费通道"

2026-10-22 19:42
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-22 19:42 • 科技行者

你有没有想过一件事:给一个大语言模型做低比特量化的时候,工程师们拼命想办法把激活值里的"离群点"压平、削弱、转移,好像这些异常大的数值是万恶之源。但如果告诉你,问题根本不在于数值大不大,而在于这些大数值出现的位置对不对呢?

这就是这篇论文想讲的故事。研究者们发现一个此前被忽略的事实:同样大小的激活异常值,放在量化器"看得见"的地方和放在量化器"看不见"的地方,造成的伤害完全不同。而所谓"看不见"的地方,并不是什么玄乎的概念,恰恰是每个分组量化方案里都存在的一个免费储物柜,只是过去几乎没人想到要专门往里面塞东西。

4比特量化卡在哪里

先说说背景。把大语言模型的权重和激活值都压缩到4比特(也就是W4A4,外加KV缓存也压到4比特,简称W4A4KV4),是业界公认的"降本增效"利器,因为内存占用和计算开销都能大幅下降。但这条路一直不好走。

*激活各向异性*:指的是模型内部的激活值分布很不均匀,少数几个通道或者某些方向的数值特别大,其余大部分数值相对很小。这就好比给全班同学的分数打包统计,却有一两个人考了满分外加加分题,拉爆了整个统计区间的量程,导致其他同学的真实分数差异全被淹没在这个超大量程里。

之前主流的解决思路是用旋转变换,比如QuaRot用固定的Hadamard矩阵,SpinQuant训练一个可学习的旋转矩阵,DuQuant把通道重排和分块旋转结合起来。这些方法的共同点是,它们都在想办法把集中的能量"打散",让原本几个突出的方向被摊平到整个空间里,这样量化器就不会因为个别方向的极端值而浪费太多量化区间。

这个思路听起来很合理,但这篇论文的作者们指出了一个反直觉的现象:打散能量并不等于对量化友好。他们观察到,如果一个激活分量在某个分组内部是均匀分布的(也就是说这个分组里所有数值几乎相等),即便这个数值本身很大,它也几乎不会拉大这个组的量化范围。反过来,如果用Hadamard变换强行把一个原本集中的方向打散成类似高斯分布的噪声状,即使总能量没变,组内的极差反而会变得更大,量化器需要用更粗的刻度去覆盖这个更宽的范围,精度反而受损。

这就引出了论文标题里"Null-Space"(零空间/免费通道)这个说法的真正含义。

*非对称分组量化*:这是目前主流的激活量化方式,把一串数值切成若干小组(比如每128个数一组),每组单独算一个缩放系数(scale)和一个偏移量(zero-point),存成fp16格式。偏移量的作用是把这组数值的最小值先减掉,让量化的起点对齐到0。

关键的观察是这样的:如果一个组内所有数值完全相同,比如都是10,那量化器根本不需要用编码位去表示这个"10",直接把偏移量设成10,编码全部是0就搞定了,范围是0,缩放系数无所谓,信息完整保留还不占用编码空间。换句话说,每个分组量化器天生自带一个"免费方向",专门用来装下组内恒定不变的那部分数值,由偏移量买单,完全不占用那可怜的4比特编码空间。

这就是论文里说的"组常量子空间",简写为S。一个d维的激活向量,分成组大小为g的若干组,就有d/g个这样的免费方向。

把最大的能量塞进免费通道里

想明白了这个免费通道的存在,接下来的问题就是:怎么把激活里能量最大的那部分,恰好旋转进这个通道?

这里论文给出了一个漂亮的数学处理。他们把这个问题变成了一个纯粹的谱分析(spectral)问题,专业说法叫Ky Fan迹最大化(Ky Fan trace maximization)。

*Ky Fan最大值原理*:这是一个经典的矩阵理论结果,说的是如果你想让一个矩阵的某个二次型(可以理解成"能量")在若干个正交方向上尽可能大,那么最优解一定是取这个矩阵最大的那几个特征值对应的特征向量。

具体到这个场景,研究者们先统计激活值的二阶矩(可以简单理解成激活的协方差结构),找到里面能量最集中的那几个"主方向"(用特征向量表示)。然后设计一个旋转矩阵,把这几个主方向精确地映射到刚才说的组常量子空间里去。因为这是一个纯数学上的最优化问题,所以这个解是可以证明的最优解,不需要靠梯度下降去试错调参。

这里必须打一个比方,因为它能说明这个设计的必要性到底体现在哪里。

想象你是仓库管理员,仓库里有很多货架(对应量化分组),每个货架都设定了一个免检额度:只要一整箱货物的重量是均匀分布在箱子里的一样重的小件,可以直接按整箱申报,不用逐件过秤登记。现在你手里有一批特别沉的货物(对应激活里能量最大的主方向),如果你把它们随手拆散平摊进每个箱子的角落里(相当于Hadamard的做法),每个箱子看起来都多了一点重量波动,过秤的时候还是得精细称量,免检额度一点没用上。但如果你把这批沉货物整箱打包,恰好凑成一箱重量完全均匀的货(对应组常量方向),直接走免检通道申报总重量就完事了,货架的称重精度可以完全留给剩下那些真正参差不齐的杂货。PrismQuant做的就是后面这件事:不是把大数值打散藏起来,而是精心计算好,让它恰好整箱打包过免检。

如果不这么设计会怎样?论文里的实验数据说得很清楚。在Llama-3.2-3B的下投影层(down-projection)输入上,PrismQuant相比Hadamard把组内平均量化范围从1.76降到了0.84,组内量化误差(NMSE)平均下降了40%。这不是几个百分点的优化,而是接近腰斩的效果。

*Householder反射*:这是一种经典的正交矩阵构造方法,通过一系列镜面反射操作,把指定的向量精确映射到指定的坐标位置上。

*紧凑WY表示(compact-WY representation)*:是把多个Householder反射合并存储成两个瘦长矩阵的技巧,原本需要存储一个d×d的稠密矩阵,现在只需要O(dk)的存储量(k是对齐的方向数,通常远小于d),计算量也从O(d?)降到O(dk)。

具体实现上,研究者用Householder反射把前k个主特征方向逐一映射到坐标锚点上,再用一个符号排列把剩下坐标摆好位置,最后用分块的Hadamard矩阵把每个锚点坐标变成对应组的常量方向。整个变换只需要O(dk + d log g)的计算量,不需要梯度训练,标定完就固定下来。

秩k(也就是要显式对齐的主方向个数)是一个可调参数,论文实验发现,k=8就已经能拿到大部分收益,继续加大到k=max的边际收益会因模型而异,并不总是单调提升。这一点很有意思,因为它说明对齐目标虽然是数学上严格最优的,但真正落到具体模型和真实文本上时,少数几个主导方向已经把大头能量吃掉了。

变换要怎么塞进Transformer的各个环节

光有理论上的最优旋转还不够,得想办法把这个旋转塞进真实的推理流程里,并且不能增加太多额外开销。

论文里把Transformer内部分成几个关键位置分别处理。残差流(residual stream)上的旋转R1因为每一层都读写同一条流,所以可以完全"折叠"进相邻的权重矩阵里,推理时不需要额外计算。value投影之后的R2类似,逆变换也能折进输出投影权重里。真正麻烦的是下投影层的输入R4,因为它前面有一个SiLU激活函数这种非线性的门控操作,旋转没法直接穿过去合并,只能在线实时计算。

*折叠(fold)*:指的是把一个旋转变换和相邻的线性层权重矩阵直接相乘合并成一个新权重,这样推理时就不需要单独执行这个旋转操作了,等于把它"消化"进了原本就要做的矩阵乘法里,不增加额外步骤。

对于这个必须在线计算的R4,论文把它拆解成了一个分块Hadamard变换加上一个秩为k的低秩修正项,这个结构刚好可以映射成两个轻量的Tensor Core内核(GPU上专门做矩阵乘法加速的硬件单元),几乎不产生额外开销。

这里还得提一嘴KV缓存。*KIVI*是此前一种针对键值缓存的量化策略,思路是键(key)按通道分组量化、值(value)按token分组量化,同时保留最近若干个token的全精度值以减少误差累积。PrismQuant在此基础上,给value加了一个按头维度对齐的旋转R2,由于每个注意力头正好是一个量化组,这里对齐一个主方向就够了。

再打一个比方来说明为什么R4非要在线算不可。假设你在搬家,大部分家具可以提前打包好放进集装箱(对应折叠进权重),集装箱怎么摆放顺序都定好了,直接运走。但有一件家具是个可折叠的躺椅,它的形状要等你到了新家现场根据房间朝光的角度调整完才能定型(对应SiLU这种非线性操作),你没法在出发前就把它塞进箱子摆好,只能带着工具到现场临时调整。如果硬要提前固定好角度,新房间的采光根本对不上,躺椅摆歪了反而占地方还不舒服。这就是为什么R4必须做成在线执行的轻量修正,而不能像R1、R2那样提前打包合并进权重里。

分组大小是个双刃资源

论文还揭示了一个此前容易被忽略的联动关系:分组大小g,不仅决定了量化的精细程度,还决定了免费通道的容量。

分组越小,每组的缩放系数和偏移量就越多,组常量子空间的维度d/g也就越大,能装的对齐方向就越多。但分组变小也意味着要存储更多的fp16元数据(每组一个scale加一个offset),存储开销会上升。

论文推导了一个*range law(量化范围法则)*,用于预测经过对齐之后,量化步长大概会缩小到什么程度。核心结论是:量化步长大致按照根号下(1减去被对齐吸收的能量占比)这个规律缩放,并且这个规律只依赖一个经验测得的"波峰因子"比值,不需要额外拟合参数。

有意思的是,论文用一个"账本匹配"的实验直接对比了两种资源分配方式:同样的存储预算下,把分组从256砍到128(元数据涨一倍,但对齐容量也翻倍),和在分组256的基础上多存两个额外的对齐方向(元数据涨幅相同,但对齐容量增加没那么直接),哪个更划算。结果是,在两个测试的Llama模型上,分组减半都优于加两个方向。也就是说,让免费通道变多,比在原有通道旁边硬塞几个收费的备用通道更有效。

打个比方,这就好比一个停车场,你面临两个选择:一是把车位重新规划得更密一些,单个车位变小但总车位数翻倍(分组减半);二是保持原有车位大小不变,但在旁边加盖两层立体车库(增加对齐方向)。听起来立体车库容量更大,但盖车库需要额外占地和造价,如果车流本身分布规律,更密集的平面车位反而能用更低成本达到接近的利用率。研究者的实验说明,至少在他们测的场景下,细分车位的性价比更高。

数据说话:从3B到70B全线验证

方法说得再漂亮,最终还是要看效果。论文在Llama、Qwen、Mistral三个家族上做了大量实验,规模从0.6B一路测到70B,还专门测了一个30B参数的混合专家模型(MoE)。

在Llama-3.2-3B上,W4A4KV4量化下,PrismQuant拿到了8.58的WikiText-2困惑度(越低越好)和61.23%的八任务零样本平均准确率,是所有对比方法里最好的。相比同样条件下的Hadamard基线(困惑度9.04,准确率59.29%),困惑度和准确率都有明显提升。

在Llama-3.1-70B这个更大的模型上,PrismQuant达到3.85的困惑度和72.46%的平均准确率,离全精度(bf16)基线只差0.22个百分点。这个数字意味着什么呢?一个700亿参数的模型,压缩到4比特之后,精度几乎没有肉眼可见的损失,这对于实际部署的意义相当直接:同样的硬件,能跑更大的模型,或者同样的模型跑得更快更省显存。

混合专家模型Qwen3-30B-A3B上,PrismQuant给每个专家单独配一个旋转,路由器保持不变,结果找回了Hadamard损失掉的85%左右的准确率,八个任务全部超过Hadamard,离全精度只差0.19个点。

部署层面,论文在Llama-3.1-8B上做了真实的GPU测速。用两核Tensor Core实现的秩k修正,集成进打包的INT4流水线加上CUDA Graph重放机制后,相比FP16基线实现了1.51倍的预填充(prefill)吞吐提升和1.22倍的解码(decode)加速,解码阶段峰值显存降低了56.34%,而相比Hadamard基线,额外的解码延迟只增加了2.35%。换句话说,这套更精巧的旋转方案,并没有为了精度牺牲速度,几乎是"免费"拿到的额外收益。

那些让人意外的细节

论文里有几个消融实验的结果值得单独说一下,因为它们回答了一些读者可能会本能产生的质疑。

第一个问题是:这个收益到底靠不靠谱,会不会对校准数据特别敏感?论文测试发现,校准序列从64条增加到256条,或者干脆换一个完全不同的语料库(从WikiText-2换成C4),困惑度的变化都在7%以内。也就是说,这个方法对具体用什么数据来估计主方向并不挑剔,鲁棒性相当好。

第二个问题更有意思:对齐效果是不是必须依赖那个免费的偏移量通道?论文专门做了对照实验,把量化器换成没有偏移量的对称量化格式,结果发现PrismQuant相对Hadamard的优势幅度几乎不变。这说明真正起作用的,并不只是"有没有免费仓库可以塞",而是旋转本身让残留下来的那部分信号变得更"平"了,极差更小,不管量化器收不收这部分信号的存储费,残差本身就已经更友好了。当然,偏移量确实还是贡献了大约四分之一的收益,尤其是在只用一个组覆盖整个token的极端情况下,偏移量的贡献能占到接近七成。

第三点是关于校准subspace(子空间)怎么选的争议。此前有一类方法(比如OffQ)的思路是只挑每个序列里数值最大的那个token来定义要对齐的方向,类似"擒贼先擒王"的策略。论文做了严格对照,发现用全部校准token统计出来的方向,效果稳定优于只挑极端token的方案,而且极端token方案严重依赖BOS(句首)这个特殊token,一旦把BOS从候选集里剔除,效果直接掉到跟完全不做对齐的Hadamard差不多。这说明,少数极端token确实抓住了大部分收益(能拿到全token方案大约四分之三的效果),但要拿到剩下那部分,还是得靠全体token的统计信息。

写在后面

读完这篇论文,最触动我的其实不是那个漂亮的Ky Fan最优化证明,而是它提醒了一件很容易被忽略的事:优化一个系统的时候,我们习惯性地把"问题"定义为"异常值太大",然后拼命去压制异常值本身。但PrismQuant换了一个提问方式:异常值大不是问题,异常值出现在错误的坐标系里才是问题。

这种思路的转换其实挺有启发性的。很多工程优化问题里,我们默认目标函数是"让某个指标变小",却没有回头看一眼,那个指标的计算规则本身有没有天然的"免检通道"可以利用。分组量化器的偏移量,原本只是一个技术细节,是为了让每组数值对齐到0而设计的,没人特意把它当成一个可以主动利用的资源位。这篇论文的贡献,某种程度上是重新发现了一个已经存在但被忽视的结构。

另一个让我意外的细节是,信号变得更"平"这件事,比信号被免费存储更重要。这提示我们,一个系统里表面上看起来是"存储优化"的问题,底层可能是"分布形状优化"的问题,两者未必是一回事,但很容易被混为一谈。

论文最后提到一个还没解决的方向:如果未来有一个原生支持分组非对称激活的INT4矩阵乘法内核,现在测出来的那点额外开销可能会彻底消失,变成一个纯粹的检查点级别的系统方案。这个设想挺让人期待,但也留了一个问题:硬件层面的适配往往比算法层面的创新要慢得多,这中间的时间差,会不会让类似PrismQuant这样精巧的算法设计,还没等到硬件跟上就被新的架构范式绕过去了?

Q&A

Q1:PrismQuant是什么?

A:PrismQuant是一种大语言模型量化旋转框架,核心思路是把激活值里能量最集中的方向,通过数学上可证明最优的旋转,对齐到分组非对称INT4量化器天然自带的组常量子空间(由偏移量表示),从而在不增加存储开销的情况下减小组内量化范围,提升4比特量化精度。

Q2:PrismQuant相比Hadamard旋转量化方法有什么优势?

A:在Llama-3.2-3B上,PrismQuant把组内平均量化范围降低约25%,激活量化误差降低约40%,困惑度和零样本准确率均优于Hadamard;在Llama-3.1-70B上准确率仅比全精度模型低0.22个百分点,部署时额外延迟开销仅2.35%,同时显存节省超50%。

Q3:PrismQuant需要训练吗,计算成本高不高?

A:不需要梯度训练。整个旋转矩阵通过校准数据的二阶矩统计和闭式谱分解一次性构造完成,用紧凑Householder变换实现,计算复杂度约为O(dk),相比稠密旋转的O(d?)大幅降低,可在线折叠或以低秩修正方式高效运行。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-