把一个大模型从几十 GB 压到几个 GB,很多人以为只是把权重数值粗暴砍到 4 位完事,实际压完经常答非所问,校准数据就是补上的这一环:拿一小批有代表性的文本让模型完整跑一遍,统计各层数值的真实分布,再据此决定每处缩放系数怎么定。
先走一遍前向,只看不算
校准的输入是一小批文本,几百条到几千条不等。发生的事:它们完整穿过模型,每层的激活值与权重分布被记录下来,但参数一个都不更新——这一步不做训练,只做体检。出去的是一份逐层统计报告:哪些层数值集中,哪些层出现极端值,哪些层对扰动敏感。
可带走的判断:校准开销远低于训练,通常单卡几小时能完成。这就是量化版本更新频繁、底模几个月才训一轮的原因。
| 对比项 | 校准 | 训练 |
|---|---|---|
| 是否改参数 | 一个都不更新,只做体检 | 反向传播修改权重 |
| 耗时 | 单卡几小时能完成 | 按月计 |
| 产物 | 逐层统计报告与缩放系数 | 新的模型权重 |
统计结果如何变成缩放系数
拿到分布报告后,逐层决定取舍。数值集中的层可以把范围收紧,让 16 个刻度分得更细;有极端值的层要么放宽范围保住头部,要么裁剪极端值保住主体精度,两头不可兼得,裁多少由误差最小化的目标算出。每个决定最终落在缩放系数上,刻度与取整的机制见 量化取整 的拆解。
这一步直接决定压缩效果:同样压到 4 位,校准充分的版本和随手压的版本,同一道推理题可能一个对一个错,差距全在系数定得稳不稳。
校准集的质量比数量重要
统计的可靠性取决于这批文本长什么样。聊天模型用问答、说明文、新闻混合的语料校准;若拿代码仓库去校准一个日常对话模型,数值分布会偏向代码模式,压出来的版本聊天掉点明显。这就是分布偏离的代价:校准集见过什么,量化器就为什么优化。
所以看到某个量化版本数学题掉分,可以先怀疑它的校准集里数学文本占比太低。补救办法是换一份覆盖目标场景的校准集重跑,成本远低于重新训练。训练期的误差控制还有另一条线:混合专家模型的 负载均衡 罚分,同样靠统计信号修正行为。
校准能做与不能做的
它不能修好一切:校准只调整数值映射,不改变模型学到的东西,压掉的容量找不回来;极端低位下无论怎么校准,损失都摆在那里。另外不同量化方法对校准数据的用法不同,有的只用它定范围,有的用它逐层微调取整方向,具体以各方法的技术说明为准。
实践参考:端侧产品对此依赖很深,WPS AI 这类要在办公设备上本地运行的功能,靠精细校准把内存占用压下来;腾讯元宝这类云端服务算力充裕,高峰期同样会用低比特版本扩容。语料怎么切成 token 喂进去,见 分词器的词表;长对话的内存压力由 KV 缓存 的增长规律决定。
校准质量自查清单
- 数量:几百到几千条即可,贪多无益
- 覆盖:与目标使用场景的文本类型对齐
- 抽查:压缩版与原版各跑一遍典型任务对比
- 口径:方法细节以量化工具的技术说明为准
判断一个量化版本可不可用,先看校准集构成,再对照这份清单逐条检查。
关于校准数据再多问三句
- 校准会改变模型的回答风格吗?:不会。它只调数值映射方式,知识与语气都原样保留在权重里,变化只来自压缩带来的细微误差。
- 自己压模型时校准集该用什么?:用它最常处理的文本类型。做代码助手就拿代码校准,做客服问答就拿真实问答记录,对齐场景比堆数量有效。
- 它和训练数据有什么区别?:前者只前向统计、更新缩放系数,几小时完成;后者要反向传播修改权重,按月计。


