1. 工业AI推理平台全景
工业AI推理平台并不是“把训练好的模型放到服务器上跑起来”这么简单。它要解决的是在产线节拍、设备接口、数据合规和长期稳定运行约束下,把视觉、时序、语音或多模态模型持续、低延迟、可观测地变成现场可用的判断能力。Intel工业AI推理平台的核心定位,可以概括为三层:算力与加速底座(CPU、集成/独立GPU、NPU、OpenVINO™ 等推理运行时)、推理服务与编排层(模型服务、批处理、动态形状、多实例、流水线调度)、工业接入与应用层(相机/PLC/传感器接入、结果回传、告警与MES/SCADA联动)。三者缺一,平台就会退化成“能跑demo、不能上产线”的工具。
典型部署场景决定了平台形态。第一类是边缘工位级:单台工控机或边缘盒子接入2~8路工业相机,做缺陷检测、尺寸测量、字符识别,要求端到端延迟稳定在几十毫秒级,通常采用CPU+集成GPU或低功耗独立GPU,模型以INT8量化为主。第二类是产线/车间级:多工位汇聚到一台边缘服务器,同时处理十几到几十路视频流,需要多模型并行、按工位隔离资源,常用OpenVINO™ Model Server做统一服务化。第三类是厂级/中心级:承担模型版本管理、难例回流、跨产线调度和与MES/QMS对接,算力以数据中心CPU+GPU为主,强调吞吐和可扩展性。三类场景不是互斥的,而是同一套软硬件栈在不同规模上的裁剪。
软硬件栈从下往上可以这样理解。硬件层包括Intel® Xeon® 可扩展处理器(含AMX指令集,对INT8/BF16推理有直接加速)、Intel® Core™ 处理器、Intel® Arc™ 独立显卡、集成GPU以及NPU;软件层以OpenVINO™ 工具套件为核心,向上提供模型优化器(把ONNX/PyTorch/TensorFlow模型转成IR)、推理引擎(Runtime)和设备插件(CPU/GPU/NPU/AUTO),再向上是OpenVINO™ Model Server、Docker/Kubernetes、以及GStreamer/FFmpeg等视频接入组件。应用层则包括相机SDK、PLC通信(如Modbus TCP、OPC UA)、结果落库和告警服务。真正决定落地效果的,往往不是模型本身,而是预处理是否与训练一致、后处理是否在CPU上成为瓶颈、以及设备选择是否匹配时延预算。
端到端推理流程可以拆成一条清晰的信号链:采集 → 预处理 → 推理 → 后处理 → 业务决策 → 回传/落库。以一条表面缺陷检测工位为例,假设使用500万像素工业相机、帧率15 FPS、检测节拍要求单帧处理不超过60 ms。采集阶段通过GigE Vision或USB3 Vision取流,得到BGR 2592×1944图像;预处理阶段做去畸变、ROI裁剪到1024×1024、归一化并转换为NCHW FP32张量,这一步如果放在CPU上做双线性缩放,单帧可能消耗8~15 ms,因此常改用GPU预处理或OpenVINO™ 的预处理API把缩放和颜色转换融合进推理图。推理阶段把模型编译到目标设备:若用CPU,可设置ov::hint::performance_mode为THROUGHPUT或LATENCY,并开启ov::hint::inference_precision为i8;若用GPU,则通过AUTO或GPU插件指定。后处理阶段做NMS、阈值筛选和坐标反变换,输出缺陷类别、置信度和像素位置。业务决策阶段根据缺陷面积和连续帧一致性判断是否触发剔除信号,并通过Modbus TCP写线圈或通过OPC UA写节点。最后把结果、耗时和图像路径写入本地数据库或上传MES。
这条链路里最容易被忽视的是时延预算的分配。仍以上述工位为例,60 ms总预算可以粗略拆为:采集与传输10 ms、预处理8 ms、推理25 ms、后处理7 ms、业务与回传10 ms。如果推理实际用了40 ms,即使模型精度再高,也会因为节拍不达标而被现场否决。因此平台必须提供逐段耗时统计,通常通过OpenVINO™ 的get_profiling_info()或Model Server的指标接口拿到每层耗时,再结合ov::benchmark_app做离线基线。另一个关键是批处理与并发的取舍:边缘工位级追求低延迟,批大小通常为1;车间级追求吞吐,可以把多路视频聚合成批,但会引入排队延迟,需要根据路数和SLA做权衡。
下面这张图把平台的分层结构、典型部署位置和端到端推理链路放在同一张视图中,便于建立整体认知:
从这张图可以看出,平台的价值不在于某一个单点,而在于把硬件能力、运行时优化和工业接口串成一条可度量、可调优的链路。实际落地时,建议先固定一个工位做基线:用benchmark_app测出模型在目标设备上的纯推理延迟,再逐步加上预处理、后处理和通信,观察每一段增量。如果总时延超出预算,优先检查预处理是否在CPU上做了大尺寸缩放、后处理是否用了低效的Python循环、以及是否误用了FP32而非INT8。只有把这条链路跑通并量化,后续的多路扩展、模型热更新和厂级调度才有可靠的基础。