量化健愈术:如何让瘦身又压缩的大模型重新变强

2026年初,Multiverse Computing的工程师们遇到了一件挺尴尬的事。
他们手里有一个1200亿参数的大模型GPT-OSS 120B,先是用张量网络技术把它压缩到了600亿参数,一半的体积。接着又想把这个瘦身版进一步压成4比特精度,好让它能塞进更小的硬件里跑起来。
这套组合拳打下来,模型是变小了,但推理能力、数学解题、写代码的水平也跟着大幅跳水。按照行业里的常规做法,接下来应该用一种叫**量化感知训练**的技术来"补血"。
量化感知训练(QAT)*:在训练过程中模拟量化误差,让模型权重提前适应低精度表示的一种技术,业界处理这类问题的默认方案。
结果呢?团队发现这个默认方案根本不好使。用QAT去补救这个经过两道压缩工序的模型,训练进度慢得让人心焦,而且一旦训练过了某个临界点,模型性能会突然崩盘,一泻千里。这就是这篇论文要讲的故事:一个关于"标准做法失灵之后,工程师们怎么自己摸索出新路子"的真实案例。
**这件事最后的答案,被他们称为"量化感知健愈"(Quantization-Aware Healing,QAH)**。
论文里管这个恢复模型能力的过程叫"healing",也就是"治愈"或者"健愈",这个词选得挺讲究,因为它暗示了一个前提:模型本来是健康的,是压缩这个手术让它"受伤"了,现在需要把它"治好"。
压缩之后,为什么模型会"生病"
要理解QAH到底解决了什么问题,得先搞清楚这个"压缩流水线"具体经历了哪几道工序。
一个正常训练好的大模型,我们叫它MHP(这里HP代表human-preference,也就是经过了监督微调、人类反馈强化学习等多阶段后训练的原始模型),会先经历"结构压缩"。
结构压缩*:通过删减注意力头、前馈神经元或整层网络等方式,直接改变模型架构以减少参数量的压缩手段,和"量化"这种只改变数字精度的压缩方式不同。
这一步会把120B的模型直接砍到60B,参数量减半。但这里有个关键点:这个压缩之后的中间产物,从来没有在全精度状态下被独立训练过。它的权重是靠一个压缩算子从原模型"推导"出来的,而不是从零训练出来的。
所以在量化之前,团队还得做一次"全精度恢复":把这个刚被砍过的模型,通过对原始120B模型做知识蒸馏,恢复一部分因为结构压缩而丢失的能力,产出一个bfloat16格式的检查点。
知识蒸馏*:让一个"学生"模型去模仿"教师"模型的输出概率分布,而不是直接学习标注好的正确答案,这种训练方式最早由Hinton等人在2015年提出。
bfloat16*:一种16比特的浮点数格式,精度比32位浮点数低但比4比特量化高得多,是很多大模型训练和存储时的常用格式。
到这一步,模型已经经历了两次"变形":结构上被砍掉一半,然后又靠蒸馏勉强补回来一部分能力。但问题是,这个恢复出来的bfloat16检查点,本质上仍然是对原始120B模型的一个"近似复制品",它的天花板早就被压缩操作锁死了,蒸馏只能让它逼近这个天花板,不可能超越。
最后一步才是量化:把这个bfloat16检查点转成MXFP4格式,也就是4比特精度。
MXFP4*:一种"微缩放"(microscaling)4比特浮点格式,用分块的方式共享指数位,从而在极低精度下依然保留大部分模型能力,是OpenAI公开发布的GPT-OSS系列模型采用的量化格式。
到这里,模型经历了完整的"结构压缩+全精度恢复+4比特量化"三部曲,每一步都在往外掉血。
标准疗法为什么在这里失效
行业里针对"量化掉血"这个问题,其实已经有一套现成的解决方案,叫做量化感知蒸馏(QAD),由NVIDIA在2026年正式提出并系统化。
量化感知蒸馏(QAD)*:用一个冻结的全精度模型作为教师,让量化后的学生模型通过KL散度去匹配教师的输出分布,从而修复量化带来的精度损失。
QAD这套方法有个隐藏前提:教师模型和学生模型必须是同一个架构,只是精度不同。比如一个全精度的120B模型和它量化后的120B模型,架构完全一样,只是数字表示方式变了。这种情况下,QAD效果拔群,因为教师就是学生"没被量化之前的自己",血缘关系再纯正不过。
但一旦流水线里插入了"结构压缩"这一步,这个前提就彻底崩塌了。
想象一下,你想找一个"参照物"来指导你健身恢复体能,如果你只是感冒了几天没锻炼(相当于纯量化),那找回到生病前的自己做参照,完全合理,因为那就是你巅峰状态的真实记录。
但假如你不只是生病了,还做了一场截肢手术(相当于结构压缩),那么继续拿"生病前四肢健全的自己"作为康复目标就完全说不通了,因为现在你的身体结构已经不一样了,不可能恢复到手术前的状态。这时候唯一合理的参照,是找一个身体结构和你现在这个"新身体"完全匹配、且同样强壮的人,而不是执着于恢复到那个已经不存在的旧身体。
论文里的说法更直白:那个作为QAD教师候选的bfloat16恢复检查点,本身就是个"蒸馏出来的近似品",它自己就带着结构压缩造成的能力损失。如果拿它当老师去教量化后的学生,相当于让一个先天有缺陷的老师去教学生,学生的上限直接被焊死在老师的水平线上,怎么可能超越?
这正是QAH要解决的根本矛盾:**当压缩流程里混入了"改变架构"这一步之后,唯一称职的老师,只能是那个从未被压缩过、架构完整的原始模型。**
QAH的核心设计:换个更强的老师
QAH的做法说起来简单得让人意外:既然bfloat16那个恢复检查点不够格当老师,那就直接绕过它,让4比特量化后的学生模型,直接向那个从未被动过的原始120B模型学习。
论文里给出的损失函数是这样的:
LQAH = KL散度(原始模型的输出分布 ‖ 量化学生模型的输出分布)
这里教师模型MHP和学生模型MFP4的架构完全不同,一个是完整的120B参数模型,一个是砍掉一半又量化到4比特的60B模型。学生完全靠"看老师怎么说话"来学习,不接触任何标注好的正确答案。
跨架构蒸馏*:教师模型和学生模型的网络结构不需要一致,学生只需要学习教师的输出概率分布,这个技巧在BERT压缩、视觉语言模型剪枝等领域已有先例,比如DistilBERT和TinyBERT。
这里有个特别值得琢磨的细节:原始的120B教师模型,本身权重也大多是MXFP4格式的。也就是说,QAH并不是拿一个"更高精度"的老师去教一个"低精度"的学生,教师和学生的数字精度其实差不多。真正起作用的差别,不是精度高低,而是架构完整与否。这一点论文特意强调了,因为很容易被误解成"精度更高的老师带来更好效果",但实际上带来提升的核心变量是"教师没有被结构压缩过"。
这就好比两个厨师用同样等级的食材(精度相同),一个是完整学过整套菜系的老师傅(架构完整),一个是学徒时中途被砍掉了一半课程、又靠自学补回来的半吊子(结构压缩过再恢复)。哪怕两人用的原材料一模一样,教出来的徒弟水平也天差地别,因为老师傅传授的是完整体系里沉淀下来的判断力,而半吊子传授的东西本身就有缺口。**如果不换掉这个半吊子老师,学生的能力提升永远有上限;换成完整体系的老师傅,学生反而有机会超过半吊子老师,逼近甚至匹敌完整体系本身。**
论文标题图里画得很清楚:原始模型经过压缩和量化变成"压缩学生",能力大幅缩水;而QAH机制里,教师的logits是从原始模型离线预先算好的,冻结不参与梯度更新,通过KL散度直接更新学生权重,绕开了那个有缺陷的中间检查点。
logits*:神经网络在softmax归一化之前的原始输出分数,通常用来衡量模型对每个可能输出的"信心程度",蒸馏训练中常用来传递比"最终答案"更丰富的信息。
量化阶段不是负担,而是第二次补课机会
这篇论文里我觉得最反直觉的一个发现是:4比特量化后的模型,居然普遍比它自己的bfloat16"前身"更强。
按常理想,量化是往模型里"做减法",理应让模型更弱才对。但研究团队做了个对照实验,把三个检查点摆在一起比较:原始120B教师模型、结构压缩并恢复后的60B bfloat16模型、以及用QAH方法量化到4比特的60B模型。
结果显示,在9个测试基准里,量化后的4比特模型在其中7个上都追平或超过了它自己的bfloat16版本。差距最大的几个提升是:长文本推理基准AA-LCR上涨了7.4分(从35.3涨到42.7),数学竞赛基准AIME 2025上涨了5.6分(从70.7涨到76.3),代码智能体基准Aider上涨了2.7分,工具使用基准τ?-bench上涨了2.3分。
这个现象背后的逻辑其实并不神秘:**量化阶段本身也用了QAH方法,也就是又做了一次针对120B原始模型的KL散度蒸馏**。
换句话说,bfloat16那个中间检查点只经历过一次"补课"(结构压缩后的那次恢复),而最终的4比特模型经历了两次补课,量化阶段等于是白捡了一次额外的向原始教师学习的机会。论文里管这叫"量化不是待最小化的有损后处理步骤,而是添加能力的一个机会"。
这就好比你先请了一次家教补习数学(对应结构压缩后的bfloat16恢复),过了一阵子你打算换个便宜点的教材(对应量化,通常被认为会让水平下降),结果换教材的时候你又额外蹭了一堂课(量化阶段又做了一次蒸馏)。如果这堂课蹭得好,你换了便宜教材之后反而考得比换教材前还好,这听起来有点反直觉,但道理很简单:决定你成绩的从来不是教材贵不贵,而是你上了几次有效的课。**如果量化阶段没有加这次蒸馏,只是简单地把bfloat16数字截断成4比特,那模型能力肯定是要往下掉的,团队自己也承认这一点。**
更让人意外的是,在代码能力测试LiveCodeBench上,这个只有一半参数、还被压缩成4比特的60B模型,得分66.5,居然略微超过了参数量两倍的原始120B教师模型(66.0分)。当然论文作者很谨慎地说这个差距在噪声范围内,只能算"追平"而不是"超越",但即便打个折扣,这个成绩也足够惊人:**用四分之一的存储空间、一半的参数量,做到和满血教师模型旗鼓相当的代码能力。**
不过也不是每个指标都这么美好。在通用知识测试MMLU-Pro上落后0.2分,在科学编程测试SciCode上落后1.4分,差距不大但确实存在。而在长文本推理基准AA-LCR上,量化后的学生模型和原始120B教师之间还有7.3分的差距,这是所有测试中差距最大的一项,论文解释说这是因为长文本能力在结构压缩阶段损失最严重,最难完全补回来。
下面这张表格是三个模型在9个基准上的具体分数对比:
| 基准测试 | 原始120B (MXFP4) | 60B恢复版 (BF16) | 60B健愈版 (MXFP4, QAH) |
|---|---|---|---|
| MMLU-Pro(通用知识) | 78.0 | 74.0 | 73.8 |
| AIME 2025(数学) | 80.0 | 70.7 | **76.3** |
| GPQA Diamond(科学) | 69.0 | 65.7 | 67.4 |
| IFBench(指令跟随) | 63.3 | 58.4 | 59.9 |
| SciCode(科学编程) | 37.5 | 35.6 | 34.2 |
| LiveCodeBench(代码) | 66.0 | 65.5 | **66.5** |
| τ?-bench(工具使用) | 68.4 | 59.4 | **61.7** |
| Aider(代码智能体) | 45.3 | 38.2 | **40.9** |
| AA-LCR(长文本推理) | 50.0 | 35.3 | **42.7** |
在效率账上,这个4比特模型比bfloat16版本省了大约4倍的存储空间,加上参数量本身减半,推理时的计算量大约省了一半。论文还提到,如果换成本来就是以bfloat16发布、而不是MXFP4发布的模型系列(比如Qwen),结构压缩加精度压缩这两重叠加,节省的计算量可能能达到8倍。
QAT为什么会"训练到崩盘"
光看峰值精度,QAH和作为对照的QAT基线其实打得有来有回。团队在另一个配置上(20B压缩到9B)做了对比实验,两者都能达到大约54.9和54.6的平均分,看着差不了多少。
但如果只看峰值分数就下结论,等于错过了这篇论文最重要的一个发现。
真正的差别出现在"用多少训练步数才能到达峰值"以及"到达峰值之后会发生什么"这两个维度上。
QAH大约100步就能到达峰值,之后一直稳定保持在峰值附近上下两分以内,一直训练到1200步都没有崩。而QAT呢,要训练到大约700步才能勉强追上QAH的峰值,可一旦越过这个峰值继续训练下去,性能就开始雪崩式下滑,到1200步的时候已经从峰值的54.6分掉到了大约36分,足足丢了将近19分。
19分是什么概念?相当于这个模型原本能答对的题目,训练"过度"之后差不多每5道题就要多错1道,而且这种下滑是不可逆的,一旦跌下去就上不来了。
这个现象背后的原因,论文归结为两种损失函数天生的性格差异。
QAH用的KL散度蒸馏,本质上是在"锚定"学生的输出分布去贴合教师的分布,一旦学生学得足够像了,损失函数自然就没有动力再让它继续"漂移"了,这是一种带着刹车的学习方式。
而QAT用的是传统的交叉熵损失,直接对着标准答案做优化,这种损失函数没有"够了就停"的机制,只要还在训练,它就会一直推着模型往标准答案的方向挤压,久而久之,这种持续的推挤会把模型从原始教师那里继承来的一些能力也一并磨掉了。
这就像两种不同的健身教练风格。一种教练(QAH)看你动作标准了就让你保持住这个动作,不会硬逼你继续加码,因为目标本来就是"练回原来的水平",练到位了自然收手。另一种教练(QAT)只认一个死规矩,必须每次都举更重的杠铃才算达标,完全不管你身体状态,结果你确实一开始进步很快,但过了某个点继续硬练,反而把身体练伤了,力量不增反降。**如果没有一个人在旁边死死盯着,随时准备喊停,QAT这种练法迟早要把人练废,这就是为什么论文里说QAT必须靠"手动调好的提前停止点"才能安全地部署,这在生产环境里是一种持续存在的运维负担。**
论文特别提到一句,这种QAT式的训练崩溃现象,在NVIDIA同期关于NVFP4蒸馏的研究里也被观察到了,说明这不是团队自己踩到的孤立坑,而是一个更普遍的规律。
部署路上踩过的几个大坑
除了核心方法本身,这篇论文还老老实实地把团队在实际部署过程中踩过的坑写了出来,这部分内容其实挺珍贵的,因为很多论文只讲成功经验,不太愿意暴露自己走的弯路。
第一个大坑是分布式训练后端的选择,居然会显著影响最终模型质量。
团队原本以为FSDP2和DeepSpeed ZeRO-3这两种分布式训练框架只是"跑得快慢不同"的问题,理论上不应该影响优化质量本身。
FSDP2*:PyTorch官方提供的全分片数据并行训练框架,把模型参数、梯度和优化器状态都切分到多张显卡上。
DeepSpeed ZeRO-3*:微软开发的另一套分布式训练系统,同样用于在多卡环境下切分超大模型的训练负载。
结果团队跑了一个涵盖11种配置的完整扫描实验,包括不同的上下文长度、批次大小、节点数量和学习率组合,发现DeepSpeed在GPQA Diamond这个科学推理基准上,无论怎么调参数,分数都卡在65.15分左右上不去,而FSDP2轻轻松松就能冲到73.74分,两者差了8.6分之多,而且这个差距在MMLU-Pro和AIME 2025上也同样存在。
团队自己也没完全搞清楚这背后的机理,猜测可能是DeepSpeed的混合精度通信路径和MXFP4权重编码之间存在某种没被发现的冲突,留给未来去诊断。但结论已经足够实用:**在处理MXFP4量化蒸馏这类任务时,分布式训练后端本身也得当成一个需要调优的超参数来对待,不能想当然地认为随便选一个都一样。**
第二个坑是必须冻结那些对量化特别敏感的模块。团队发现如果在量化阶段解冻嵌入层、层归一化和部分注意力模块,尤其是在学习率偏高的时候,训练出来的模型质量甚至会比完全不做健愈处理的原始量化模型还差。
第三个坑是长文本训练的显存瓶颈。健愈过程如果要在1.6万到3.2万token这样的长上下文窗口下进行,直接照搬标准做法会导致显存需求随着序列长度和词表大小同时暴涨,普通实现在3.2万token长度下几乎不可能装进现有硬件。团队采用了一种把教师模型的top-100 logits提前离线计算好、并且沿着序列分块累积计算KL损失梯度的工程技巧,把显存开销从"和序列长度乘以词表大小成正比"降低到"只和序列长度成正比",这才让长上下文的健愈训练变得可行,而且在数学上和直接计算完全等价,没有精度损失。
这就好比原本你想批改全班学生某一次考试的所有科目所有题目(正比于序列长度乘以词表大小),工作量大到根本做不完;后来你换了个策略,提前把每道题的标准答案要点整理好放进一个小本子(离线预计算教师top-k logits),批改的时候一批一批地对,而不是一次性摊开所有卷子(分块累积),工作量立刻就能控制住了。如果没有这个分块技巧,团队根本没法在同样的硬件上跑通长上下文的健愈训练,长文本能力的损失也就没法被真正修复,只能被迫放弃或者用更短的上下文将就。
这篇论文没敢说满的地方
论文作者在"局限性"这一节写得挺坦诚,值得专门说一说,因为这体现了一种做研究该有的分寸感。
最大的一个缺口是,团队并没有真正跑过"QAH对比标准QAD(也就是直接拿bfloat16恢复检查点当老师)"这个最直接的对照实验。整篇论文关于"QAD教师有能力天花板"的核心论点,其实是基于量化文献的逻辑推理,而不是一次亲手做出来的实测对比。作者自己也说,这是最值得补做的实验,在补上之前,这个核心论点应该被理解为"逻辑上讲得通,但还没有被直接测量证实"。
其次,所有的实验结果都是单次运行,没有做多次重复实验来估计方差,有些基准测试题量本身就很小,比如AIME 2025总共只有30道题,所以个别几分的差距不应该被过度解读为有统计学意义的显著差异。
再者,这套方法目前只在GPT-OSS这一个模型家族上验证过,量化格式也只用了MXFP4,训练数据也只用了一种混合语料,没有测试过Llama、Qwen、Mistral这些其他模型家族,也没测试过NVFP4、INT4、FP8这些其他量化格式。
最后,实际执行结构压缩的那个算子是团队自有的专利技术,论文里没有公开细节。虽然理论上QAH这套健愈方法本身并不依赖具体用了哪种压缩算子,只需要能访问原始模型的logits就行,但这个"理论上通用"的说法目前还没有在层剪枝、SliceGPT、低秩分解这些其他结构压缩方法上得到验证。
从这篇论文往后看
这套QAH方法最终被用来产出了一个开源模型,叫做Hypernova-60B,在Apache 2.0协议下开放了权重,同时还给一个内部客户部署了一套20B压缩到9B的版本,只不过具体客户信息没有公开。
论文本身引用了不少这个方向上相关的前置工作,比如GPTQ、AWQ、SmoothQuant这些训练后量化方法,在中等压缩比例下够用,但在超过百亿参数规模、且涉及推理和代码能力的场景下,会留下明显的精度缺口。还有LLM-QAT这种针对中等规模稠密模型做量化感知训练的方法,以及MiniLLM、DistiLLM这些证明蒸馏比监督微调更适合恢复推理和指令跟随能力的工作。
而这篇论文自己也留下了明确的后续研究方向,比如补上QAH对QAD的直接对比实验,验证方法在其他模型家族和压缩算子上的可迁移性,以及进一步搞清楚为什么不同分布式训练后端会带来这么大的质量差异。这些都是留给整个领域接下来可以继续追问的问题。
Q&A
Q1:量化感知健愈(QAH)是什么?
A:QAH是Multiverse Computing提出的一种模型恢复方法,专门用来修复既经过结构压缩又被量化到4比特的大模型。它的核心做法是让压缩量化后的学生模型,直接向从未被压缩过的原始完整模型学习,而不是向压缩恢复后的中间检查点学习,从而避免学生能力被中间检查点的天花板限制住。
Q2:QAH和量化感知训练(QAT)相比效果怎么样?
A:两者能达到差不多的峰值精度,但QAH大约100步就能收敛,比QAT快7倍左右,而且训练1200步都能稳定保持在峰值附近;QAT则需要700步才能达到峰值,之后如果继续训练会大幅崩溃,损失接近19个百分点,必须靠人工设定的提前停止点才能安全使用。
Q3:Hypernova-60B是什么模型?
A:Hypernova-60B是Multiverse Computing基于QAH方法产出的开源模型,由GPT-OSS 120B经过结构压缩到60B再量化到4比特MXFP4格式训练而成,在Apache 2.0协议下开放权重发布,在多个基准测试上追平甚至超过了它自己的16位精度版本。