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

在今年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实现了人工智能芯片,该芯片已大规模应用于百度的产品。根据公开资料,这也是世界首次人工智能芯片的规模应用。

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2015-12-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

专访Michael Jordan:AI的分布式决策与不确定性

今年四月,Michael Jordan 在 Medium 上发表了一篇名为《人工智能:革命尚未到来》的文章。文章指出,如今「AI」这个概念被各界人士当做包治百病...

742
来自专栏AI研习社

从 1 数到 13,想当数据科学家的你这些错误可别犯

当你看这篇文章的时候,我们知道你已经决定把数据科学当作你的工作。当下越来越多的企业需要数据支持其决策,世界也变得越来越紧密,几乎每个企业都需要大量的数据科学实践...

743
来自专栏PaddlePaddle

深度学习行业中的各类岗位概览

后端(RD)工程师:让算法工程师产出的代码落到业务中,适用于工业调用(比如配置数据库和设定便捷的交互)

1033
来自专栏Android群英传

数据可视化是如何被创造出来的

871
来自专栏互联网数据官iCDO

如何使用预测分析方法提高营销效果?

随着大数据,人工智能和数据分析等技术的兴起,营销一直在不断变化。现在,营销活动可以基于对过去活动的测量和洞察来规划,其中一种策略是使用预测分析来获得更好的营销表...

1442
来自专栏逸鹏说道

携程:机器学习在酒店服务领域的实践

在携程技术中心推出的线上公开课程[携程技术微分享]上,来自携程酒店研发的BI经理潘鹏举,介绍了如何借助大数据和算法,通过机器学习去克服酒店服务行业挑战,给用户带...

3338
来自专栏悦思悦读

入行AI做数据是怎么一回事?

之前的文章《入行 AI,如何选个脚踏实地的岗位》中,我们谈到AI行业内的技术类岗位大致分为三类:做算法,做工程和做数据。本文主要讲一讲,做数据的岗位,日常工作和...

42612
来自专栏大数据文摘

把可视化从业者的生存现状可视化出来:他们是谁?

2185
来自专栏数据派THU

避坑指南:数据科学家新手常犯的13个错误(附工具、学习资源链接)

本文是老司机给数据科学家新手的一些建议,希望每个致力于成为数据科学家的人少走弯路。

941
来自专栏PPV课数据科学社区

AI时代就业指南:普通程序员转行大数据十问十答

随着大数据的爆发,中国IT业内环境也将面临新一轮的洗牌,不仅是企业,更是从业人员转型可遇而不可求的机遇。如果将IT人士统一比作一条船上的海员,大数据就是最大的浪...

3465

扫码关注云+社区