收银机本来就是台电脑——识别能不能直接跑在上面
门店里已经有一台电脑
一家标准门店的收银位上,摆着的是一台 x86 一体机或分体主机——收银软件、小票打印、钱箱、扫码枪、会员系统都跑在它上面。后台可能还有一台小主机管库存和监控。
AI 识别进来的时候,常见做法是再加一台设备:带 NPU 的盒子,接摄像头,跑模型,把结果通过局域网送给收银软件。于是门店多了供电、多了交换机端口、多了一个会坏的部件,也多了一份每年要续的运维。
这笔账值得重新算一次。因为模型量化之后,普通 x86 CPU 的推理能力已经不是几年前的水平。
过去为什么必须另买盒子
三个原因,现在都不完全成立:
- 模型太大。 视觉模型动辄几百兆,内存放不下。量化到 INT8 之后,体积降到四分之一,一台 8GB 的收银机放得下。
- CPU 太慢。 通用 CPU 做浮点卷积确实吃力。但 INT8 定点运算可以走向量指令,一条指令做完一组乘加,效率完全不同。
- 框架不支持。 早期推理框架对 x86 的优化集中在服务器,端侧工控机不在考虑范围内。现在主流的推理后端都把 x86 的 INT8 路径当基本盘。
一篇论文给出的参照
arXiv 上有一篇 Quantized Edge Inference of a Self-Supervised SAR-Optical Encoder on Commodity x86 Hardware(编号 2610.37056),做的是把同一个视觉 Transformer 编码器放到三台普通 x86 机器上跑,测延迟、能耗和精度。
三台机器的差别在指令集:最弱一台是低功耗 CPU,连 AVX2 都没有;最强一台带 AVX2 + VNNI。每台都在 CPU 和集成显卡上分别跑 FP32、FP16、INT8。
四个结论对选型有用:
精度不是纠结点。 INT8 之后 micro-mAP 只变了 +0.0006,落在随机种子的正常波动里。也就是说位宽选择基本不影响识别效果,能压就压。
收益来自指令集,不是位数。 INT8 在三台机器上都降低了 CPU 延迟;连没有 AVX2 的那台也有 1.45 倍,带 VNNI 的参考机是 1.53 倍。VNNI 的作用是把乘法和加法合成一条指令——量化模型最需要的正是这个。
CPU 和核显谁更快,会翻转。 在最弱的那台机器上,集成显卡比 CPU 快 4.38 倍;而 CPU 一换代,最优选择就翻回了 CPU。这条最容易被忽略:同样写着「带核显」的两台收银机,一代 CPU 之差,该用哪个计算单元是相反的答案。
能耗要实测。 论文用 CPU 的功耗读数和墙插功率计两套口径测,因为整机层面,CPU 省的电可能被风扇、电源转换和其他部件吃掉。
对一家门店意味着什么
先看现有机器。 门店的收银机如果近三年采购、CPU 带 AVX2,那么两到四路 1080p 的商品识别,很可能不用外接盒子。这不是让你现在就拆掉盒子,而是选型时多一个选项——尤其是小店、单店、临时摊位这类不想再增加设备的场景。
再看路数和分辨率。 CPU 的余量是有限的。一路 720p 每秒五帧,和四路 1080p 每秒十五帧,是两个量级的负载。别用演示场景推上限。
还要看它同时在干什么。 收银机不是只为识别服务的。结账高峰时收银软件、打印、会员查询都在抢 CPU,识别延迟会抖。这种抖动在空店演示里完全看不出来,在排队时就是那几秒的等待。
采购时把问题换个问法
「这台机器能跑几路」问不出答案,换成这几个:
- 这台机器的 CPU 是什么型号?支持 AVX2 吗?支持 VNNI 吗?
- 你们的模型给我们的是 INT8 版本吗?用的是哪个推理后端?
- 同一台机器上,识别跑 CPU 还是核显?这个选择是怎么定的,换一代 CPU 会变吗?
- 满载运行时,整机功率和 CPU 温度是多少?会不会降频?
- 识别和收银软件同时跑,延迟的 P95 是多少?
能答具体的,说明这套东西被真跑过;只能答「我们算力很强」的,通常没做过这件事。
验收怎么做
- 用同一台机器、同一个模型,跑 INT8 和 FP32 两个版本。 对比 P95 延迟,不要只看平均值——平均值会把卡顿吃掉。
- 按明年的路数测,不是按现在的路数。 现在两路、明年四路,就按四路验收。
- 在营业高峰测,不是打烊后测。 收银软件全开、打印任务在排队的时候测。
- 记录整机功率和温度。 无风扇或小风扇的机器,长时间满载的表现和演示五分钟完全不同。
- 断网跑一遍。 确认模型、授权、更新都不依赖外网。
一句话
收银机本来就是一台电脑,识别未必要再买一台设备。判断标准不是参数表上的算力,而是这颗 CPU 支持哪一代向量指令、模型有没有对应的 INT8 实现、以及满载时它还剩多少余量。