定义
NPU(Neural Processing Unit,神经网络处理单元)是专用于深度学习推理的加速芯片,相比通用 CPU/GPU 在卷积、矩阵运算等 AI 负载上能效更高。适用于边缘侧 Inference at the Edge,支持 YOLO、ResNet、MobileNet 等主流架构,单帧推理时延可低于 50ms。模型通常经 ONNX 转换后部署,配合 TensorRT 等优化可进一步提升推理速度。
技术特性
NPU 采用专用矩阵运算单元、低精度量化(INT8/FP16)支持,能效比可达 GPU 数倍。典型产品包括华为昇腾、寒武纪、瑞芯微 RK 系列、晶晨等。支持 ONNX、TensorFlow Lite、Caffe 等模型格式。边缘 AI 网关集成 NPU 可本地运行目标检测、分类、分割,减少云端传输与延迟,适用于工业视觉、安防、缺陷检测等 IIoT 场景。
与 GPU 对比
GPU(如 NVIDIA Jetson)通用性强、生态成熟、支持 TensorRT 等优化;NPU 能效更高、成本可控、适合大批量边缘部署。选型需考虑模型兼容性、推理性能、功耗、成本。工业场景中,轻量级模型(YOLOv5s、MobileNet)多采用 NPU;复杂模型或需多模型并行时可选 GPU。
算子覆盖与量化图部署
矩阵阵列只加速特定算子
神经网络处理单元里排布的是乘加阵列和片上缓存,不是通用处理器。卷积、全连接、池化和一部分激活函数会被映射到阵列上成批计算;控制流、不规则的后处理和自定义层往往仍要回到旁边的 CPU。所以芯片标称的峰值吞吐,只在网络主体能落进阵列时才有意义。输入分辨率、通道数和批量改变后,缓存若装不下中间张量,加速比会突然下降,甚至退回到逐层在外部内存里来回搬。
低精度是能效的来源。阵列通常以 8 位整数或 16 位浮点工作,权重和激活在编译期被量化。量化不是把小数简单四舍五入,而要为每一层选尺度。尺度选得偏离真实数据,检测框的置信度会整体偏移,看起来像模型“突然不灵”,其实图还在跑。
模型要先落到芯片工具链
使用条件是模型结构已经冻结,训练框架里的算子能被该芯片的编译器识别,输入形状在部署时已知。工具链一般要求先导出中间表示,再编译成厂商私有的可执行图。这一步要在目标板或与目标板同系列的环境里完成,换一颗代数不同的芯片,图通常要重编。内存还要同时容纳输入缓冲、中间张量和输出解析,工业视觉里若再叠加解码,CPU 和阵列会抢带宽。
它适合模型种类少、分辨率固定、结果只需类别或少量坐标的边缘站点。需要经常更换网络结构、或者要跑编译器尚未覆盖的新算子时,阵列利用率会很低。此时应把无法映射的层明确列出来,评估是改模型还是换计算平台,而不是先按峰值算力下单。
动态形状和未支持算子
最常见的失败是动态输入。训练时高度宽度可变,编译器却要求固定边长,部署人员用拉伸硬凑,目标的长宽比变了,阈值沿用训练集,误检上升。其次是算子被悄悄放到 CPU:整网时延仍很长,功耗表上阵列却几乎空闲。要在编译日志里核对每一层的执行位置,而不是只看“加载成功”。
第三是预处理不一致。训练用的减均值、颜色顺序和缩放,若在板上用另一套实现,网络输出会系统性偏离。量化校准集如果只来自实验室光照,现场逆光和脏镜头会让 8 位尺度失效。最后不要把芯片温度忽略掉:封闭机柜里阵列降频后,帧率达不到产线节拍,告警会堆积。与通用图形处理器上的推理引擎相比,这里更依赖厂商编译器,换板就必须重做图,不能拷贝一个文件就认为部署完成。
板上的散热和降频也要写进时延预算。封闭外壳里阵列温度升高后会降频,编译日志里的理论时延不再成立。应用应读取芯片温度,并在降频导致帧率不够时明确告警,而不是让产线一直看到越来越慢的结果。