INT8 量化校准(calibration)是后训练量化流程中的关键一步:用一小批有代表性的真实数据驱动模型完成若干次前向推理,统计各层激活值的数值分布,据此确定浮点数到 8 位整数的映射参数——缩放因子(scale)与零点(zero-point)。权重的取值是静态的,直接读取即可确定范围;而激活值随输入变化,必须借助校准数据才能估计其分布,这正是校准环节存在的根本原因。
校准的必要性源于 INT8 的表达能力限制:8 位整数只有 256 个离散刻度,映射范围定得过宽,会浪费刻度、放大舍入误差;定得过窄,大量数值被截断到边界,引入截断误差。校准的本质就是在两类误差之间寻找平衡。常见的统计策略包括 min-max(直接取极值,实现简单但对离群值敏感)、百分位裁剪(舍弃极端值以收紧有效范围)以及基于 KL 散度的熵校准(最小化量化前后分布的信息差异)。不同策略没有绝对优劣,应结合激活分布形态选择。
校准数据的质量直接决定量化效果。样本必须来自真实业务分布并覆盖典型输入形态;数量无需很大,但分布一旦偏离真实流量,量化后的模型就会在线上"跑偏"——这正是许多团队量化后精度骤降却难以定位的根源。原文提到的"INT8 需要做校准样本,不然答案会跑偏",指向的就是这一机制。
工程落地时有几点值得注意:优先采用静态量化配合离线校准,可获得确定性的低延迟;若激活分布波动剧烈,可退而使用动态量化,或对敏感层回退到 FP16 的混合精度方案。校准完成后,务必在验证集上做精度回归,并在上线后持续监控输出分布漂移,将其纳入与延迟、吞吐并列的常态化观测指标。
参与讨论
暂无评论,快来发表你的观点吧!