NPU量化:截断范围与累加位宽必须分开校核
把浮点网络转成整数网络后,精度下降未必源于位数太少。部署NPU时,输入表示的截断损失与内部累加的溢出风险必须分别定位,否则调整量化参数可能掩盖真正的算术错误。
激活量化首先面对的是有限码字如何分配。以带比例因子和零点的仿射表示为例,实数由整数值减去零点后乘以比例因子得到。覆盖区间扩大时,相邻码字对应的实数间隔也会扩大;少量异常值因此可能占用大量表示范围,让常见的小幅信号失去分辨率。反过来,缩小区间虽然能细化主体分布,却会把越界值压到边界。两者形成的误差机制不同,不能仅看张量最大误差决定阈值。
校准数据应覆盖实际预处理和业务条件。例如相机曝光变化会改变输入分布,若校准只使用亮度正常的图片,上线后的暗场或高光就可能出现集中饱和。排查时应同时记录各层的边界命中比例、误差分布和任务指标。边界命中只能提示可能发生截断,因为真实数值也可能恰好落在端点;还需对照浮点激活确认。若误差主要集中在少数敏感通道,可评估目标后端支持的更细粒度表示,而不能默认所有激活都支持逐通道量化。
阈值选择还取决于信息的业务含义。分类网络中不常见的大值可能对类别区分贡献有限,在小目标检测或异常识别中却可能对应关键样本。因此,应在固定数据划分上比较候选区间,并用独立的边界样本复核,避免把校准集上的统计改善误认成泛化收益。更换输入归一化方式以后,也必须重新评估区间,原有比例因子没有自动保持有效的理由。同时应保留区间选择前后的逐层误差记录,检查精度损失是否集中在首个越界层。只观察最终输出,容易把前层截断经过后续放大后的影响,错归给最后发生偏差的算子。
即使输入表示合理,点积仍可能在累加过程中出错。若采用对称有符号八位整数,且操作数均限制在负一百二十七到正一百二十七,每项乘积的绝对值上界为一万六千一百二十九。包含若干项的点积,可先用项数乘以该上界估计最坏绝对和,再与有符号累加器的范围比较。该估计较保守,却能明确说明:乘法输入的位宽不会自动保证任意长度点积安全,偏置也必须进入预算。
实际NPU若使用非对称激活,边界计算还要按减去零点后的范围展开,不能照搬对称情形的上界。硬件也可能通过预计算修正项实现等价运算,此时既要检查最终数学结果,也要检查各中间量的表示范围。分块累加并不天然消除风险:只有部分和采用足够宽的表示,并且合并阶段同样满足范围约束,分块才不会把溢出转移到最后一次归约。
复核应把累加错误与输出再量化区分开。先用宽整数参考实现获得点积结果,再核对偏置单位、缩放乘子、移位和舍入规则。若整数累加已一致,而输出仍有少量差别,应追查再量化约定;若长归约维度才出现突变,则应优先检查中间位宽。对依赖饱和算术的实现,还需明确饱和发生的位置,不能将其视为无损保护,因为后续负项可能原本能够抵消此前的正和。
可靠的整数部署需要两条证据链:用代表性分布确认表示误差可接受,用逐级范围分析确认算术过程安全。前者决定精度取舍,后者排除实现错误,二者不能互相替代。





