机器人与人工智能爱好者论坛

 找回密码
 立即注册
查看: 8174|回复: 0
打印 上一主题 下一主题

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

[复制链接]

173

主题

181

帖子

1053

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1053
跳转到指定楼层
楼主
发表于 2016-1-21 08:54:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
解读神秘而又强大的百度人工智能计算机


2016-01-20 15:20

2014年8月,在硅谷Cupertino Flint Center召开的26届Hotchips 会议上,百度宣读了其发表的论文(据不完全统计,这应该也是国内第四篇Hotchips文章,前3篇均为龙芯团队所发)。一年之后,一个叫“仙童”的项目,获得了奖金为一百万美金的百度最高奖。
这两个看起来无关的事件,背后都是一个工作,就是百度自主研究的人工智能计算机。虽然百度从事人工智能计算机的研究和探索已经长度4年,本文是第一次系统阐述这背后的故事和历程。
百度人工智能应用百度是国内应用深度学习的先锋,早在2012年初,百度就在语音识别上规模应用深度学习算法并取得了非常好的效果。在2012年底,百度CEO 李彦宏宣布成立公司的第一个研究院——百度深度学习研究院。当时,世界上也就Google、微软等少数几个公司公开宣布在深度学习、人工智能领域进行战略投入。
这4年下来,深度学习技术已经渗透到百度各个产品,如网页搜索、广告点击率预估模型、百度杀毒等。深度学习技术极大地提高了百度产品的用户体验。如百度的语音识别,经过这4年的不断磨练,其识别准确率也从当初80%左右提高到了今天的96%。
除了率先在各个产品线引入前沿的深度学习算法,百度在人工智能应用方面还有更长远的布局:
l 百度建立了百度研究院,下设硅谷人工智能实验室、北京深度学习实验室、北京大数据实验室等三大前沿实验室。
l 2014年,人工智能领域最权威的学者之一——吴恩达加入百度。
l 同年,在百度技术开放日上,百度发布大数据引擎,对外开放大数据及人工智能能力。
l 在之后的百度技术节上,百度高级副总裁王劲勾画了“万物智能”的愿景,并展现了百度为迎接万物智能时代所做的技术布局。
l 2015年百度世界大会上推出的“度秘”,就是万物皆智能的一个很好的体现。它将成为人们生活中的智能秘书。度秘可以通过语音对话或者图像很自然地和人进行交互,甚至都不需要交互,而是根据历史信息、传感器信息、周围环境变化来判断一个人的需求。如果你饿了可以帮你订餐,在你生病后可以告诉你吃什么药,如果明天下雨会提醒你带上伞,你需要出行会时会帮你订好酒店、机票等等——这些看起来很平常的“秘书”服务,如果真要达到非常可用的状态,其实背后就需要非常先进的人工智能技术做支撑。
人工智能对计算机系统及体系结构的挑战人工智能的应用,包括云(数据中心)和端(智能设备)两部分。云端除了训练(离线训练),还有在线的服务。训练是指利用训练数据,选择合适的训练方法,训练出一个模型。在线服务是指利用训练出来的模型来响应在线响应用户的请求。端部分也是人工智能的一个强需求,按照“万物智能”的愿景,很多终端设备,也都能运行人工智能的算法,能智能地响应外部请求,如智能辅助驾驶、无人车、智能摄像头、工业IOT等等。
深度学习的离线训练,是工业界和学术界研究最多、关注最多的领域。自深度学习热潮席卷而来,无论是学术界还是工业界,涌现了很多新的、面向深度学习算法和应用设计的系统,如Google提出来的parameter server,其他人也借鉴了parameter server的思想,根据不同的应用场景,设计了不同的各种系统。
在体系结构方面,深度学习训练多是基于GPU及infiniband高速互联网络。使用GPU来做大规模的矩阵计算,然后使用infiniband高速网络进行分布式参数更新。这种架构在工业界里面非常普遍,很多专有的服务器里带有8个GPU,服务器之间通过infiniband互联。很多论文都在研究怎么利用服务器内8个GPU的局部性、利用infiniband的RDMA、利用GPU的计算能力来完成完整的分布式深度学习训练任务。
GPU加infiniband的硬件架构,目前比较适合深度学习的训练,也比较适合工业界的规模应用,毕竟这两种硬件性能都不错,且供应商众多,比较很容易获得产品及技术支持。所以一开始,这种架构就得到了工业界和学术界的青睐。
在线服务方面,无论是工业界还是学术界,公开的信息都比较少。因为有机会大规模部署人工智能服务的,只有像百度这样技术驱动的大型互联网公司,而这些公司,一般处于保密考虑,会延后发布自己的核心技术。
至于人工智能的终端设备,虽然媒体一直在勾画这个领域的宏伟蓝图,但实际上的成功规模应用并不多,所以工业界和学术界对这部分内容公开得也比较少。
其实,无论是离线训练、在线服务还是智能设备,里面运行的都是一些常用的深度学习算法,如DNN/RNN(LSTM)/CNN,这些算法的具体实现这里不具体论述。这些算法都有一些共性,如都是计算和访存密集型,主要的计算算子是矩阵操作、卷积、激活函数等。如果是离线训练,考虑到分布式实现,对节点间的通信带宽和延时要求也很高。
从大规模部署应用的角度看,无论是哪种类型的应用,对体系结构最终的衡量标准是performance/dollar及performance/Watt,也就是效率,包括能耗效率和成本效率。只有这两个效率足够高,这种体系结构才有生命力。例如在嵌入式终端里面,往往需要考虑极致的能耗和成本效率,有时候甚至需要对算法做些剪枝和模型规模限制。在数据中心里面,成本和功耗也是规模部署要考虑的第一要素。
如今,人们提到深度学习的硬件架构,会首先想到GPU。这主要是因为,在能方便采购到的硬件里,GPU确实能提供较好的数学计算能力和访存带宽。但对于能耗和成本效率,即使在数据中心应用,GPU离我们的目标仍有很大的改进空间。所以我们需要重新思考,面向人工智能的典型应用和算法,设计一种新的、通用的体系结构,这种体系结构能实现极致的能耗和成本效率,还能灵活延伸扩展,很容易支持离线训练、在线服务和智能终端三种场景。
大胆探索,问题导向人们在面对热门研究领域的时候,都比较容易自然而然地“仰望星空”,觉得只要参与其中就一定能有大收获。但如果只是急功近利,缺少冷静的思考,就很难取得突破性的成果及持续性的产出。这就像早期用几个GPU随便搭个小集群,做一些模型训练,也能发一些不错的paper,能很快看到产出,外界也会给一些不错的评价。但实际上,这些工作并没有本质的突破,也没办法带来持续的影响力,因为这并没有解决人工智能体系结构最关键的成本和功耗效率问题,也没有给整个学术界和产业界带来新的观点和思路。
大家也可以看得到,最近这几年类似的工作非常多,也都大同小异,产业界的竞争也趋于红海。短平快的工作,再加上喧闹的市场氛围,是比较容易出一些所谓的“成果”,如果当初我们只是沉迷于此,就不会有突破性的新技术产生。
在面对人工智能这种火热的研究领域,在加上喧闹的市场环境,我个人还是非常认同李国杰院士在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一脉相承,也都是百度混合研究方法指导下的技术创新。当然所有的技术创新都不容易,尤其是从想法到大规模应用部署,这里面需要很长的时间,需要克服大量的工程挑战及应用推广遇到的各种非技术挑战。在这个较长的时间里面,外部的需求和技术也会快速变化,所以项目也需要及时调整以跟上外部变化。

“大胆探索,问题导向”,在这一轮的深度学习、人工智能热潮兴起之初,我们就提出人工智能体系结构及硬件芯片的创新要坚持这一宗旨。在实践过程中,坚持问题导向,保证所做的工作能在以后快速落地。
这项工作取得了很好的成果,给业界开拓了一个新的思路,同时也证明了为人工智能定制的这种新型体系结构及芯片,能够使能耗效率提升一个数量级以上,并能在实际应用场景大规模落地。
这个工作,也给了我们很多启发。通过这些积累,很容易延伸到离线训练和智能终端领域。无论是今天的CPU还是GPU,在它们设计之初,都不是为了人工智能算法和应用定制的,所以能耗和成本效率都不是最优的。今天这个应用规模越来越大,越来越重要,技术挑战越来越大,因此,这个领域必然会诞生新的技术:人工智能体系结构。这个技术也会催生新的产业,例如人工智能计算机、人工智能芯片和操作系统。而今天,百度在这个领域已经深入耕耘了4年,根据公开的资料,百度是第一个在数据中心规模部署人工智能芯片的公司。
所以,我们未来还会坚持在人工智能体系结构及芯片实现上继续创新,不断拓展应用领域,甚至还会不断开拓新的产业。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|陕ICP备15012670号-1    

GMT+8, 2024-4-25 09:48 , Processed in 0.058679 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表