1. NPU与AI芯片概述

1.1 为什么我们需要NPU?

先聊个我亲身经历的事。几年前我在做边缘端人脸检测,用的是ARM Cortex-A72跑MobileNet。帧率大概在5-8fps,功耗却飙到了4W。客户说这不行,产品发热太严重。后来换了NPU方案,同样的模型跑到30fps,功耗只有1.2W。嗯,这就是NPU存在的意义。

CPU是万金油,什么都能干。GPU是并行计算的好手。但到了AI推理这个场景,它们都遇到了瓶颈——算力密度不够,能效比太低。NPU就是专门为神经网络计算设计的处理器。说白了,它把矩阵乘法、卷积、激活函数这些操作做成了硬件原语。

核心观点:NPU不是要取代CPU/GPU,而是在AI推理这个垂直场景里,做到极致的能效比。我见过太多团队试图用通用处理器硬扛AI负载,结果往往是功耗爆炸。

1.2 NPU架构演进:从协处理器到SoC融合

NPU的架构演进,我把它分成三个阶段。每个阶段我都踩过坑,跟大家分享一下。

第一阶段:独立协处理器(2015-2018)

早期的NPU像是个外挂。通过PCIe或USB连接到主控芯片上。我记得2017年做的一个项目,用的是某厂商的USB NPU加速棒。推理时要把数据从DDR搬到NPU的显存,再搬回来。这个搬运开销占了总延迟的40%。

  • 典型代表:Movidius Myriad 2、Google Edge TPU早期版本
  • 痛点:数据搬运延迟高,带宽受限
  • 适用场景:对延迟不敏感的离线推理

第二阶段:SoC集成NPU(2018-2021)

后来厂商学聪明了,直接把NPU集成到SoC里。NPU和CPU、GPU共享内存,通过片内总线通信。我在做某款手机NPU适配时发现,数据搬运延迟从毫秒级降到了微秒级。这个阶段NPU开始有自己的指令集和编译器。

  • 典型代表:华为昇腾310、高通Hexagon DSP演进版
  • 优势:低延迟、低功耗、统一内存管理
  • 挑战:编译器优化难度大,算子支持有限

第三阶段:数据流架构(2021至今)

现在的NPU越来越像数据流机。计算单元不再是冯·诺依曼结构,而是以计算阵列(Systolic Array)为核心。数据在阵列中流动,每个周期完成一次乘加运算。我曾经调试过一个算子,发现数据流调度不当会导致计算单元利用率只有30%。优化后提到了85%。

  • 典型代表:昇腾910、寒武纪MLU370、Graphcore IPU
  • 特点:大规模脉动阵列、片上SRAM缓存、硬件级算子融合

我的建议:做算子映射时,一定要理解目标NPU的数据流架构。是行优先还是列优先?计算阵列多大?这些细节直接影响性能。我曾经因为没看手册,把一个3x3卷积映射成了低效的循环展开,浪费了两周时间。

1.3 主流NPU产品对比

市面上NPU产品很多,我挑几个有代表性的做个对比。这些我都实际用过,不是纸上谈兵。

产品 算力(INT8) 显存 功耗 典型场景 我的评价
昇腾310 16 TOPS 8GB LPDDR4X 8W 边缘推理 生态成熟,文档齐全
昇腾910 256 TOPS 32GB HBM2E 310W 云端训练/推理 算力强,但功耗高
寒武纪MLU370 128 TOPS 16GB GDDR6 150W 云端推理 算子覆盖率高
Google Edge TPU 4 TOPS 8MB SRAM 2W 超低功耗边缘 功耗极低,但模型受限
高通Hexagon V66 15 TOPS 共享系统内存 3W 手机端推理 集成度高,但编程复杂

选型时我一般看三个指标:算力利用率、显存带宽、算子覆盖度。算力再高,如果利用率上不去也是白搭。我曾经测过某款NPU,理论算力100 TOPS,实际跑ResNet-50只有40 TOPS。原因就是计算阵列太小,大卷积核无法充分利用。

1.4 NPU在AI推理中的核心地位

为什么说NPU是AI推理的核心?我给大家算笔账。

一个典型的AI推理流程:输入预处理 → 模型推理 → 后处理。其中模型推理占了90%以上的计算量。而模型推理的核心操作就是矩阵乘法和卷积。NPU把这些操作做到了极致。

数据对比:以ResNet-50推理为例,在相同精度下:

  • CPU(Xeon Platinum):200 images/s,功耗200W,能效比1 img/s/W
  • GPU(T4):800 images/s,功耗70W,能效比11.4 img/s/W
  • NPU(昇腾310):500 images/s,功耗8W,能效比62.5 img/s/W

NPU的能效比是GPU的5倍,是CPU的60倍。这就是为什么数据中心和边缘设备都在用NPU。

我个人觉得,NPU的核心优势在于三点:

  1. 硬件级算子加速:卷积、池化、激活函数都有专用硬件单元。不需要像GPU那样用通用计算单元去模拟。
  2. 数据流优化:计算和访存可以流水线并行。我在做算子映射时,经常利用这个特性来隐藏访存延迟。
  3. 低精度计算:INT8、INT4甚至二值化。精度损失可控,但性能翻倍。我有个项目把模型从FP32量化到INT8,精度只掉了0.3%,速度提升了4倍。

注意:NPU不是万能的。对于动态形状的模型、稀疏计算、不规则的数据结构,NPU的表现往往不如GPU。选型时要根据实际模型特点来定。我曾经在一个NLP项目上硬上NPU,结果因为动态序列长度导致计算阵列利用率极低,最后换回了GPU。

1.5 本章知识体系

下面这张图是我自己整理的NPU知识体系。做算子映射和显存优化之前,先把这些基础概念理清楚。

NPU算子映射与显存优化知识体系 NPU基础 架构演进 主流产品对比 AI推理核心地位 独立协处理器 → SoC集成 数据流架构 → 脉动阵列 昇腾 / 寒武纪 / Google TPU 高通 / Graphcore / 地平线 硬件级算子加速 数据流优化 / 低精度计算 算子映射与显存优化实战 本章重点:打好NPU基础,为后续算子映射和显存优化做准备

这张图把NPU的知识体系分成了三层。最底层是基础,中间是核心概念,最上层是实战。我个人习惯是先理解架构演进,再对比产品,最后理解NPU为什么能成为AI推理的核心。这样学起来不会觉得散。

学习建议:如果你刚开始接触NPU,建议先花一周时间把本章的基础概念吃透。尤其是数据流架构和脉动阵列的原理。我见过太多人一上来就调算子,结果连计算阵列的大小都不知道,调出来的性能惨不忍睹。

好了,第一章就到这里。记住一句话:NPU是为AI推理而生的专用处理器,理解它的架构和定位,是做好算子映射的第一步。