论Kirin 970的人工智能NPU的工作原理
扫描二维码
随时随地手机看文章
日前,美国知名科技媒体Android Authority主笔Gary Sims对麒麟970进行了深度解读,讲述了麒麟970的人工智能NPU的工作原理,对芯片设计的深远影响,以及为用户使用场景带来的跨越式体验。
“神经网络(Neural Networks)”和“机器学习(Machine Learning)”是近两年移动处理器领域最流行的两个词。华为麒麟970的NPU(神经网络处理器)、Google Pixel 2内置的IPU(图像处理器),以及苹果A11 Bionic,都是实现上述功能特性的专用硬件解决方案。
既然华为、Google和苹果都在都在探索神经引擎处理器,你可能以为机器学习需要特定的硬件。其实不然,神经网络可以在任何形式的处理器上运行,从微处理器到CPU、GPU甚至是DSP。
所以,问题的根本不在于处理器是否能利用神经神经网络和机器学习,而在于它到底有多快,能提升多少效率。
如果时间倒退回30年前,当年的桌面处理器是没有的FPU(浮点运算单元)芯片的,在486之后,Intel把FPU集成到了CPU内部,浮点运算性能大幅提升。而在很多实例计算中,全都是浮点数运算。这样以来,有FPU和没有FPU,运算效率天差之别。
而如今,移动处理器中的NPU也是类似的情况。你可能觉得我们并不需要NPU,就能使用神经网络,但实时情况是,华为正在用事实案例证明,当遇到实时处理运算的情况,NPU是必须的。
简单来说,“神经网络”可以理解为“机器学习”中“教”一台机器区别分辨不同“事物”的一系列技术中的一种。上述“事物”可以是一张照片、一个单词甚至是一种动物的声音,诸如此类。
“神经网络”由很多“神经元”组成,这些“神经元”可以接收输入信号,然后通过网络再向外传播信号,这取决于输入的强度和自身阈值。
举个简单的例子,神经网络正在监测一组灯其中一个的开关,但在网络中,这些灯的状态只能0或者1来表达,但不同的灯可能会出现一样的开关状态。
那么问题来了,神经网络怎么知道是该输出0还是该输出1呢?没有规则或者程序能告诉神经网络,输出我们想得到的逻辑答案。
唯一的方面就是对神经网络进行训练。大量的“样本”和预期结果一起被注入到神经网络中,各种各样的阈值反复微调,不断产生接近预期的结果。这个阶段可以称为“训练阶段”。
这听起来很简单,但实际上相当复杂,尤其是遇到语言、图像这种复杂样本的时候。一旦训练达成,神经网络会自动学会输出预期结果,即便输入的“样本”之前从来没有见过。
神经网络训练成功后,本质上就成了一种静态神经网络模型,它就能应用在数以百万计的设备上用于推理,在CPU、GPU甚至是DSP上运行。这个阶段可以称为“推理阶段”。
Gary Sims指出,“推理阶段”的难度要低于“训练阶段”,而这正是NPU发挥专长的地方。
所以,华为麒麟970最大的不同是,专门设置了NPU硬件芯片,它在处理静态神经网络模型方面有得天独厚的优势,不仅更快,还更有效率。事实上,NPU甚至能以17-33fps实时处理智能手机摄像头拍摄的“直播”视频。
从架构来看,麒麟970像是一台“发电站”,内置8颗CPU和12颗GPU,另有移动网络连接以及多媒体处理模块,晶体管规模达到了史无前例的55亿颗。据华为透露,NPU大约内含1.5亿晶体管,不到整个芯片的3%。
这对于一款移动处理器来说尤为重要。首先,NPU的加入不会明显增大处理器的尺寸、成本,这就意味着,NPU不仅能放入旗舰手机,一些中端手机也能适用。在未来5年,NPU将对Soc设计产生深远影响。
其次是功耗和效率。NPU并非“电老虎”会牺牲手机的续航,相反它能高效的帮CPU承担大量推理运算的任务,反而能节省不少功耗。
在最后的总结中,Gary Sims表示,如果华为能吸引更多第三方App开发者使用NPU,其前景不可限量。想象一下,当App在使用图像、声音、语音识别的时候,全部都能本地处理,不再需要网络连接或者云服务,App的使用体验将大大提升和加强。