一句话定义
混合精度分配(Mixed-Precision Allocation) 指在量化一个模型时,不给它设一个统一的位宽,而是按组件——不同的层、不同的专家、不同的通道——分别指定位宽,让重要的部分多留几位,不重要的部分压得更狠。
它要回答的不是「压到几位」,而是「这几位分给谁」。
它解决什么问题
统一位宽有两个绕不过去的毛病:
- 一刀切。 全压到 4 位,某些敏感的层直接崩;全留 8 位,体积又下不来。真正想要的是「大部分 4 位、少数关键处 6 位或 8 位」,平均下来比 8 位小得多。
- 越压越低时,误差不是线性的。 在很低的精度下,单层的量化误差不再是「小扰动」,它会逐层放大。只看单层的重建误差,会系统性低估最终损失。
MoE 模型还多一层麻烦。MoE 里有个 router,为每个 token 挑几个专家,这是一个离散选择:量化扰动一旦改变了打分的排序,被选中的专家就换了,前向走的是另一条完全不同的路径。这种误差不表现为「数值偏了一点」,而是「换了条路走」——论文里叫路由漂移(routing drift)。
关键做法
arXiv 上有一篇 2026 年 10 月的 MoE 量化工作 ProQuant(编号 2610.30779),把上面两件事分开处理,都是纯权重量化(weight-only PTQ):
一、分配和剪枝一起做(PoP,Prune-or-Prioritize)。 把「剪掉哪些专家」和「每个专家给几位」放进同一个优化里。允许高精度的专家去顶替已经严重退化的专家——也就是允许「少而精」替代「多而糊」。这样在同样的比特预算下,能挤出更高的质量,预算利用率也更好。
二、把 router 看到的输入拉回原样(RoCo,Routing-Consistent RMSNorm Finetune)。 直接微调 router 会带来新的漂移,而且校准集上的收益未必能泛化到下游任务。所以作者不动 router,而是通过数学上等价的变换(对 RMSNorm 做重参数化)去调整专家的输入表示,把量化误差补偿掉,让 router 面对的打分分布接近原模型。
两个要点值得记住:
- 混合精度不是「随手挑几层保高精度」。它是一个带约束的分配问题:预算固定,误差要最小,而且分配结果必须能被运行时执行。
- 分配出来的位宽组合,需要推理引擎支持逐层、逐组件的不同位宽。硬件或引擎只支持单一精度的内核,分配方案再漂亮也落不了地。
用不上的时候
- 预算不紧的时候。 8 位已经够用、体积也不是瓶颈,做混合精度只是给自己加工程复杂度。
- 运行时不支持逐组件位宽。 这是硬门槛,要先去确认,而不是先去做分配。
- 校准集不代表现场分布。 分配依据是校准数据上各组件的重要性和误差,校准图偏了,分出来的预算也偏。
- 别把生成质量的提升当成业务指标的提升。 论文报的是生成任务上的相对优势,换成检测、分类、识别,敏感组件完全不同,得重测。
参考
arXiv:2610.30779,ProQuant: Preserving Expert Quality over Quantity in Ultra-Low-Bit Quantization of Mixture-of-Experts Models(2026-10-22)。作者指出两个问题:极低精度下的非线性量化误差在忽略跨层传播时被低估;直接微调 router 会引起路由漂移、校准收益未必泛化。对应两个组件:PoP 联合优化专家剪枝与位宽分配,让高精度专家顶替严重退化者;RoCo 用数学等价变换(RMSNorm 重参数化)调整专家输入表示以补偿量化误差、降低路由漂移。在多种生成任务上优于现有方法,代码已公开。
延伸阅读
- 识别预算别平均分给所有商品 —— 这篇讲的是这件事对门店意味着什么。
相关词条
火眼识别提供端侧视觉引擎与设备管理平台,相关方案见 火眼识别官网。