编者按:为保证内容的专业性,本文已邀深度学习芯片领域专家把关审核过,作者铁流。
日前,Intel称将于2017年推出针对深度学习市场的CPU Knights Mill。据Intel宣传,Knights Mill 能充当主处理器,可以在不配备其它加速器或协处理器高效处理深度学习应用。可以说,继中国寒武纪和星光智能一号、IBM的真北、谷歌的 TPU,以及英伟达专门为人工智能定制的GPU之后,Intel也加入该领域的竞争。
那么,这多深度学习处理器都有什么特点,又有什么优势和劣势呢?
在英伟达开发出针对人工智能的定制GPU,并坚持DGX-1 系统之后,Intel也不甘落后,在收购深度学习创业公司 Nervana Systems之后,Intel也公布了用于深度学习的Xeon Phi家族新成员,在深度学习处理器领域开辟新战场。
在不久前,Intel还发布了一些Xeon Phi 的基准测试结果,其声称内容总结如下:
1、四片 Knights Landing Xeon Phi 芯片比四片 GPU要快 2.3 倍; 2、在多节点系统中, Xeon Phi 芯片的能比 GPU 更好地扩展38% ; 3、128 块 Xeon Phi 的服务器组成的系统要比单块 Xeon Phi 服务器快 50 倍,暗示着 Xeon Phi 服务器的扩展性相当好; 4、使用Intel优化版的 Caffe 深度学习框架时,Xeon Phi 芯片要比标准 Caffe 实现快 30 倍。
一言蔽之,Intel的众核芯片在深度学习上比英伟达的GPU更为高效。
不过,英伟达也随之反击,声称这是Intel使用了其旧的基准测试结果,并表示:
1、如果英特尔使用更新一点的 Caffe AlexNet 实现结果的话,它就会发现四块上代英伟达 Maxwell GPU 实际上比四块英特尔 Xeon Phi 服务器集群快 30%。 2、另外,一旦英伟达的 GPU 从 28nm 的平面工艺转移到 16nm 的 FinFET 工艺上时,GPU的性能和效率还会有很大的提升。 3、对于深度学习,英伟达还强调更少的高性能节点无论如何都会比更多低性能节点好。并以其最新的 DGX-1为例,认为DGX-1比 21 个 Xeon Phi 服务器集群快一点,比四个 Xeon Phi 服务器集群快 5.3 倍。
笔者认为,Intel的众核芯片也在一定程度上吸取了GPU的优势,性能不俗,但短时间看还是GPU有优势。不过,无论是针对人工智能的众核芯片还是定制版的GPU,本质上都不是专用处理器,实际上是拿现有的、相对成熟的架构和技术成果去应对新生的人工智能,并没有发生革命性的技术突破。
其实,Intel和英伟达是在使用现有的比较成熟的技术去满足深度学习的需求,众核芯片和定制版GPU在本质上来说依旧是CPU和GPU,而并非专门针对深度学习的专业芯片,这就必然带来一些天生的不足。打一个比方,用众核芯片和GPU跑深度学习,就类似于用轿车去拉货,受轿车自身特点的限制,货物运输能力与真正大马力、高负载的货车有一定差距。同理,即便是因为技术相对更加成熟,Intel和英伟达的芯片在集成度和制造工艺上具有优势,但由于CPU、GPU并非针对深度学习的专业芯片,相对于专业芯片,其运行效率必然受到一定影响。
6月20日,中星微“数字多媒体芯片技术”国家重点实验室在京宣布,中国首款嵌入式NPU(神经网络处理器)芯片诞生,目前已应用于全球首款嵌入式视频处理芯片“星光智能一号”。
媒体称,“星光智能一号蕴含了当前计算机领域最前沿的生物人脑神经网络仿生学创新技术,且对严重依赖国外进口产品的中国集成电路产业来说,也是实现‘弯道超车’的一次踊跃尝试。它标志着我国在神经网络处理器领域的研究和开发上取得了重大突破;使我国视频监控行业发展由模拟时代、数字时代跨入智能时代,在全球确立领先地位。”
不过,在经过仔细分析后,所谓“中国首款嵌入式神经网络处理器”很有可能是一款可以运行神经网络的DSP,而非真正意义的神经网络专用芯片。
上图是星光智能一号发布的系统架构图。
共包含四个NPU核,每个NPU核包含4个内核,每个内核有两个流处理器(Dataflow Processor),每个流处理器具有8个长位宽或16位宽的SIMD运算单元。每个NPU核的峰值性能为38Gops(16位定点)或者76Gops(8位定点)。除了多核流处理器本身用于完成卷积运算外,星光智能一号集成了一个超长指令字(VLIW)处理器用于完成神经网络中的超越函数等运算。另有256KB的L2Cache以及DMA模块用于大块数据的搬移。
从其低位宽的定点运算器推断,星光智能一号仅可支持神经网络正向运算,无法支持神经网络的训练。从片上存储结构看,星光智能一号基于传统的片上缓存(Cache),而非像最近流行的神经芯片或FPGA方案一样使用便签式存储。因此,在技术上看星光智能一号是典型的“旧瓶装新酒”方案,将传统的面向数字信号处理的DSP处理器架构用于处理神经网络,主要在运算器方面作了相应修改,例如低位宽和超越函数,而并非是“狭义的”神经网络专用处理器,如IBM的“真北”芯片。
因此,星光智能一号其实是DSP,而非NPU,能够适用于卷积神经网路(CNN),而对循环神经网络(RNN)和长短期记忆网络(LSTM)等处理语音和自然语言的网络有可能就无能为力了。
换言之,星光智能一号暂时只面向机器视觉任务,而不能用于语音和自然语言类的问题。其实,这种用传统SIMD/DSP架构来适配神经网络的技术思想在国际上已有不少先例,甚至有成熟的产品,例如CEVA公司的XM4处理器、Cadence公司的Tensilica Vision P5处理器、Synopsys公司的EV处理器等。
从技术角度看,深度学习实际上是一类多层大规模人工神经网络。它模仿生物神经网络而构建,由若干人工神经元结点互联而成。神经元之间通过突触两两连接,突触记录了神经元间联系的权值强弱。
每个神经元可抽象为一个激励函数,该函数的输入由与其相连的神经元的输出以及连接神经元的突触共同决定。为了表达特定的知识,使用者通常需要(通过某些特定的算法)调整人工神经网络中突触的取值、网络的拓扑结构等。该过程称为“学习”。在学习之后,人工神经网络可通过习得的知识来解决特定的问题。
由于深度学习的基本操作是神经元和突触的处理,而传统的处理器指令集(包括x86和ARM等)是为了进行通用计算发展起来的,其基本操作为算术操作(加减乘除)和逻辑操作(与或非),往往需要数百甚至上千条指令才能完成一个神经元的处理,深度学习的处理效率不高。因此谷歌甚至需要使用上万个x86 CPU核运行7天来训练一个识别猫脸的深度学习神经网络。因此,传统的处理器(包括x86和ARM芯片等)用于深度学习的处理效率不高,这时就必须另辟蹊径——突破经典的冯·诺伊曼结构。
以中国的寒武纪为例,DianNaoYu指令直接面对大规模神经元和突触的处理,一条指令即可完成一组神经元的处理,并对神经元和突触数据在芯片上的传输提供了一系列专门的支持。
另外,神经网络中存储和处理是一体化的,都是通过突触权重来体现。 而冯·诺伊曼结构中,存储和处理是分离的,分别由存储器和运算器来实现,二者之间存在巨大的差异。当用现有的基于冯·诺伊曼结构的经典计算机(如X86处理器和英伟达GPU)来跑神经网络应用时,就不可避免地受到存储和处理分离式结构的制约,因而影响效率。这也就是专门针对人工智能的专业芯片能够对传统芯片有一定先天优势的原因之一。
用数字来说话,CPU、GPU与NPU相比,会有百倍以上的性能或能耗比差距——以寒武纪团队过去和Inria联合发表的DianNao论文为例——DianNao为单核处理器,主频为0.98GHz,峰值性能达每秒4520亿次神经网络基本运算,65nm工艺下功耗为0.485W,面积3.02平方毫米mm。
在若干代表性神经网络上的实验结果表明——
DianNao的平均性能超过主流CPU核的100倍,但是面积和功耗仅为1/10,效能提升可达三个数量级; DianNao的平均性能与主流GPGPU相当,但面积和功耗仅为主流GPGPU百分之一量级。
就现阶段而言,传统芯片厂商(如CPU、GPU和DSP)对于深度学习市场非常重视,因此利用他们巨大体量和市场推广、销售能力,大力推广用这些传统芯片来进行深度学习处理,其本质上也是对现有的技术进行微调,用传统SIMD架构来适配神经网络。
然而,由于传统CPU、GPU和DSP本质上并非以硬件神经元和突触为基本处理单元,相对于NPU在深度学习方面天生会有一定劣势,在芯片集成度和制造工艺水平相当的情况下,其表现必然逊色于NPU。
正如前文所述,无论是再好的轿车要去拉货,也不可能和真正大马力、高负载的货车相比。