99POS
全部 75 场景方案 7 方案白皮书 3 防损 1 计价实践 1 品类方案 1 品牌与机型 3 收银选型 16 收银指南 3 算力平台 20 外设与扫码 2 运维与验收 18
首页/ 收银选型/ 识别预算别平均分给所有商品

识别预算别平均分给所有商品

2026-10-25 收银选型 约 772 字

一个整体数字背后的空白

供应商给了一份报告:模型体积减到四分之一,识别准确率从 97.6% 降到 96.8%,只掉 0.8 个点。

听起来可以签。但这份报告没回答一个问题:掉的这 0.8 个点,掉在哪些商品上。

门店的商品不是均匀分布的。标准包装、条码清晰、正面朝上的商品,占总量的大头,也最容易识别;散装生鲜、透明包装、反光材质、联名换装的限量品、同一系列的不同口味,这些长尾品类数量不多,出错率却高出一个量级。整体准确率是按数量加权的,长尾品类的错误会被淹掉。

一笔账:如果长尾品类只占 8% 的识别量,但错误率从 6% 涨到 15%,整体准确率只掉 0.7 个点。而门店实际感受到的是「这个牌子的酸奶老是要手输」。

压缩模型时,比特是可以分着花的

这就是混合精度分配要处理的事:不给整个模型设一个位宽,而是按组件——不同的层、不同的通道、不同的部分——分别指定位宽,把有限的比特预算花在对输出影响最大的地方。

放到门店的语言里:不是所有商品都用同一档「清晰度」去看。绝大多数标准品用低精度就够,少数难认的品类多留几位。平均下来,体积还是小的,但难的那部分没被牺牲掉。

这件事听起来像手动调,其实是个带约束的分配问题:预算固定,误差要最小,而且分出来的位宽组合必须能被推理引擎执行。

还有一层更麻烦的误差

2026 年 10 月 arXiv 上有一篇 MoE 量化的论文 ProQuant(编号 2610.30779),指出两件事。

第一件:在很低的精度下,误差不是线性的。 单层的量化误差不再是「小扰动」,它会逐层放大。只看单层的重建误差,会系统性低估最终损失。

第二件更有意思:MoE 模型里有个 router,为每个输入挑几个「专家」来处理,这是一个离散选择。量化扰动一旦改变了打分的排序,被选中的专家就换了,前向走的是另一条完全不同的路径。这种误差不表现为「数值偏了一点」,而是「换了条路走」——论文里叫路由漂移。

把它翻成门店的场景:不是价格算偏了两毛,而是这件商品被当成另一件商品、直接报出了另一个价格。数值误差可以容忍,路径错误不能。

论文的做法是两件事分开治:把「剪掉哪些专家」和「每个专家给几位」放进同一个优化里,允许高精度的专家去顶替已经严重退化的专家;同时不动 router 本身,而是通过数学上等价的变换调整专家的输入表示,让 router 面对的打分分布接近原模型。

对本店的意味:验收要看交叉表

整体准确率是个被平均掉的数字。压完模型要验收,至少做三件事:

  • 要一张品类 × 品类的混淆表。 不看总数,看每个品类被判成了什么。哪些品类开始互相串,串的方向是不是固定的(固定的错误还能靠规则补,随机的补不了)。
  • 单独看贵的那几类。 高单价商品、称重生鲜、需要防损的品类,各算各的准确率。这几类错一笔的损失,比十笔标准品错得还多。
  • 用自己门店的图。 校准和验收的样本要来自自家货架、自家光线、自家包装版本。用供应商提供的标准图集测出来的分布,跟门店的分布不是一回事。

什么时候不用折腾

不是所有场景都值得做混合精度。

模型本来就不大、8 位量化已经够用、设备算力也宽裕,这时候去做逐层位宽分配,增加的是工程复杂度,换来的收益很小。另外,如果推理引擎只支持单一精度的内核,分配方案再漂亮也落不了地——这个要先确认,而不是先做方案。

还有一条:分配的依据是校准数据上各组件的重要性。校准图偏了,分出来的预算也偏。换季、换包装、上新之后,这套分配需要重做一遍,不是一次定终身。

一句话收尾

「整体只掉 0.8 个点」是一句没有信息量的话。真正该问的是:这 0.8 个点落在哪些商品上、错成了什么、这些错的代价是多少。位宽预算是分配问题,平均分是最省事也最贵的一种分法。