一、NPU概述:什么是NPU、NPU与CPU/GPU的区别、NPU的发展历程与典型产品
各位同学,咱们今天聊聊NPU。说实话,我做了这么多年AI芯片,每次跟人介绍NPU时,对方第一反应往往是:「哦,就是那个专门跑AI的芯片?」——嗯,对,但不全对。让我从最基础的地方开始讲起。
1.1 什么是NPU?
NPU,全称Neural Processing Unit,中文叫神经网络处理器。说白了,它就是一颗专门为神经网络计算设计的芯片。你想想看,CPU什么都能干,但干AI活效率低;GPU能并行算,但功耗高;NPU呢?它只干一件事——把矩阵乘法和卷积做到极致。
我个人习惯把NPU比作「AI界的专用螺丝刀」。CPU是瑞士军刀,什么都能拧;GPU是电动扳手,拧得快但费电;NPU就是那个专门拧M3螺丝的定制工具——效率最高,但干不了别的。
核心定义:NPU是一种针对神经网络推理和训练任务进行硬件加速的专用处理器。它通过大量乘累加单元(MAC)、数据流控制、片上存储的协同设计,实现高吞吐、低延迟的AI计算。
1.2 NPU与CPU/GPU的区别
这里我画了一张对比图,帮你快速建立直观印象:
这张图你看懂了吗?CPU把大量面积给了控制和缓存,所以它擅长处理复杂逻辑;GPU把面积给了ALU,所以它擅长并行计算;而NPU呢?它几乎把所有面积都给了MAC阵列和专用数据通路。我当年第一次看到NPU的die shot时,真的被震撼到了——一整块芯片上密密麻麻全是乘法器,控制逻辑被压缩到几乎看不见。
具体差异我整理成了一张表:
| 维度 | CPU | GPU | NPU |
|---|---|---|---|
| 设计哲学 | 通用计算 | 图形/并行计算 | 神经网络专用 |
| 核心单元 | ALU + 复杂控制 | 大量ALU + SIMT | MAC阵列 + 数据流 |
| 数据精度 | FP64/FP32 | FP32/FP16 | INT8/INT4/FP16 |
| 典型功耗 | 15-150W | 150-450W | 1-100W |
| AI推理效率 | 低 | 中 | 极高 |
| 编程难度 | 低(通用) | 中(CUDA) | 高(需编译器配合) |
避坑指南:我曾经在项目里犯过一个错误——用GPU跑一个只有几百KB的小模型,结果功耗爆炸。后来换成NPU,功耗直接降了20倍。记住:大模型用GPU,小模型用NPU,这是铁律。
1.3 NPU的发展历程
NPU的发展,我把它分成三个阶段:
- 萌芽期(2014-2017):2014年,中科院计算所发布了「寒武纪」系列,这是全球最早的NPU原型之一。我记得当时看到论文时,第一反应是「这玩意儿真能跑起来?」——结果人家不仅跑起来了,还比GPU省电10倍。
- 爆发期(2017-2020):华为在2017年发布了麒麟970,内置NPU。苹果也推出了A11 Bionic的Neural Engine。这时候大家才意识到:手机里跑AI,必须用NPU。
- 成熟期(2020至今):NPU开始分化——云端NPU(如Google TPU、寒武纪思元)和边缘NPU(如华为昇腾310、地平线征程)。各家架构百花齐放,但核心思路一致:用硬件换效率。
1.4 典型产品一览
我挑几个有代表性的产品说说:
| 产品 | 厂商 | 算力 | 典型场景 |
|---|---|---|---|
| TPU v4 | 275 TFLOPS | 云端训练/推理 | |
| 昇腾910 | 华为 | 256 TFLOPS | 云端训练 |
| 寒武纪MLU370 | 寒武纪 | 128 TFLOPS | 云端推理 |
| 征程J5 | 地平线 | 128 TOPS | 自动驾驶 |
| Neural Engine | Apple | 15.8 TOPS | 手机端侧 |
注意:算力数字看着很唬人,但实际落地时,带宽和内存往往才是瓶颈。我见过一个项目,芯片标称100TOPS,结果因为DDR带宽不够,实际只能跑出20TOPS。所以选型时别光看算力,要看「有效算力」。
1.5 为什么我们需要NPU?
你可能会问:CPU和GPU已经很强了,为什么还要专门搞个NPU?
原因很简单:效率。神经网络计算的核心是矩阵乘法,一个MAC操作在CPU上可能需要几十个时钟周期,在GPU上需要几个周期,但在NPU上——一个周期就能完成。而且NPU支持低精度计算(INT8/INT4),功耗只有FP32的十分之一。
我举个例子:假设你要在手机上跑一个人脸识别模型。用CPU跑,每秒5帧,手机发烫;用GPU跑,每秒30帧,但电池撑不过2小时;用NPU跑,每秒60帧,功耗只有0.5W。这就是NPU存在的意义。
一句话总结:NPU不是要取代CPU或GPU,而是在AI这个特定赛道上,用专用硬件把效率做到极致。CPU负责调度,GPU负责渲染,NPU负责AI——各司其职,这才是现代计算架构的正确打开方式。
好了,这一章的内容就到这里。记住:理解NPU的关键,不是背参数,而是理解「专用 vs 通用」这个核心矛盾。下一章我们会深入NPU的内部架构,看看那些MAC阵列到底是怎么工作的。