Token导航 LogoToken导航

AI 资讯 · 科技行者

扩散语言模型量化中校准数据为何成累赘

更新 2026-11-09科技行者正文 8300字阅读约 26分钟

你可能听说过扩散语言模型这个新鲜事物。它不像传统的GPT那样一个字一个字往下写,而是像修照片一样,先给一张全是噪点的"文字照片",然后一步步把噪点去掉,露出完整的句子。LLaDA、Dream这些模型就是这么工作的,它们证明了语言生成这件事,不一定非要从左往右写。

但这篇论文要讲的,不是扩散语言模型本身有多厉害,而是一个让工程师头疼的实际问题:这些模型太大太慢了,想要塞进手机或者边缘设备,就必须想办法压缩它们。而压缩的过程中,研究者们撞上了一堵意想不到的墙。

**量化:是什么让大模型变瘦**

先说说压缩模型这件事到底在做什么。

量化:把模型里原本用16位甚至32位浮点数表示的权重和激活值,压缩成4位甚至更少的低精度数字,从而大幅减少内存占用和计算量。

这就好比你原来用一张高清照片存储一个场景,现在要用马赛克画面来表示同样的内容。马赛克块越大,图片越小,但细节丢失得也越多。模型量化面临的就是这个权衡:精度降得越低,模型跑得越快越省内存,但出错的风险也越大。

对于传统的自回归语言模型,比如GPT那一套,量化技术已经相当成熟了。研究者们发明了各种办法,比如利用二阶导数信息做权重量化的GPTQ,通过缩放手段抑制激活值异常点的AWQ,还有把权重和激活值转换到更适合量化的坐标系的旋转类方法比如QuaRot。这些方法有一个共同点:它们都依赖"校准数据"。

校准数据:在量化之前,先拿一小批真实数据跑一遍模型,记录下激活值的分布范围,用这些统计信息来决定量化的刻度该怎么设。

这就像你要给一批衣服定制尺码表,得先找几个人来量量身材,然后按照这个样本去推算整个系列的尺码区间。听起来合情合理,对吧?

问题是,扩散语言模型的"身材"是会变的。

**核心问题:一个不断变形的目标**

这里就要说说扩散语言模型和传统语言模型最本质的区别了。

自回归模型生成文本时,每一步只预测下一个词,上下文是固定的、已经生成好的那部分。但扩散语言模型不是这样,它在去噪过程中会反复经历不同的"遮盖状态"。

遮盖状态:在扩散语言模型的生成过程里,句子一开始几乎全是特殊的"掩码"符号(类似于完形填空里的空格),随着去噪步骤推进,这些空格逐渐被真实词汇填满,直到整个句子完整。

论文里给出了一个很直观的例子。一开始,句子是"[M] [M] [M] [M] [M] [M]"全是掩码;中间状态可能是"[M] tok tok [M] tok [M] tok"部分填上了词;最后变成完整的句子。在这个过程中,模型每一层每一步看到的激活值分布,都因为"哪些位置还是掩码、哪些已经填上了词"而剧烈变化。

论文作者做了一个实验,追踪了某一层前馈网络中down_proj这个模块的输入激活值,在不同去噪步骤里的变化幅度。结果显示,同一层在不同去噪步骤里,激活值的尺度能相差好几倍,有的地方甚至达到4倍以上的波动。

这就带来一个尴尬的局面:如果你拿某一批校准数据去统计激活值的分布,统计出来的结果可能只反映了某个特定去噪阶段、某种特定掩码状态下的情况,换一批校准数据,换一个任务,统计结果可能就完全不适用了。

论文里有个很说明问题的对比实验。研究者用两种不同的校准数据集,WinoGrande和MMLU,去校准同一个量化方法,然后分别在C-Eval和PIQA这两个基准上测试效果。结果发现,换一种校准数据,准确率就会明显漂移,说明校准这件事本身就不靠谱,它学到的只是某一个切片的统计规律,没法代表整个生成过程里千变万化的激活分布。

这就好比你想给一条河流的水位设计一套固定的预警标准,但这条河是潮汐河,水位每隔几个小时就涨落一次,而且涨落幅度还跟季节、降雨量有关。你只在某个清晨测量了一次水位就定下标准,这套标准到了下午涨潮的时候可能完全不适用,甚至会让防洪系统误判。如果你不去适配这种动态变化,而是死守着某一次测量结果,系统迟早要出问题。

面对这个困境,论文作者换了个思路:与其拼命去追踪这个一直在变的分布,不如想办法把它变成一个不会变的、可预测的分布。这就是这篇论文的核心贡献,叫做SOLOQ。

**旋转的魔法:把混乱变成可预测**

SOLOQ这个名字背后的核心想法其实挺优雅的,它基于一个数学上早就被证明的性质:随机旋转可以让任意方向的向量,变成在球面上均匀分布的样子。

具体来说,如果你有一个向量,先把它归一化成单位长度,再对它施加一个哈尔随机旋转(一种在数学上"完全均匀随机"的旋转方式),得到的结果在高维空间里会呈现一个可以用公式精确描述的分布,而且当维度足够高时,这个分布会非常接近高斯分布,也就是我们熟悉的钟形曲线。

这意味着什么呢?

**不管原始数据长什么样,只要经过合适的旋转,它的坐标分布就会变成一个事先就知道形状的、可预测的分布。**

这就解决了校准依赖的根本问题。你不再需要去"猜"数据长什么样,因为旋转之后,它永远长一个样子。基于这个可预测的形状,你可以提前设计好量化刻度,完全不需要拿真实数据去统计。

这里要提一下这个思路并非凭空而来。此前的OrbitQuant工作已经在图像和视频扩散模型上验证了这个想法,用的是一种叫RPBH的旋转方法。

RPBH(随机置换块哈达玛旋转):先把向量里的元素随机打乱顺序,再把它们分成若干小块,对每个小块独立施加哈达玛变换(一种计算效率很高的结构化旋转),从而用较低的计算代价实现接近随机旋转的混合效果。

但RPBH用在扩散语言模型上会碰到两个麻烦。第一个麻烦是,RPBH依赖最初的那次随机打乱来保证每个小块分到差不多的能量,可一旦输入里有个别数值特别大的异常点,这种均衡就会被打破。第二个麻烦更根本:一旦打乱和分块定好了,每个小块内部的哈达玛变换是各自独立进行的,块与块之间没有任何信息交流,如果某个块本来就分到了特别多或特别少的能量,这种不均衡没法被纠正。

论文里特意举了Dream模型的例子,它的前馈网络维度是18944,拆分成512乘以37个块,块的数量相当多,这种情况下块间能量失衡的问题就被放大了。

于是SOLOQ提出了一个改进版本,叫K-RPBH。

K-RPBH(克罗内克扩展的随机置换块哈达玛旋转):在RPBH的基础上,额外加入一个跨块混合的步骤,用一个哈尔随机正交矩阵把所有小块对应位置上的数值重新混合一遍,从而把残留的块间能量不均衡问题修正掉。

论文给出了一个数学证明(命题1),说明在期望意义上,K-RPBH可以让输出每个坐标的方差都精确收敛到理论目标值1/d(d是总维度)。这个证明不是纸上谈兵,论文还用Dream-7B和Nemotron-Labs-Diffusion两个真实模型的激活值做了验证,结果显示K-RPBH处理后的坐标分布比RPBH更接近高斯目标,块间方差的波动也小得多。

这里不妨做个类比。假设你是个工厂质检员,要把一批零件按照重量分装到16个箱子里,目标是让每个箱子里的总重量尽量接近。RPBH的做法是先把零件随机打乱顺序,然后顺序地一箱一箱装,装完就不再调整了。如果打乱得不够均匀,某个箱子就会特别重,某个箱子特别轻,而且装完之后没法再调整,因为每个箱子已经封箱了。K-RPBH多做了一步:封箱之前,先把16个箱子里对应位置的零件拿出来,重新按照一个全局规则再分配一次,这样即使一开始打乱得不够理想,后面这一步也能把偏差拉平。如果没有这最后一步调整,那些维度特别多、分块特别碎的模型(比如Dream那种拆成几十个块的情况)就会一直带着明显的能量失衡,量化误差也会跟着变大。

论文还比较了K-RPBH和其他几种旋转方法的计算代价,包括QuIP和QuaRot用的稠密或结构化旋转方式。结果显示K-RPBH比完全稠密的哈尔随机旋转要便宜得多,在Fast-dLLM v2上把旋转耗时从98.135毫秒降到了5.779毫秒,同时保持了和稠密旋转差不多的精度表现。

**两条路线:分布匹配码本和硬件原生格式**

旋转之后,数据有了一个可预测的分布形状,接下来就是具体怎么把它量化成低比特数字了。SOLOQ给出了两条并行的路线。

第一条路线叫SOLOQ-C,用的是分布匹配的码本量化。

码本量化:预先根据目标分布的形状,设计出一组"代表点"(码本),量化时把每个数值映射到离它最近的代表点上,而不是简单地按固定刻度切分。

对于权重,SOLOQ-C用的是E8P这种基于格子结构的量化器,这是从QuIP#工作里借鉴来的技术,因为权重是离线处理的,可以承受比较复杂的搜索计算。对于激活值,由于要在推理时实时处理,用的是更轻量的Lloyd-Max标量量化器,这是信息论里一种经典的、针对已知分布设计最优量化刻度的方法。

第二条路线叫SOLOQ-N,直接对接硬件原生支持的NVFP4格式。

NVFP4:一种4比特浮点数格式,使用2位指数3位尾数(记作E2M1),配合分组动态缩放因子,是NVIDIA新一代GPU硬件直接支持的低精度计算格式。

这条路线的好处是可以直接调用GPU芯片里专门为4比特计算优化的硬件单元,跑得更快。SOLOQ-N的做法是先计算每个16个数字一组的局部最大值,再计算整个张量的全局最大值,用这两层缩放因子把数值映射到NVFP4能表示的范围里。

两条路线共享同一套底层逻辑,都是先用K-RPBH把数据旋转到可预测的坐标系,再根据各自的量化器特性做最后一步映射。这种设计思路其实挺聪明的:它没有把"用什么量化器"和"怎么处理分布漂移"这两件事绑死在一起,而是把分布处理这个最难的部分独立出来,做成一个通用底座,上层可以根据硬件条件灵活切换。

这就好比你开了一家快递公司,不管客户寄的是什么形状的包裹,你都先统一装进标准尺寸的集装箱里(这是旋转这一步),装好之后,无论是用卡车运输还是用飞机运输(对应码本量化或NVFP4),你都不需要重新设计包装方案。如果不做这层标准化,每换一种运输方式都要重新琢磨包装规则,维护成本会直线上升。

**一个小修正:把丢失的方向找回来**

低比特量化除了会损失数值精度,还有一个容易被忽视的副作用:它可能会悄悄扭转向量的方向。

用中心点量化器(比如Lloyd-Max)或者有限精度格式(比如NVFP4)去近似一个向量时,量化后的结果和原始向量之间不仅有大小上的误差,方向也可能发生偏移。SOLOQ为此设计了一个很轻巧的修正手段,叫作"纯缩放偏差校正"。

这个校正的数学思路是这样的:把量化误差分解成两部分,一部分是沿着原始向量方向的分量,另一部分是垂直于原始向量方向的分量。通过计算一个缩放系数,可以精确地把沿原方向的那部分分量恢复到和原始向量完全一致的投影长度,而不需要额外存储任何辅助信息,只需要调整已有的缩放因子就行。

这个做法跟此前的一些相关工作,比如用于无偏压缩的DRIVE和EDEN,或者用于无偏内积估计的RaBitQ,思路上有相通之处。但SOLOQ选择的是最简洁的版本,不像TurboQuant那样需要额外的残差草图来做二次修正。

论文的实验显示,这个校正带来的提升虽然数字不大,但稳定存在。在LLaDA-1.5上,HellaSwag的准确率从72.49%或73.71%(两个量化变体)分别提升到73.01%和73.86%;在Fast-dLLM v2上,GPQA从30.03%或31.92%提升到30.58%和33.71%。考虑到这个校正几乎不增加任何计算和存储开销,这笔投入产出比相当划算。

**块扩散模型的特殊挑战:KV缓存**

前面讲的内容主要针对的是"全序列扩散模型",比如LLaDA和Dream,这类模型在每一步去噪时都要重新处理整个序列,没有持久化的缓存。但还有一类叫"块扩散模型"的变体,比如Fast-dLLM v2和Nemotron-Labs-Diffusion,它们的工作方式更接近自回归模型:把序列切成一个个块,逐块生成,已经生成好的块的信息会被缓存下来,供后续块复用。

这个缓存就是KV缓存。

KV缓存:在Transformer模型里,注意力机制需要用到之前所有词元的"键"(Key)和"值"(Value)向量,把这些向量存下来,下一步计算时直接复用,而不用重新计算,这个存储结构就叫KV缓存。

问题在于,随着生成的句子越来越长,这个缓存也会越堆越大,论文的测算显示,在上下文长度达到8000到16000的时候,KV缓存和激活值在内存占用中的比重会显著上升,远超权重本身。

SOLOQ给出的方案是"提交时量化":只在一个块完全生成完毕、被"提交"进历史记录的那一刻才对它的KV状态做量化,而正在被去噪的那个活跃块则保持全精度,不参与量化。

这个设计背后的考量很直接:正在去噪的块的内容还在不断变化,如果这时候就量化,相当于对一个还没定型的东西反复施加精度损失,误差会越滚越大。而已经提交的块内容已经固定下来,只需要被动地存储和复用,这时候量化是安全的。

对于Key,SOLOQ用的是KIVI这种按通道的非对称量化方式;对于Value,则走SOLOQ自己的激活值量化路径,配合K-RPBH旋转和Lloyd-Max或NVFP4量化器。

这好比图书馆管理员在整理归档文件。一份文件如果还在被人翻阅、修改,你不会急着把它压缩打包送进仓库,因为它随时可能还要改动;但一旦这份文件定稿归档了,你就可以放心地把它压缩存档,腾出桌面空间。如果不区分"正在用"和"已经定稿"这两种状态,一律统一处理,要么是让还在变动的内容过早承受压缩损失,要么是让已经定型的内容白白占着没压缩的空间。

**实验结果:数字说话**

理论讲完了,接下来看实际效果怎么样。

论文在三个全序列扩散模型(LLaDA-Base、LLaDA-1.5、Dream-7B)和两个块扩散模型(Fast-dLLM v2、Nemotron-Labs-Diffusion)上做了W4A4量化(权重和激活值都压缩到4比特)测试,对比了多种基线方法,包括简单的RTN(直接四舍五入)、AWQ、QuaRot配合GPTQ,还有专门为扩散语言模型设计的DLLMQuant和STaR-Quant。

在LLaDA-Base上,全精度模型的平均准确率是58.95%,SOLOQ-C达到了57.74%,超过了同样不需要校准数据的RTN(44.23%)一大截,也比需要校准的DLLMQuant++(54.29%)高出3.45个百分点。

在LLaDA-1.5上,SOLOQ-N达到68.48%,比全精度的69.23%只差0.75个百分点,相当接近,比DLLMQuant++高出4.17个百分点。

在块扩散模型这边情况更极端。Fast-dLLM v2上,RTN和AWQ在W4A4设置下直接崩溃,平均准确率只有6.67%和6.61%,基本等于乱答;QuaRot因为模型维度不兼容干脆跑不起来;而SOLOQ-C和SOLOQ-N分别拿到了57.00%和56.77%,和全精度的60.35%相比只差了不到4个百分点。

在Nemotron-Labs-Diffusion上,SOLOQ-N达到70.76%,而QuaRot配合GPTQ只有59.39%,RTN和AWQ更是只有1.3%和1.28%,几乎完全失效。

这组对比其实挺说明问题的:不是所有量化方法都能适应扩散语言模型这种特殊的生成机制,一旦激活分布随着去噪步骤剧烈变化,那些依赖固定校准统计的方法很容易直接失灵。

**效率提升:内存和速度的真实收益**

准确率保住了,那压缩带来的实际好处有多少?

论文用真实的GPU硬件做了端到端测试。SOLOQ-N在NVIDIA RTX Pro 6000上跑原生NVFP4内核,在五个模型上实现了2.31倍到2.61倍的峰值显存下降,主要来自4比特权重存储,对于块扩散模型还额外受益于KV缓存压缩。端到端推理速度也提升了1.94倍到2.24倍。

论文甚至还做了一次FPGA硬件实现的验证,在Zynq UltraScale+ ZCU104开发板上搭建了一个脉动阵列加速器,对比BF16和NVFP4两种数据通路。结果显示NVFP4加速器功耗反而比BF16低15%,因为同样的面积下可以塞入两倍的计算单元,整体吞吐量提升了1.94倍,每千焦能量能处理的词元数提升了2.70倍。这说明SOLOQ不只是在数据中心的大GPU上有用,在资源受限的边缘设备上同样有实际价值。

**代价与权衡:没有免费的午餐**

论文也坦率地指出了SOLOQ的一些局限。

激活值的旋转是在线实时进行的,这部分开销虽然已经通过K-RPBH的结构化设计降到很低,但终究不是零成本。论文尝试把这个旋转"折叠"进相邻的权重矩阵里,让它变成离线操作,但实验发现这种折叠方式在低比特量化下会造成额外的精度损失,尤其是在Fast-dLLM v2这样的块扩散模型上,折叠后的W4A4平均准确率从57.00%跌到50.94%,跌幅相当明显。这说明折叠虽然诱人,但不是免费的午餐。

另外,SOLOQ-C用的非精度码本在实际硬件上只能用INT8内核来跑,没法直接享受4比特专用计算单元带来的速度红利,这也是它的加速效果不如SOLOQ-N的原因之一。而SOLOQ-N虽然速度更快,但完全依赖硬件对NVFP4格式的原生支持,如果设备不支持这种格式,加速效果就要打折扣。

论文最后还做了一个很细致的分析,关于"注意力沉锚"现象。

注意力沉锚:在Transformer的注意力机制里,某些固定位置(比如序列开头)会异常地吸引大量注意力权重,这种现象在自回归模型里早有发现,论文验证了它在块扩散模型里同样存在。

实验显示,Fast-dLLM v2在位置2出现明显的注意力集中,Nemotron-Labs-Diffusion则集中在位置0。论文测试了把这些"沉锚位置"保持全精度、其余位置正常量化的效果,发现在普通的4比特KV量化下,这种特殊保护几乎没有必要,带不带差别很小;但如果把KV压缩到2比特这种极端情况,保护沉锚位置就变得有意义了,能带来明显的准确率提升。这个细节提醒我们,压缩技术的边际效应往往不是线性的,越往极端走,原本可以忽略的细节就越可能变成关键因素。

写在后面

读完这篇论文,最让我意外的不是K-RPBH的数学设计,而是那个关于校准数据失效的观察本身。

我们习惯性地认为,只要拿到更多、更有代表性的真实数据去校准,模型压缩的效果就会更好。这个直觉在传统语言模型上是成立的。但扩散语言模型打破了这个假设,因为它的激活分布根本不是一个稳定的目标,而是随着去噪步骤和掩码状态不断变形的东西。这种情况下,"用更好的数据去校准"这条路可能从根本上就是错的方向,因为你永远追不上一个一直在动的靶子。

这让我想到一个更普遍的问题:很多工程优化的默认假设,其实都建立在"目标分布大致稳定"这个前提上。一旦这个前提被打破,原来的最佳实践反而可能变成负担。SOLOQ的做法,与其说是一个量化技巧,不如说是一次对假设前提的重新审视,它没有去修补校准这条路,而是直接绕开了它。

论文里还有个细节我觉得值得单独拎出来说。作者提到K-RPBH比QuaRot"需要更少的变换操作",而且QuaRot在某些模型维度上根本不适用(论文里标注为N/A)。这不是一个孤立的技术细节,它说明现有的很多旋转量化方法,其实是针对特定维度结构设计的,一旦遇到Dream那种18944维、拆成512乘37块的"不规则"结构,这些方法直接失效。K-RPBH选择用克罗内克积这种数学工具去兼容任意维度组合,这背后其实是对"通用性"这件事的较真。

那些正在被去噪、还没定型的KV块该怎么处理这件事,SOLOQ给出的答案是"先别动它"。这种克制本身也是一种设计智慧,不是所有能压缩的东西都应该立刻压缩。

Q&A

Q1:SOLOQ是什么,它解决了什么问题?

A:SOLOQ是一种针对扩散语言模型的免校准量化框架。它通过把权重和激活值旋转到一个分布可预测的坐标系里,解决了传统量化方法依赖校准数据、但扩散语言模型激活分布随去噪步骤剧烈变化导致校准失效的问题。

Q2:SOLOQ相比传统量化方法有什么优势?

A:SOLOQ不需要任何校准数据就能达到甚至超过依赖校准数据的方法效果。在多个扩散语言模型上,它在4比特量化下的准确率优于DLLMQuant、STaR-Quant等基线,同时结合NVFP4硬件格式能实现最高2.61倍的内存压缩和2.24倍的推理加速。

Q3:K-RPBH旋转和普通的RPBH旋转有什么区别?

A:K-RPBH在RPBH的基础上增加了一个跨块混合步骤,用随机正交矩阵把各个小块对应位置的数值重新混合,解决了RPBH在块数较多时容易出现的块间能量不均衡问题,使最终的坐标分布更接近理想的高斯分布。

文章标签大模型

资讯来源:由AI资讯编辑整理自互联网公开内容,版权归原作者所有,未经许可,不得转载。