加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

解读神秘而又强大的百度人工智能计算机

发布时间:2016-01-21 03:41:31 所属栏目:传媒 来源:飞象网
导读:2014年8月,在硅谷Cupertino Flint Center召开的26届Hotchips 会议上,百度宣读了其发表的论文(据不完全统计,这应该也是国内第四篇Hotchips文章,前3篇均为龙芯团队所发)

在面对人工智能这种火热的研究领域,在加上喧闹的市场环境,我个人还是非常认同李国杰院士在10月刊的CCCF上的观点:“大胆探索,问题导向”,也就是说既要仰望星空,也要脚踏实地。只有抓住了最核心的问题,然后大胆发挥想象力,朝着一个远景目标一点一点的迭代和探索,在实践过程中以问题为导向,聚焦目标,才能最终做出经得起考验的东西。

百度的探索及实践在人工智能体系结构这条路上,并不是只有百度一家在努力。大家能看到,计算所的陈云霁老师及其团队做出了非常好的成绩,发表了很多顶级论文,也给这个领域的同行带来了不少新的思路。

百度在这个领域,起步也非常的早,在2012年就开始这方面的研究。虽然那时候百度语音识别已经规模应用了深度学习算法,但其他应用还在起步阶段,深度学习算法也在快速发展迭代中。那时候我们为了提高深度学习算法的计算速度,已经在GPU和CPU上做了很多优化,也发了一些深度学习算法GPU加速的论文,得到了外界的认可。

经过这些工作,我们更能深刻理解GPU/CPU在深度学习应用里面的成本和能耗效率离目标有较大差距。于是,我们产生了一些大胆的想法——自己设计深度学习专有的体系结构和芯片。

需求定义

在当时看来,有很多具体方向可以做:例如离线训练,很多产品线都需要从传统的机器学习模型逐步迁移到深度学习算法,离线训练看起来机会很多;在线服务,很多产品的深度学习模型也逐步上线,所以也有需求;人工智能硬件、无人驾驶等等很多新产品与新技术都炒得热火朝天。

这些方向要怎么选,是一个很大的难题。在工业界,如果方向选错,很有可能几年的资金和团队投入都会浪费,而且还会错失机会。所以当时我们比较冷静,坚定问题导向。经过深入的思考,发现离线训练GPU可以阶段性地满足要求,智能设备虽然炒的火,但时机仍没成熟。而在线的服务,这个需求是客观存在的,虽然2012年那会能上线的服务还很少,模型也不大,但可以预估模型肯定会越来越大,业务也是越来越多,而且GPU因为功耗、成本等原因,不适合线上大规模部署。在这样一个非常具体的问题驱动下,我们提出先针对这个细分领域定制我们的人工智能计算机。项目取名“仙童”,寓意是希望我们能像50年前的仙童,在人工智能体系结构及硬件芯片这个崭新领域做些开拓性的工作,开辟一块新天地,甚至能做出影响以后几十年的成果。

系统定义

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

架构设计

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

百度人工智能 智能计算机

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

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

激活函数也是个挑战。因为常用的激活函数比较多,大概有十几个,如果都用硬件实现,会比较浪费硬件资源,所以我们也提出使用查表的方式实现激活函数,如果要实现不同的激活函数,只需要配置不同的表。而这个表可以由CPU访问,所以靠CPU来实时的更新表来实现不同的激活函数。

硬件实现

百度人工智能 智能计算机

要想达到最优的能耗效率,流片做成ASIC是最好的选择。但是,流片需要大量的资金,需要较长的时间周期和工程周期,而且深度学习算法也在快速迭代,很难在这个时期做一个成熟的硬件方案。所以我们选择了FPGA实现。当时选择了最新的28nm FPGA,利用大量的DSP单元实现ALU,BRAM单元实现片内的buffer。实际上的工程实现,远比预估的要困难,为了追求极致的能耗效率,光是PCB就迭代了几个大版本,FPGA的逻辑实现迭代的版本更多,整个实现历时一年多。最终的版本比第一个版本功耗下降了大概50%。

上线部署

从2014年起,我们自主设计的人工智能芯片开始逐步地在百度的产品中上线,其中第一个吃螃蟹的是百度的语音识别。经过这几年的发展迭代,百度的语音识别上线了规模非常大的深度学习模型,对计算需求非常迫切。在这样的背景下,语音在线服务全部应用了百度自主设计的人工智能芯片,计算性能相对CPU服务器提高了3~4x。这一代芯片的性能和同时代的K20 GPU相当,而功耗只有GPU的大概1/8。能耗效率或者成本效率要有一个数量级的提升达到了设计之初的设计目标。

总结在去年6月刊的CCCF上,我发表了《百度基础架构技术发展之路》文章,里面讲述了SDF、ARM等项目的研发历程,也讲述了百度的混合研究方法。今天本文提到的人工智能芯片的研发,和之前的SDF、ARM一脉相承,也都是百度混合研究方法指导下的技术创新。当然所有的技术创新都不容易,尤其是从想法到大规模应用部署,这里面需要很长的时间,需要克服大量的工程挑战及应用推广遇到的各种非技术挑战。在这个较长的时间里面,外部的需求和技术也会快速变化,所以项目也需要及时调整以跟上外部变化。

“大胆探索,问题导向”,在这一轮的深度学习、人工智能热潮兴起之初,我们就提出人工智能体系结构及硬件芯片的创新要坚持这一宗旨。在实践过程中,坚持问题导向,保证所做的工作能在以后快速落地。

这项工作取得了很好的成果,给业界开拓了一个新的思路,同时也证明了为人工智能定制的这种新型体系结构及芯片,能够使能耗效率提升一个数量级以上,并能在实际应用场景大规模落地。

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读