首页>>科技 >>内容

NPU的简介以及Kirin,970的NPU的性能测试解析

发布时间:2023-10-11 23:07:14编辑:温柔的背包来源:

很多朋友对NPU的简介以及Kirin,970的NPU的性能测试解析不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

NPU的简介以及Kirin,970的NPU的性能测试解析

去年,华为推出了业界首款集成NPU的移动芯片麒麟970。作为新一代旗舰,这款SoC上的CPU集成了八个核心,其中四个是高性能ARM公A73架构,最高主频2.4GHz(麒麟960为2.36GHz),四个是低功耗ARM公A53架构,最高主频1.8GHz(麒麟960为1.84 GHz)。GPU是集成了ARM的最新Mali-G72架构。

此外,麒麟970除了传统手机SoC必备的通信基带、ISP、DSP、编解码、协处理器,还首次集成了专为深度学习设计的NPU,FP16性能达到1.92 TFLOP。具体来说,NPU是CPU的25倍,GPU的6.25倍(25/4),能效比是CPU的50倍,GPU的6.25倍(50/8)。这是华为在火热的人工智能市场抛出的杀手锏。

以上都是华为的话。我们来讨论一下华为芯片NPU的真正实力。首先,我们来了解一下NPU的概念。什么是NPU?准确地说,当我们谈到人工智能在计算领域的应用时,更多强调的是机器学习。当我们讨论人工智能在硬件层面的深入研究时,更多的是讨论卷积神经网络对于专门硬件模块的优化和实现。

在解释卷积神经网络如何工作时,我们从80年代以来的工作已经远远超出了研究工作,其根本目的是试图模拟人脑神经元的行为。注意,这里的一个关键词是“模拟”,虽然迄今为止还没有神经网络能够从硬件层面模仿人脑的结构。

然而,在学术领域,尤其是在神经网络领域,有许多理论。在过去的十年里,开发了一套软件,在GPU的硬件层面模拟整个过程。例如,研究人员通过不断迭代和发展CNN的模型,大大提高了新闻的准确性和效率。当然,GPU不是最适合运行人工智能的硬件,也不是唯一可以进行高度并行运算的处理器。

随着人工智能的不断发展,越来越多的公司希望将人工智能在实际应用中商业化,这就需要硬件提供更高的性能和更高的效率。所以我们也看到了更专业的处理器的出现,其架构是针对机器学习等应用的。

谷歌是第一家宣布推出这种硬件的公司,它在2016年推出了TPU。然而,这种专业硬件虽然在处理人工智能等工作时可以在硬件和功率上实现更高的效率,但也失去了灵活性。谷歌TPU芯片和主板

在这类专用人工智能处理器中,影响其工作效率的主要有两个方面:必须有一个经过训练的模型,主要包括模型在未来运行中可能涉及的相关数据。一般来说,模型的训练是密集的,需要大量的训练才能达到较高的精度。换句话说,在实际操作中,有效的神经网络远大于实际使用的神经网络。

所以一般的思路是模型的主体训练由更大的GPU服务器或者TPU云服务器来完成。其次,神经网络的运行需要一个执行模型,整个过程是通过不断注入新的数据,完成模型的计算来实现的。一般我们把输入数据,然后通过神经网络模型得到输出结果的模式称为推理。

但是实际的推理过程和模型中的训练过程对计算的要求也有很大的不同。虽然推理和训练都需要高密度的并行计算,但推理可以用低精度的计算来完成,执行模型部分所需的计算性能也较低,这意味着推理过程可以在更便宜的硬件上进行。

这个功能反过来导致整个行业更加关注边缘设备(用户设备),因为这些设备可以提供更高的性能效率和更低的功耗。也就是说,如果本地设备中有训练好的模型,就可以使用该设备进行推理,而不需要将数据上传到云端服务器进行数据处理。

这个过程将缓解可能的问题,例如延迟、功耗和带宽,并且还避免了隐私问题,因为输出数据永远不会离开用户设备。随着神经网络推理功能在终端设备中的不断实现,不同处理器能实现什么功能的研究和选择也在不断深入。

CPU、GPU甚至DSP都可以在终端设备上实现推理功能,但这些处理器之间存在巨大的效率差距。通用处理器适用于大多数工作,但本质上不是为大规模并行计算而设计的。GPU和DSP表现更好,提升空间巨大。不过除此之外,我们也看到了新的处理加速器的出现,比如麒麟970使用的NPU。

因为这种处理加速器是一种新兴的器件,到目前为止,业界还没有拿出统一的命名方法。华为海思是一种命名方式,苹果是另一种命名方式。然而,在普遍意义上,我们可以将这些处理器统称为神经网络IP。

麒麟970 NPU的IP供应商是一家名为寒武纪的中国IP供应商。据了解,NPU采用的IP是优化的产物,而不是直接采用现有的IP。同时,华为也要求Cambricon共同开发和完善该IP,因为在实际应用中,实际情况与计算仍有一些差距。

但是我们需要明白,要避免过分关注神经网络的理论性能数据,因为这些数据与实际性能没有必然联系,而且由于我们对神经网络的IP了解有限,最终的结果也是未知的。当使用CPU之外的硬件设备来运行神经网络时,第一个障碍是使用合适的API来访问模块。

传统的SOC和IP厂商已经能够使用这种硬件为神经网络的应用开发提供专门的API和SDK。海思提供的API不仅可以管理CPU,还可以管理GPU和NPU。虽然海斯还没有公开这个API,但据了解,海斯将在今年晚些时候与开发者一起开发它。

其他厂商,如高通,也提供SDK来帮助程序开发人员在GPU和DSP等硬件的基础上开发神经网络。当然,其他IP厂商也提供自己专用的软件开发工具进行相关开发。然而,特定供应商的API也有局限性。在未来,我们需要不同的供应商提供统一的API,以便更快、更方便地开发。

谷歌目前正在开展这项工作,该公司计划在Android 8.1中引入一个名为NN API的相关模块。另一个需要注意的问题是,很多NN API只能支持部分功能,比如NPU。如果开发者想在NPU的基础上充分开发利用硬件的性能,就需要有专门的API来开发这类硬件。

为了完成这种开发工作,我们还需要一个基准测试来测试不同供应商提供的API可以利用NPU的多少性能。不幸的是,在现阶段,我们仍然缺乏一种类似的方法来实现这一基准。目前国内只有一家厂商推出了相关软件:在国内广受欢迎的鲁大师基准软件(Master Lu benchmark software),最近推出了基于人工智能测试的框架,测试NPU和高通SNPE框架。

据了解,目前该基准可以测试VGG16、InceptionV3和ResNet34三种不同的神经网络。这类软件不仅可以测试相关处理器的性能,还可以给出相关的结果。同时,它还可以从平均功耗、效率和绝对性能三个维度图形化地展示处理器的处理能力。从这类软件呈现的图形数据中,我们可以观察到处理器的性能差异,以及CPU和NPU在相关操作上的差距。

使用CPU进行计算时,通常CPU只能以1-2fps的速率进行计算,所需功耗极高。比如骁龙835和麒麟960的CPU在运行时,都需要以超过平均负载的工作负载运行。相比较而言,高通的Hexagon DSP相比CPU5可以实现5到8倍的性能。华为NPU的表现就更明显了。与ResNet34相比,NPU可以实现4倍的性能提升。

不难发现,不同的处理器由于设计不同,处理器应用场景不同,表现出如此巨大的性能差异。由于卷积神经网络在运行的过程中需要大量的并行计算,所以像麒麟NPU这样的专用处理器在执行的过程中往往可以达到更高的性能。

在功耗方面,我们发现与其他处理器相比,NPU可以实现50倍的提升,尤其是在卷积神经网络的实际应用中,这一点更加明显。同时我们也发现高通的DSP也可以做到和华为的NPU差不多的功耗水平。这似乎表明,高通的骁龙845处理器中使用的Hexagon 685可以将性能提高三倍。

在这里,我想抱怨一下谷歌的Pixel 2:由于Pixel 2缺乏对SNPE框架的支持,很难对骁龙835的CPU进行真正意义上的基准测试。然而,从某种意义上来说,这是理所当然的。毕竟谷歌只会在Android 8.1中引入NN API,未来谷歌自然会在相关处理器中推动Android标准API的加速。但是,另一方面,也会限制传统手机OEM厂商的开发能力。

这个决定往往会限制生态系统未来的发展,这也是为什么我们没有看到更多的手机GPU来加速相关的卷积神经网络。另外,虽然iPhone目前不支持相关基准,但是从海思公布的相关数据中也可以看出一些端倪。

从一些数字中我们可以看到,虽然苹果提供的神经网络IP在性能上超越了骁龙835处理器,但仍然远远落后于海思的NPU。然而,我们无法独立核实这些数字是否真的适合相关基准。当然,最重要的问题是,这样的处理器能带来什么好处?

海斯说,一个明显的例子是,在交通繁忙的情况下,通过应用降噪处理器,CNN可以将语音识别的准确率从80%提高到92%。此外,在相机应用方面,Mate 10的相机可以在NPU的帮助下,通过推理识别不同的场景,然后根据场景智能优化相机设置。

同时Mate 10中应用的微软翻译程序也可以使用NPU的离线加速翻译功能,给我留下了深刻的印象。在手机内置的图片应用中,也可以智能识别图片进行分类。除了NPU对卷积神经网络进行相应的视觉处理,Cadence的Tensilica Vision P6 DSP和高通的Hexagon 680 DSP也可以实现同样的功能,但目前都没有对终端用户开放。

但是,这并不意味着搭载NPU的Mate 10能给终端用户带来决定性的差异化体验。同样,这种神经网络在手机中的应用,在汽车、安防摄像头等领域也没有同样的杀手级应用。

另外,由于生态系统有限,我们只能在Mate 10中看到相关应用。能否在更多场景中看到它们,华为是否愿意和开发者一起开发,值得商榷。不过华为在这方面的创新还是值得肯定的。

前面说过,华为和微软联合开发的应用似乎是Mate 10上最吸引人的应用,我们可以在此基础上进行更多的探索。目前该应用可以智能识别传统外文文本并进行翻译,那么未来是否可以应用到AR中呢?

联发科在CES上给我们展示了一个相关的识别例子:使用神经网络的视频会议编码器可以识别CNN的图像和视频,并反馈给编码器,从而提高视频的质量。在未来,可以想象会有越来越多的设备采用这种IP,开发者将能够更容易地开发相关应用。

最后,我不想在本文中强调麒麟970有多先进,只是想借此机会说明,未来高端Android智能手机处理器的竞争和发展格局将会有很多令人振奋的变化。随着iPhone智能手机生态系统10周年的到来,我们也看到越来越多垂直集成设备的出现。

并不是说苹果一定是规则制定者,而是在未来,在一个更成熟的生态系统中,公司需要能够自主掌控自己的发展路线。否则手机厂商将很难与其他厂商区分开来,更不用说为用户提供差异化的功能或者与其他厂商竞争。苹果早就意识到了这一点。华为也是唯一一家可以自己组建目前OEM的OEM厂商。

与此同时,很多准自主厂商也在尝试自己设计芯片,他们依靠从IP供应商那里获得的CPU、GPU等关键部件进行设计。从根本上来说,麒麟970在CPU性能和功耗上与骁龙835相差不大,其误差只体现在cortex-a73的实际应用上。

考虑到骁龙820使用的CPU虽然与三星自主研发的略有不同,但在实际应用中并不明显,而且三星也没有完全研发和集成自己CPU的计划,华为采用ARM CPU是有道理的。高通本身在自主设计CPU和GPU方面有一定的自主控制能力,与其他厂商差距较大。

想象一下,桌面GPU的老大英伟达,相比竞争对手有33%的效率竞争优势。当这种优势扩大到75-90%时,这种选择就不言而喻了。在这种情况下,厂商可以通过使用更大的GPU来弥补效率和性能上的缺陷,而这些体验终端用户几乎很难感受到。然而,这是一个不可持续的方案,因为它正在侵蚀制造商的毛利率。

除了CPU和GPU以及调制解调器IP之外,手机还需要更多的组件,这里就不深入探讨。

比如说,在麒麟970中使用的Cadence Tensilica Vision P6 DSP确实能够提升相机的性能,但是也需要从软件方面来进行支持才可以。

NPU是一种尚处于起步阶段的新兴IP,麒麟970有很多竞争对手吗?并没有。这一功能为产品增加了竞争力吗?确实有,但可能没有想象中那么大。

软件生态系统的发展确实会拖慢手机产业的发展,但是没有相关硬件的支持,很多应用只有软件也是没有办法实现的。

华为的这一策略将来在全行业采用将是不可避免的。

海思的NPU芯片证明海思作为一家芯片设计公司也能够设计出与高通,三星匹敌的处理器。但是,海思的发布时间并不遵循传统安卓手机厂商的发布规律,因此我们预计会有新的处理出现,在性能方面超过麒麟970。

现实是,华为是能够将芯片设计和终端产品整合在一起的唯一两家OEM供应商之一(编者按:其实三星也算一家,但是三星似乎采用高通的方案更多),也是唯一一家安卓厂商。在过去的几年里,这家厂商已经走过了漫长的道路,经历了太多的改进。最重要的是,华为始终能够把目标和执行目标放在一起,坚定不移的朝着移动业务这一正确方向发展,这是他们成功的关键原因。

但对这家中国厂商来说,未来的路还是很长。

以上知识分享希望能够帮助到大家!