首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【人工智能的架构趋势】AI专有芯片版百度大脑首次解密

【人工智能的架构趋势】AI专有芯片版百度大脑首次解密

作者头像
新智元
发布2018-03-13 17:34:47
8430
发布2018-03-13 17:34:47
举报
文章被收录于专栏:新智元新智元新智元

在今年9月份召开的百度世界大会上,百度高级副总裁王劲在接受采访时曾透露,百度已经打造了FPGA版的百度大脑,性能远超此前的版本。“这在当年是百度的一个秘密项目,不过,现在可以对外公开了”。

王劲所提到的“当年”就是2012年——这一年,百度决定自主设计深度学习专有的体系结构和芯片。经过深入研究和论证,为让项目快速落地及迭代,工程师们最后“相中”了FPGA,使用FPGA来实现百度的第一版自主设计的深度学习专有芯片。于是,基于AI专有芯片的百度大脑——FPGA版百度大脑由此诞生。这使得百度成为了全球最早将FPGA规模应用在人工智能领域的公司。

而本文,是第一次系统阐述其背后历程。

【新智元名词解释】FPGA 是什么?

FPGA(Field-ProgrammableGate Array),即现场可编程门阵列,是一种半定制的IC芯片。原厂(如XILINX、ALTERA、LATTICE等)生产出的是空白的不含配置信息的FPGA芯片,顾客可根据自己的需要,利用片上所提供的各种资源开发自己的逻辑,将生成的配置信息写入,从而将其变成自己所需功能的芯片,FPGA可近乎不限次数反复重配。

对计算能力及效率的需求,催生AI专有芯片版百度大脑

大数据和人工智能的发展与应用,使得百度面临一大问题:数据和模型规模不断膨胀,必须有更强的计算能力来支撑。不仅如此,出于企业成本考虑,还必须控制能耗效率和成本效率,即在相同计算性能下,成本和能耗要更低。

从大规模部署应用的角度看,无论是哪种类型的应用,对体系结构最终的衡量标准是performance/dollar及performance/Watt,也就是效率,包括能耗效率和成本效率。只有这两个效率足够高,这种体系结构才有生命力。例如在嵌入式终端里面,往往需要考虑极致的能耗和成本效率,有时候甚至需要对算法做些剪枝和模型规模限制。在数据中心里面,成本和功耗也是规模部署要考虑的第一要素。

如今,人们提到深度学习的硬件架构,会首先想到GPU。这主要是因为,在能方便采购到的硬件里,GPU确实能提供较好的数学计算能力和访存带宽。但对于能耗和成本效率,即使在数据中心应用,GPU离百度的目标仍有很大的改进空间。所以百度需要重新思考,面向人工智能的典型应用和算法,自主设计一种新的、通用的体系结构以及芯片,能实现极致的能耗和成本效率,还能灵活延伸扩展。

接下来,百度需要考虑的是,率先应用这种新型体系结构和芯片的场景。

人工智能的应用场景,包括云(数据中心)和端(智能设备)两部分;其中,云端又包括离线训和在线服务。离线训练是指利用海量数据,选择合适的训练方法,训练出一个模型。在线服务是指,利用训练出来的模型来响应在线响应用户的请求。端部分也对人工智能有着很大的需求:很多终端设备,也都需要能运行人工智能的算法,能智能地响应外部请求,如无人车、智能摄像头等。

“我们发现,在离线训练上,GPU可以阶段性地满足要求,智能设备虽然炒得火,但时机仍未成熟。而在在线服务方面,对提升计算能力的需求是客观存在且比较急迫的。但GPU因为功耗、成本等原因,不适合线上大规模部署。”百度AI专有芯片项目负责人、主任架构师欧阳剑道出了彼时决策的过程。

经过深入思考,百度决定率先在在线服务上应用AI专有芯片版百度大脑。

百度如何实现AI专有芯片版大脑?从系统、架构和硬件层面

【AI专有芯片版大脑】系统定义

深度学习算法的核心算子都比较容易抽象,例如DNN主要算子是矩阵乘法和激活函数,RNN/LSTM是向量乘矩阵和激活函数,CNN是卷积。这三种算法,核心计算都可以抽象成向量的内积及激活函数。为了保证系统的灵活性,该系统设计成SOC形式,设计专有的硬件加速器来加速深度学习算法。在数据中心, SOC里面的处理器很自然就是X86的CPU,深度学习协处理器通过PCIE总线和CPU互联。协处理的控制调度,都是由X86CPU完成。这种架构以后如果要延伸到嵌入式智能设备领域,只需要把处理器换成ARM即可,加速器部分仍可以保持不变。

【AI专有芯片版大脑】架构设计

向量的内积硬件比较好实现,只要堆足够多的ALU,性能就能线性提高,而且这个功能的流水线也很规则,很容易实现。但向量内积的瓶颈一般都在访问内存,所以主要挑战在于怎么利用cache/片内buffer的局部性,提高访存效率。这里需要跟进ALU的数量、运行频率、DDR的带宽来精细计算所需要的片内buffer的大小,及片内buffer的访问模式,以充分利用数据的局部性。加速器的硬件的架构如下,该架构有两级的memoryhierarchy,芯片外的DDR3和芯片内部的SRAMbuffer,高效的访存控制是该系统的关键。

向量ALU部分的微架构如下,主要由乘法器,加法树,累加器及激活函数计算单元等几级流水线组成。

为了保证硬件的可扩展性,ALU做成阵列模式,每个array实现长度为64的两个向量内积,可以按照不同的场景需求,堆放不同数量的array。例如在数据中心应用场景,追求最大的性能,所以可以在一定的cost和功耗budget前提下,堆放尽可能多的array,而在嵌入式领域,功耗和成本严格受限,就可以堆放少一些的array。

【AI专有芯片版大脑】硬件实现

要想达到最优的能耗效率,流片做成ASIC是最好的选择。但是,流片需要大量的资金,需要较长的时间周期和工程周期,而且深度学习算法也在快速迭代,很难在这个时期做一个成熟的硬件方案。所以百度选择了FPGA。

百度利用大量的DSP单元实现ALU,BRAM单元实现片内的buffer。实际上的工程实现,远比预估的要困难,为了追求极致的能耗效率,光是PCB就迭代了几个大版本,FPGA的逻辑实现迭代的版本更多,整个实现历时一年多。

逐步应用于百度产品,服务性能提升3~4倍

通过不断地创新、优化,AI专有芯片版百度大脑迭代了许多版本,大脑的能力不断提升,功耗不断下降:最终版本比第一个版本的功耗下降了约50%。

随后,这版百度大脑逐步应用在百度产品中,包括语音识别、广告点击率预估模型等。据了解,应用了该版本百度大脑后,语音在线服务、广告点击率预估模型等的计算性能皆提升了3~4倍。这一代芯片的性能和同时代的K20GPU相当,而功耗只有GPU的大概1/8。

百度关于FPGA的研究成果也得到了业界的肯定,并于2014年8月在第26届Hotchips会议(全球体系结构和芯片设计领域的顶级权威学术会议)上发表相关论文。

人工智能时代,定制芯片及体系结构是未来趋势

定制芯片和体系结构能大幅度提高大数据和AI计算效率。而FPGA给定制芯片提供了一种灵活而快速的实现方式。

不妨看看最近的几条新闻:

1、英特尔将明年一季度推首款FPGA至强芯片。

2、英特尔167亿美元并购FPGA生产商Altera,以期能够实现在大型云数据中心或物联网领域的新增长。

3、微软开发了带有FPGA“硬件加速芯片”的主板来提升Bing数据中心的整体性能。

(1)FPGA相比于传统CPU在处理Bing的自定义算法时快出40倍;

(2)整个系统将会比Bing现有的系统快出2倍,缩减一半现有服务器数量。

4、微软采用AlteraArria 10 FPGA实现基于卷积神经网络(CNN)算法的数据中心加速。

大型互联网企业的数据中心电耗费用的开销是非常昂贵的,FPGA本身的实现结构高效,在许多应用场景比处理器方案具备更佳的性能功耗比,FPGA方案对数据中心有很大吸引力。

人工智能实现算法例如卷积神经网络(CNN)等,对卷积运算量具有非常密集需求,目前GPGPU是较好的计算承载平台,但对于数据中心和低功耗嵌入式设备而言,都有降低功耗的需求作为驱动力,FPGA在这方面有独特优势,出现了越来越多的应用实例。

所以像百度、微软和intel这样的公司,都看到了定制芯片的前景,并使用FPGA来实现这样的技术方向。

据悉,百度从2012年开始在这一领域探索实践,自主研发人工智能体系结构,并且用FPGA实现了人工智能芯片,该芯片已大规模应用于百度的产品。根据公开资料,这也是世界首次人工智能芯片的规模应用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档