端侧推理平台概览:主流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芯片的内部计算单元分工。我画这张图时,特意把数据流方向标出来了,方便你理解推理时数据怎么走。

端侧AI芯片异构计算架构 CPU 主控 NPU 神经网络推理 DSP 信号预处理 GPU 图形/后处理 共享内存 / 缓存 数据流说明: 1. CPU 调度任务,将数据分发到 NPU/DSP/GPU 2. NPU 跑模型主体推理,DSP 做图像预处理,GPU 做后处理 3. 所有单元通过共享内存交换中间结果,减少数据搬运

各平台量化支持情况

做模型量化,必须知道目标平台支持什么精度。我整理了一张表,方便你快速查阅。

平台 支持量化精度 量化工具 我的评价
高通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,那都是“实验室数据”。