评A11神经网络引擎

苹果在最新发布会上,公布了十周年版iPhone X,极大地吸引了人们的注意力。在iPhone X众多特性中,使用面部识别FaceID代替原有的指纹识别TouchID进行屏幕解锁和身份认证无疑是最大的亮点之一,这有可能成为苹果对于手机交互进步的又一次推动。

FaceID使用了人工智能技术完成人脸三维建模中的特征提取,并且用这些特征配合算法来实现人脸识别。现场演示中,FaceID人脸识别用户体验非常流畅,而在流畅体验背后的功臣,则是A11 Bionic SoC上集成的人工智能加速器,苹果官方称之为“神经网络引擎(neural engine)”。

什么是人工智能加速器

我们首先来看一下什么是人工智能加速器。要理解人工智能加速器的概念,不妨先回顾一下GPU。在上世纪90年代,随着多媒体应用,尤其是3D游戏的兴起,人们发现传统的CPU的架构对于这类需要高速图形渲染的应用力不从心,原因是CPU在芯片上放了许多控制逻辑和缓存单元,真正留给计算单元的芯片面积反而不多。

这时候,人们设计了3D加速卡,以3dfx,Nvidia和ATI为代表的芯片公司在当年可以说是叱咤风云,而随着时间和市场的变迁,3D加速卡的概念也慢慢过渡到了用来处理通用图形计算甚至通用并行运算的GPU,而在今天市面上的独立显卡厂商也只剩下了Nvidia和ATI。

人工智能加速器和GPU很像,只是当年的驱动应用是多媒体和3D游戏,而今天的驱动应用则是人工智能,包括语音助手,人脸识别,物体识别等等。这一波兴起的人工智能的基础算法是神经网络,而神经网络会大量用到矩阵乘法以及卷积运算。又一次,人们发现CPU的运算能力无法支撑目前的人工智能运算了,而GPU虽然也能实现高速人工智能运算,但是功耗太大(为了移动应用设计的Nvidia TX2都要消耗10W之多的功耗),于是,为了让更多的移动设备能用上人工智能,人工智能加速器就应运而生了。

人工智能加速器通常是一块专用的硬件单元,可以以单独芯片或者SoC上的IP的形式存在。由于专门为人工智能加速设计,因此在处理此类运算时可以实现非常高的性能并且消耗很低的功耗。之前在华为公布的Kirin 970上,就集成了这样一块人工智能加速器,可见人工智能加速器正在越来越多地进入移动芯片市场。

华为麒麟970上也集成了人工智能加速模块

苹果在人工智能硬件加速方面的布局

苹果在人工智能这一重大风口自然不甘落后,在人工智能加速领域也早就有了布局。

看如今市场,Nvidia之所以能占据人工智能硬件的领头羊位置,与其开放易用的CUDA接口方便程序员使用GPU加速人工智能不无关系。而在移动端,如何充分调用SoC上的GPU来加速人工智能一直让开发者颇为头痛。苹果在之前就公布了Metal和Core ML两个不同层面的接口可供开发者调用,以加速iOS平台上的人工智能应用。

公布软件接口的另一目的,就是为了为专用硬件的开发积累经验,以实现软硬件协同优化。在今年五月,就有消息称苹果名为“神经网络引擎”的专用人工智能加速硬件已经基本完成。而到了今天,苹果则真正公开宣布了神经网络引擎。

A11神经网络引擎分析

苹果在发布会上公布的关于神经网络引擎的信息包括:

使用双核心设计。由于缺乏其他配套信息,从这条信息中我们能推测出的就是苹果或许可以允许神经网络引擎的几种使用模式,包括全关闭,只打开一个核,以及双核全部打开,以满足不同情况下的性能/功耗需求。

性能可达0.6TOPS。这样的性能已经能处理目前主流的神经网络模型计算。可见,目前1TOPS左右的处理性能将会成为人工智能加速器的标配。

实时处理。GPU处理人工智能运算时,另一个令人诟病的问题就是延迟大,因为GPU往往是基于块数据(batch)处理,因此在需要实时作出反应的移动端并不适合。苹果的神经网络引擎则强调了自己是实时处理这一点,显然是为了与GPU作出区分,以配合移动端实时应用的需求。

除此之外,我们还能猜到神经计算引擎是SoC上的一个IP模块,而不是单独的一块芯片。

我们可以和其他包含类似加速模块的芯片对比。华为的麒麟970包含了和苹果神经网络引擎类似的人工智能加速模块,其峰值性能可达1.93TOPS(为苹果神经网络引擎的3倍多),但是实际性能不等于峰值性能,还需要取决于软硬件协同优化效果。高通的枭龙系列包含Neural Processing Engine软件SDK,能帮助开发者更好地利用高通芯片上的GPU/CPU/DSP完成人工智能加速。可以说,高通的方案相比华为和苹果显得较为保守(之前推出过Zeroth人工智能硬件加速模块但是后来被放弃了),但是在人工智能的大潮下估计高通也会在之后的芯片中加入相关人工智能加速器。

虽然发布会公布了不少信息,但是还有更多未知,需要时间去澄清。

最令人感兴趣的问题,恐怕是神经网络引擎除了FaceID之外,还可以用在哪些其他的地方?由于FaceID对于实时性的需求不高(延迟在1秒内估计就能满足客户需求),如果只为这个用途专门配一块0.6TOPS的加速器就显得太过奢侈了,因此神经计算引擎应该还会在其他的场合能用上。那么,其他的应用场合又是哪些呢?是专供苹果操作系统内部原生app使用,还是会开放给第三方app也能使用?目前这一切都还不得而知,但是苹果打造神经网络引擎的野心肯定不止于FaceID。

到底有几个版本A11 Bionic?如果只有一个包含神经网络引擎的版本,那么在不包含FaceID的iPhone 8上,神经网络引擎一定会要做一些其他事情。如果有两个版本的A11 (含神经网络引擎的iPhone X版本和不含神经网络引擎的iPhone 8版本),那么只能说苹果钱太多,能一次设计两个版本的芯片!