在这个刚刚过去的9月,有个东西成为了讨论的热点话题——NPU,直译为神经网络处理器,当然,在已经推出的两款明确具备NPU单元的芯片产品上——华为麒麟970和苹果A11 BIONIC上,又各有各的称呼。我看了看,其实很多人对于这个玩意儿的存在意义和功能都是一头雾水,它真的如厂商宣传所说,能大幅度改变我们的使用体验吗?其实在我看来,有两个意义,第一个意义,是在2017年10月刊《新潮电子》的扉页上写明的,一是有实力的厂商秀肌肉,第二个意义嘛,在这里我们就来集中聊聊吧。而就在9月29日一早,华为官方发布了首支Mate 10预告片,不仅直指10月16日慕尼黑发布会,更将AI智能展露无遗。
什么是NPU?
在聊本文的主题之前,先有几个概念是必须要弄清楚(非特别说明,都以手机为例)
CPU——中央处理器,这个最简单,大家应该是见得最多的东西,就不详细解释了。作用自然就是整台手机的核心,大事小情,基本都得通过它做决定。CPU虽然重要,但它的问题是因为要照顾各种通用的计算需求,效率与功率之间很难兼顾。
GPU——图形处理器,这个也比较简单,因为也见得很多。顾名思义,它的工作是与显示相关得更多,不过呢,因为GPU的一些特性和优势,现在它也会帮CPU做不少计算的工作,减少老大哥的负担,加整个系统的运行。比如早期的Android手机的卡顿问题,到Android 4.0之后,就通过GPU来分担一些CPU的渲染工作,从而加强整个系统的流畅性。
DSP——数字信号处理器,这个字面意思好理解,但放在手机上就要复杂一些。因为手机上各种各样的数字信号太多了,摄像头捕捉到的影像信号算,话筒收到的语音信号也算……如果各种数字信号都要让CPU来处理的话,不仅存在GPU那样的效率问题,而且还有功耗偏大的问题。所以,工程师们就针对不同数字信号的特点与处理,设计出了各种各样的DSP来解决这些问题:比如我们见得最多的ISP,即图像信号处理器,就能算是DSP的一种,另外,还有用来处理音频信号、传感器信号的DSP等,由于任务比较专一,能在各方面进行针对性的优化,所以DSP在执行自己擅长的任务时,不但速度快,功率往往也更低。
NPU——神经网络处理器。看过前边三个名词,就很好解释这个玩意儿了,它其实也是一种专用处理器,简单理解成为DSP的一种应该没问题,但我可能会被打,就还是从善如流吧。它的任务,主要是用于神经网络算法的运算任务,它是这一干处理器中的新面孔。
异构计算——通过技术手段,把前边说到的那些处理器,组合在一块芯片上,完成整台手机多样化的任务需求,就叫异构计算。这样做能让整个芯片的体积更小,功率更低。
好了,几个名词解释完了,再来解决这个问题:为什么NPU的工作,不能让前边那几种处理器来完成呢?这又涉及到指令集和算法的问题,但再要解释清楚这个问题,估计我自己都觉得累,就略过吧。简单点解释就是:人工智能算法,即神经网络算法的运算机制,用前几种处理器来跑并不合适,效率低不说,功耗手机电池也扛不住,这个时候就需要像NPU这样的处理器来介入了。
NPU为何而来?
接着前边说:有个非常著名的例子,谷歌曾使用上万个x86 CPU核,运行7天来训练一个识别猫脸的深度学习神经网络算法,而更有名的AI围棋程序Alpha Go,它也是基于深度学习神经网络算法的,运行它下围棋,一盘棋下来,光是电费就得要3000美元。当然,无可否认,这些应用对数据运算量的需求极大,但也说明我们传统的、常见的处理器以及适合它们的指令集,并不适合人工智能算法。比如早在2015年,高通就已经针对其骁龙820处理器,推出了人工智能深度学习的SDK(软件开发工具),但那也只能让应用程序利用已有的CPU、GPU、DSP等处理器,改变相应的算法,近可能的去模仿NPU的工作机制从而实现人工智能,但这最多也只能说是模仿了。
一个小小的NPU到底有多强大呢?以苹果为例,新发布的iPhone X所采用的Face ID安全机制,在识别人脸解锁的瞬间,需要对前置摄像头扫描到的数万个参考点进行扫描比对,然后判断解锁。这就得依靠其内置的双核神经引擎,其每秒可以达成6000亿次操作,从而让扫描识别解锁的体验一气呵成——用传统的处理器应该也能完成,但其速度应该远达不到苹果的体验要求。不仅如此,新款iPhone上的环境光识别+人像模式的计算,也有相当部分是依托双核神经引擎来承担运算任务。以苹果官方的说法是:“这些任务,由A11 BIONIC芯片的CPU+GPU+ISP+NPU起分担协同运算完成的。”
再比如华为麒麟970,其内置了HiAI移动计算架构(即NPU+算法的集合体),其相较于构成CPU部分的四个Cortex-A73性能核心,NPU在处理同样的AI应用任务时,拥有大约25倍性能和50倍能效优势,比如官方宣称其图像识别速度,可达到约2005张/分钟。而据官方宣传,HiAI移动计算架构将会在华为手机的很多功能模块中起作用,比如拍照应用中的双摄人像、降噪等各种场合,还有语音识别等。
这时候肯定有朋友要问了:“你前边不是说有专门用来处理影像数字信号的ISP么?NPU又来参个什么鬼?”还是那句话:不够使了呗。过去的手机影像,仅仅是单个摄像头而已,而现在,像素不但动辄1600万甚至2000多万,而且还不只两个,是三个四个,而且还有各种各样的算法优化,而且还不是后处理是实时处理,然后还有4K@60fps超高清摄录,再往后,AR、3D实时扫描再加入……我已经不敢想象了。想想现在我们用的手机,拍照或是摄像时间略微一长,机身发烫,电池消耗如尿崩,这就是ISP、GPU、CPU一堆处理器火力全开的结果。如果能将这些运算工作都交给NPU,理论上情况就会大为改观,因为它的特点,注意就是为超大数据量吞吐运算而生。毕竟桌面CPU的发展历程已经证明,传统架构处理器的天花板是看得见的,只能另辟蹊径。
NPU的潜力有多大?
好了,既然NPU这么生猛,应该有朋友会产生两个疑问:第一,神经网络算法这么好,为什么以前没用?第二,NPU会不会像CPU这些传统处理器,很快达到上限?
其实人工智能出现得很早了,人工智能三要素也很早就确立了:算法、计算和网络,看了这个你就应该明白了,算法没问题,流派也很多,以前制约人工智能发展最主要就是因为硬件——运算能力不足和网络速度太慢,而到了今天,这些问题都解决了,当然人工智能就能迎来又一春。举个例子,现在如火如荼的智能音箱,我们随口说了一句指令,要是网络不行,等了半分钟才把结果反回来,那场面会是何其尴尬,对吧。此外,现在主流的程序,其编写和编译,都是按主流处理器的指令集为基础来的,而且在高负荷、极大运算量,比如服务器、数据中心这些领域,传统处理器自然有它的优势,而NPU虽然性能强大,但目前也只在几个领域上能发挥作用,当个辅助没问题,但要成为主力输出,火候尚欠,所以我们能看到最先推出内置NPU的两家,苹果和华为,都将算法和开发工具进行了开放,更好地发挥NPU的功力,得大家一起努力才行。
然后就是另外一个问题了:人工智能算法除了依托于运算能力和网络,庞大的数据同样重要,但问题是:我们本地设备的存储空间不但有限,而且成本也并不低,并不适合人工智能算法的长期学习与进化,那怎么办呢?
对此,华为在发布麒麟970的时候,也给出了自己的解决方案:端侧人工智能+云端人工智能相结合的方式。一方面,由处理器上的NPU,依据华为研发出来的算法,结合用户的使用习惯,进行本地化的学习,另一方面,云端处理器和算法,由华为诺亚方舟2012实验室的工程师们继续优化,然后再以升级的方式,进化手机端的HiAI移动计算架构。
这样做好处很明显。比如前边提到的ISP,性能再强大,在面对需求越来越高的移动影像处理时,也是有上限的,要是遇上有些影像算法升级,超过了原来ISP的处理能力,用户就只能遗憾地错过。但是NPU则不同,伴随着学习与算法升级,它的性能冗余度比起传统的处理器要高得多,遇上这种升级,要是主要的算法是由它来承担,那么我们当然就能更好地享受到,理论上这能让智能手机的性能寿命变得更长,同时体验也应该会更好。
写在最后
科普得差不多了,进入例行的BB时间。搭载A11 BIONIC的iPhone 8 Plus刚上手没几天,搭载华为麒麟970的首作机Mate 10也还没有发布,所以NPU的表现具体怎么样,我还没有办法告诉你。但可以肯定的是,当智能手机市场进入现在这个节点,芯片级的竞争和技术壁垒,将取代供应链、渠道这些常规因素,成为又一个热点。真正有实力的厂商,会着力布局在这一方面,因为未来几年,产品的差异化体验,恰恰需要这些芯片发挥举足轻重的作用,不管是NPU也好,还是DSP也好,抑或是影像芯片,都会成为各家厂商的重点,不信我们走着瞧。