npu与ai 为什么NPU比GPU更适合AI加速计算

用户投稿 22 0

为什么NPU比GPU更适合AI加速计算

今天咱们聊聊NPU。

npu与ai 为什么NPU比GPU更适合AI加速计算

大家对于CPU、GPU这些常见计算单元已经比较了解,但是对于NPU却可能并不清楚它的工作原理和具体作用。

npu与ai 为什么NPU比GPU更适合AI加速计算

npu与ai 为什么NPU比GPU更适合AI加速计算

NPUNeural Network Processing Unit ,也就是神经网络处理器 ,从命名就可以看出它是专门应用于AI领域的计算单元 。因此相对于CPU、GPU这些通用计算单元而言,NPU理论上是一种无需通用化的特型计算单元 ,也就是只做好“AI加速 ”这一件事情就可以了。

虽然目前对于NPU的开发和利用还处于极为初级的阶段,应用方面也只是摄像头背景虚化、降噪等少数一些功能会用到。但实际上NPU自身的计算架构设计特性,决定了它具备比GPU更快的AI计算加速能力。

要理解这一点,首先肯定是要了解NPU究竟是如何从硬件层面对神经网络实现加速的?

Meteor Lake,也就是第一代酷睿Ultra,是英特尔首个集成NPU的处理器。从NPU架构设计可以看到,它的核心是两个神经计算引擎 ,而核心中的核心是两组MAC阵列(Multiplier and Accumulation)

npu与ai 为什么NPU比GPU更适合AI加速计算

我们都知道,AI大模型推理计算 简单来说就是在反复做矩阵乘法与加法 ,其计算结果率先生成预测数据 ,并通过不断计算让预测数据与真实数据实现最大程度的拟合 ,以缩小预测数据与真实数据之间的差异 ,进而最终推理出结果并在用户侧生成所谓的答案。MAC阵列就是为此而生,因此MAC阵列越多乘法与加法计算的速度就越快计算速度越快拟合的过程就会不断提速 ,最终反映在应用端的就是AI大模型的生成速度加快。

最新的Lunar Lake ,也就是第二代酷睿Ultra处理器,NPU中的神经计算引擎增加到了6个MAC阵列也随之扩充到了6组 ,理论算力提升3倍。但由于目前大模型推理的主要负载都在GPU上,所以NPU的加速优势暂时无法得到体现。

npu与ai 为什么NPU比GPU更适合AI加速计算

那么为什么NPU更适合做AI计算加速呢?

我们先来看看GPU是如何做矩阵计算的。

以简单的4×4矩阵乘法为例,矩阵中的每一行每一列的每一个数都要进行16次乘法,所以总计需要进行16×4=64次乘法计算,同时,每一行每一列的每一个数乘完之后都要做一次加法,所以总计算需要进行16×3=48次加法计算。而GPU和NPU计算加速,本质上就是想办法去提升这64次乘法和48次加法计算的速度。

那么GPU与NPU在计算时有何不同呢?

首先GPU最擅长的就是做并行计算。其内部有多个可以同时工作的乘法与加法计算单元。虽然并行计算速度非常快,且能够同时完成多个计算任务,但每一次计算之前 ,都需要先把数据加载到缓存内之后GPU控制器 会从缓存中把数据取出来放入乘法计算器计算出结果然后再把结果放回缓存中之后控制器再把计算结果放入加法计算器中求和之后再将结果放回缓存最后再将前面求出的和放到加法计算器中求和 ,这个结果才是一次乘加计算的最终结果。

npu与ai 为什么NPU比GPU更适合AI加速计算

举个例子,如果想要计算a11=3×2+2×2+4×1+5×4这个算式,首先需要把这些数读入上图所示意的缓存中,之后读取到乘法器中,分别计算3×2、2×2、4×1以及5×4这四个乘法的结果,再将其结果6、4、4、20四个数放回缓存。我们将这一过程的指令定义为【指令1:乘法】

之后将6、4、4、20四个数放入加法计算器,求出6+4、4+20的和,并将10和24放回缓存。这一过程的指令为【指令2:加法】

最后将10和24放入加法计算器,求出10+24的和34,这一过程的指令为【指令3:加法】

那么如果想要完成4×4矩阵计算,就需要把上述过程再“复制”15次,就可以完成这一矩阵计算任务。也就是说用GPU计算4×4矩阵的话,只需要3条指令 即可完成,速度其实已经非常快了。

但从描述中可以看到,想要进行一次简单的4×4乘法与加法矩阵计算,就需要经历:缓存-乘法计算器-缓存-加法计算器-缓存-加法计算器这一系列计算步骤。 如果是更大矩阵的计算,那么速度变慢是必然的。比如满血DeepSeek-R1的参数量达到了671B,也就是6710亿参数,想要在如此庞大的数据参数量里做矩阵乘法与加法,硬件性能压力可想而知。

那么有没有比“3条指令”更快的方法呢?

其实聪明的朋友一定发现了,GPU每次计算都要在计算器与缓存器之间将数据来回搬运,如果简化这个步骤,那么速度岂不是就加快了?

没错,NPU的计算架构思路就简化了每次计算都要存取缓存的设计。

如下图所示,NPU的计算阵列利用新建的管道(橙色示意),将乘法器和加法器直接相连,此时乘法器计算完的中间结果就会通过管道直接流入加法器进行加法计算,之后再将结果流入加法器进行最终的加法计算,这样只需要一条指令 ,即可完成整个乘法到加法的计算过程。

npu与ai 为什么NPU比GPU更适合AI加速计算

当然,GPU和NPU的计算架构设计并无严格意义上的优劣之分。

GPU是通用计算单元 ,其计算器设计思路能够满足计算公式的自由构建。

NPU是专用计算单元不需要那么高的灵活性 ,所以人为加入管道之后,只做特定公式计算就可以。

比如,GPU可以做a×b+c×d×e×f或a×b+c×d×e+f等等这样不同的公式计算,但NPU大都只能计算a×b+c×d+e×f这种公式。

当然,英特尔、AMD、苹果设计的NPU可能会有不同的计算器架构,如乘-加-乘或乘-加乘-加乘等等,排列组合方式不同决定了内部数据流动的方式有所差异。另外不同的计算架构设计、不同规模的计算矩阵也会决定其擅长计算哪种数据类型。比如我们常提到的FP16、INT8、INT4等,计算速度就与乘加计算器架构的设计和矩阵规模直接关联。

如下图所示,同样是FP16精度的计算,A100矩阵规模远小于H100,所以后者的计算速度自然就更快。

npu与ai 为什么NPU比GPU更适合AI加速计算

此外,AI时代的GPU与NPU等计算单元已经与传统意义上的GPU、NPU有所区隔。比如N卡中的TensorCore,实际上就是专用于AI计算的矩阵单元。而某些NPU计算单元除了包含专用于AI计算的矩阵阵列之外,还会融合向量、标量计算单元甚至CPU核心,从而可以更好地满足AI计算时不同的算子需求。

(9769370)

打不过麒麟9000?骁龙888的AI性能到底有多强?

毫无疑问,AI正在成为判断手机SoC体验好坏的重要指标,因为系统运行的流畅度、拍照成像算法的优化以及很多交互功能都需要人工智能辅助,因此我们有必要了解时下主流SoC的AI性能强弱排行。

npu与ai 为什么NPU比GPU更适合AI加速计算

在AI Benchmark官网可以查看详细的排行榜单

安兔兔和鲁大师等跑分软件都提供了AI性能测试的专属环节,但就专业和认可度而言,来自苏黎世联邦理工学院推出AI Benchmark才是当前最具说服力的基准测试工具,该APP会使用MobileNet -V1、InceptionV3、Resnet - V1等在内的9种神经网络模型进行测试,项目包含2个物体识别分类、2个超分辨率,其余是人脸识别、图像去模糊、语义图像分割、图片增强和内存极限测试。

需要注意的是,SoC厂商官方公布的AI单元理论性能,与AI Benchmark实际的跑分成绩可能并不成正比。以骁龙865为例,其采用的由CPU+GPU+DSP构成的第五代AI Engine引擎理论AI算力高达15TOPS,但在AI Benchmark中却只能跑出最高93左右的分数,远低于联发科天玑1000+的139分,仅与天玑800相当。要知道,天玑1000+集成NPU3.0的理论AI算力只有4.5TOPS。

这个问题的背后,可能是AI Benchmark的评测机制无法发挥AI Engine引擎的真正实力,也可能是CPU+GPU+DSP组合方案的效率真的不如专用的AI单元。

npu与ai 为什么NPU比GPU更适合AI加速计算

作为高通新一代旗舰级SoC,高通骁龙888延续了家族前辈通过CPU+GPU+DSP等模块携手进行端侧AI运算的设计,只是这一次新添了名为Sensing Hub传感器的部分,一同构成了第六代AI Engine引擎,其算力高达26TOPS。

npu与ai 为什么NPU比GPU更适合AI加速计算

不过,从首发骁龙888的小米11手机在AI Benchmark上的跑分成绩来看,139的分数虽然大幅领先上代前辈骁龙865,但也只是追平了天玑1000+,距离集成2+1达芬奇架构2.0架构NPU的麒麟9000还有相当大的距离。

虽然AI Benchmark的评测并不能保证100%公允,但至少说明高通骁龙在AI方面还大有优化空间可挖。

npu与ai 为什么NPU比GPU更适合AI加速计算

相关问答

三星提出的NPU设计新思路,对降低移动设备的AI计算功耗有多大的作用?

作为当下最热的议题之一,人工智能(AI)总被许多电子产品制造商提起。最为技术领域的一个重大事件,其有望渗透从网络、到家庭、以及移动设备的各个方面。然而...

麒麟9905g版,不看5g,ai,npu,性能,功耗比855+强吗?

这次的麒麟9905G在NPU上也做了很多升级,不仅搭载了之前首发在麒麟810上的达芬奇架构NPU,还采用了两大一微的架构(麒麟990是一大一微)。在NPU极限算力方面要超过...

抱歉,评论功能暂时关闭!