端侧推理平台概览:主流AI芯片与NPU/DSP/GPU架构
做端侧AI推理,说白了就是跟芯片打交道。你模型量化得再好,跑在不对的硬件上,效果也得打折扣。这一章我带大家看看市面上主流的端侧AI芯片,以及它们背后的NPU、DSP、GPU到底是怎么分工的。
我个人习惯,拿到一块开发板,第一件事不是跑demo,而是先看它的计算单元长什么样。为什么?因为架构决定了你的量化策略和算子优化方向。
主流端侧AI芯片厂商
目前端侧AI芯片格局,基本是四家争霸:高通、联发科、华为、寒武纪。每家都有自己的“独门武器”。
| 厂商 | 代表芯片 | AI计算单元 | 典型应用场景 |
|---|---|---|---|
| 高通 | Snapdragon 8 Gen 3 | Hexagon NPU + Adreno GPU | 手机、IoT、智能座舱 |
| 联发科 | Dimensity 9300 | APU (AI Processing Unit) | 手机、智能电视 |
| 华为 | 昇腾310 / 麒麟9000 | DaVinci架构 NPU | 手机、安防、边缘服务器 |
| 寒武纪 | 思元220 / 370 | MLU (Machine Learning Unit) | 安防、智慧交通、工业视觉 |
我的经验:选平台时别只看算力TOPS。我踩过坑,某芯片标称4TOPS,实际跑int8模型只有1.2TOPS。一定要看有效算力和内存带宽。
NPU / DSP / GPU 架构特点
这三兄弟在芯片里各司其职。你想想看,一个视频流进来,谁做预处理?谁跑模型?谁做后处理?分工很明确。
NPU:神经网络专用加速器
NPU是专门为神经网络设计的。它内部有大量乘加阵列,可以并行处理卷积和全连接运算。我最早接触NPU是在高通8155上,那时候还叫HVX,现在已经进化到Hexagon NPU了。
- 优势:能效比极高,跑CNN模型比GPU省电3-5倍
- 劣势:对非结构化算子支持差,比如某些自定义激活函数
- 避坑:我曾经在寒武纪MLU上跑一个带有GELU激活的模型,结果NPU不支持,只能切到CPU跑,速度直接掉了10倍
DSP:数字信号处理器
DSP原本是做音频、图像信号处理的。现在被用来做轻量级AI推理,尤其是预处理和后处理。比如图像缩放、色彩空间转换、直方图均衡化,这些活儿DSP干得比CPU快得多。
- 优势:低延迟、低功耗,适合实时流水线
- 劣势:算力有限,跑不了大模型
- 我的习惯:把AI ISP中的预处理(去噪、白平衡)放在DSP上,推理放NPU,后处理(色调映射)放GPU,这样流水线最均衡
GPU:图形处理器
GPU在端侧更多是“兜底”角色。当NPU不支持某些算子时,GPU可以顶上。Adreno GPU对FP16和int8都有不错的支持,但功耗比NPU高。
- 优势:通用性强,几乎所有算子都能跑
- 劣势:功耗高,发热大,不适合长时间推理
- 注意:GPU跑模型时,显存带宽往往是瓶颈。我遇到过模型算力只用了30%,但显存带宽跑满了,帧率上不去
核心结论:端侧推理的最佳实践是“异构计算”——把不同计算任务分配给最合适的单元。NPU跑模型主体,DSP做信号预处理,GPU做后处理或兜底。
端侧AI芯片架构对比图
下面这张图展示了主流端侧AI芯片的内部计算单元分工。我画这张图时,特意把数据流方向标出来了,方便你理解推理时数据怎么走。
各平台量化支持情况
做模型量化,必须知道目标平台支持什么精度。我整理了一张表,方便你快速查阅。
| 平台 | 支持量化精度 | 量化工具 | 我的评价 |
|---|---|---|---|
| 高通SNPE/QNN | int8, int16, fp16 | Qualcomm Neural Processing SDK | 生态最成熟,文档齐全 |
| 联发科NeuroPilot | int8, fp16 | 联发科AI工具链 | 对Transformer支持好 |
| 华为MindSpore Lite | int8, fp16, fp32 | MindSpore Lite Converter | 昇腾芯片上性能极佳 |
| 寒武纪Neuware | int8, int16, fp16 | MagicMind | 安防场景优化深入 |
重要提醒:量化精度支持不等于实际效果。我曾在某平台上用int8量化一个轻量级检测模型,结果精度掉了5个点。后来发现是量化校准集没选好,跟芯片本身关系不大。量化校准是下一章的重点,这里先埋个伏笔。
端侧推理的“隐形门槛”
很多人以为选好芯片、量化好模型就完事了。其实还有几个隐形门槛,我吃了不少亏才总结出来:
- 内存带宽:NPU算力再高,内存带宽不够也是白搭。我遇到过模型计算时间只有5ms,但数据搬运花了15ms
- 驱动版本:同一块芯片,不同驱动版本推理结果可能不一样。尤其是量化模型,驱动对饱和处理的差异会导致精度波动
- 温控降频:端侧设备散热差,跑久了芯片降频,推理速度会掉。我建议做压力测试时至少跑30分钟,看稳态性能
我的建议:选平台时,先拿你的模型在目标芯片上跑一遍完整pipeline,包括预处理、推理、后处理。别只看芯片厂商给的benchmark,那都是“实验室数据”。