腾讯宣布推出第三代高性能机器学习计算平台Angel 并于2017年全面开源
腾讯科技讯 12月18日,腾讯宣布推出面向机器学习的第三代高性能计算平台——Angel,并预计于2017年一季度开放其源代码,鼓励业界工程师、学者和技术人员大规模学习使用,激发机器学习领域的更多创新应用与良好生态发展。
腾讯在腾讯大数据技术峰会暨KDD China技术峰会上宣布这一消息,腾讯副总裁姚星,及腾讯数据平台部总经理、首席数据专家蒋杰出席了峰会并发表演讲。
姚星表示:“人工智能的发展在过去60年中几经沉浮,今年终于发出了璀璨光芒,很大的原因就是跟云计算和大数据有关,这是一种演进发展的必然结果。如何处理好大数据,如何在有限的计算资源上对这些大数据进行深入挖掘和分析,这是未来整个产业发展和升级的一个大课题。我相信大数据将成为这次产业升级的基础,核心算法将成为这次产业升级的灵魂。”
“面对腾讯快速增长的数据挖掘需求,我们希望开发一个面向机器学习的、能应对超大规模数据集的、高性能的计算框架,并且它要对用户足够友好,具有很低的使用门槛,就这样,Angel平台应运而生。”蒋杰表示:“机器学习作为人工智能的一个重要类别,正处于发展初期,开源Angel,就是开放腾讯18年来的海量大数据处理经验和先进技术。我们连接一切连接的资源,激发更多创意,让这个好平台逐步转化成有价值的生态系统,让企业运营更有效、产品更智能、用户体验更好。”
Angel是腾讯第三代的计算平台,使用Java和Scala语言开发,面向机器学习的高性能分布式计算框架,由腾讯与香港科技大学、北京大学联合研发。它采用参数服务器架构,解决了上一代框架的扩展性问题,支持数据并行及模型并行的计算模式,能支持十亿级别维度的模型训练。
不仅如此,Angel还采用了多种业界最新技术和腾讯自主研发技术,如SSP(Stale synchronous Parallel)、异步分布式SGD、多线程参数共享模式HogWild、网络带宽流量调度算法、计算和网络请求流水化、参数更新索引和训练数据预处理方案等。这些技术使Angel性能大幅提高,达到常见开源系统Spark的数倍到数十倍,能在千万到十亿级的特征维度条件下运行。
在系统易用性上,Angel提供丰富的机器学习算法库及高度抽象的编程接口、数据计算和模型划分的自动方案及参数自适应配置,同时,用户能像使用MR、Spark一样在Angel上编程,我们还建设了拖拽式的一体化的开发运营门户,屏蔽底层系统细节,降低用户使用门槛。另外,Angel还支持深度学习,它支持Caffe、TensorFlow和Torch等业界主流的深度学习框架,为其提供计算加速。
自今年初在腾讯内部上线以来,Angel已应用于腾讯视频、腾讯社交广告及用户画像挖掘等精准推荐业务。
今年11月,腾讯云大数据联合团队在有“计算奥运会”之称的Sort Benchmark排序竞赛中,用时不到99秒完成100TB的数据排序,在测试大规模分布式系统软硬件架构能力和平台计算效率的GraySort和MinuteSort两项排序竞赛中夺得4个冠军,将去年冠军的纪录分别提高二到五倍。冠军的背后是腾讯大数据多年的积累,而Angel更是腾讯大数据下一代的核心计算平台。
在此次会上,姚星谈到了腾讯对于大数据和人工智能的看法。蒋杰详细分享了此次夺冠背后腾讯大数据的发展之路,及Angel系统构建的生态圈层。以下为演讲全文:
演讲主题:腾讯AI使命:做每个人的大白,打造广义通用AI
演讲人:姚星 腾讯公司副总裁
大家早上好,非常高兴今天参加kdd china技术峰会。
过去的20年是信息时代快速发展的20年,信息产业的发展远超其他产业。信息产业的发展提升了人类的生活品质,也深深影响着我们这一代人。信息产业的高速发展离不开计算能力的提升,无论是我们使用的处理器计算能力还是网络传输能力,在过往20年发展中都保持了“摩尔定律”的趋势,使得我们互联网产品深入千家万户,得到了广泛应用。随着互联网产品渗透率的逐步趋稳,互联网产业今后的发展趋势在哪里?什么样的技术、业务形态会引领后续的产业发展?时至今日,我想答案毫无疑问是人工智能。人工智能在过往的60年发展中几经沉浮,起起落落,在今年散发出璀璨的光芒,人工智能的兴起是大数据、云计算 科学 进步的产物。充分利用计算资源,对海量大数据通过算法进行进一步的挖掘分析,这是互联网产品和产业的未来发展趋势。大数据是基础、核心算法是灵魂。
腾讯公司通过18年的发展今天已经成为了世界级的互联网公司。过去我们在产品体验上更加关注的是简单、好用。通过简单的方式提升人们的沟通效率,通过简单的方式让人们轻松享受数字内容时代。在技术上,我们过去更加关注的是工程技术,也就是海量性能处理能力、海量数据存储能力、工程架构分布容灾能力。未来腾讯必将发展成为一家引领科技的互联网公司,我们将在大数据、核心算法等技术领域上进行积极的投入和布局,和合作伙伴共同推动互联网产业的发展。
腾讯公司是一家消息平台+数字内容的公司,本质上来讲我们也是一家大数据公司,今天我们每天产生数千亿的收发消息,超过10亿的分享图片,高峰期间百亿的收发红包。每天产生的看新闻、听音乐、看视频的流量峰值高达数十T。这么大的数据如何处理好,使用好的确是极具挑战的。在大数据上腾讯也秉承开放生态理念与合作伙伴一起共建大数据生态,在云、支付、LBS、安全方面,与生态合作伙伴共建基础设施,与合作伙伴一起助推产业升级。
今年腾讯成立了AI实验室,我们确立的是四个基础的研究方向,包括计算机视觉、语音识别,自然语言处理,以及机器学习。我们也确立了四个业务发展方向:首先我们会聚焦于内容AI,主要聚焦于搜索和个性化推荐,除了文本以外的深度内容再加上富媒体内容的深度理解。第二个是游戏AI,这是基于腾讯业务本质特性相关的。我们会打造竞技类游戏相关的AI能力。第三个方向我们会构建社交AI,这是基于我们腾讯最主要的社交平台的AI。相信在未来的产品形态上会出现智能音响也好,智能助手也好。第四个是云AI,我们会把我们的图象识别能力、语音识别能力、自然语言处理能力以及大数据机器学习的平台开放给更多的用户使用。腾讯的AI使命是最终打造广义通用AI,实现每个人心中的“大白”。使得我们的小朋友更加的“被理解”,使得我们的成年人更加的“被保护”,使得我们的老年人更加的“被照顾”。
目前AI整个行业还处于早期阶段,虽然在某些垂直领域已经或者达到了某些人类的平均智能水平,但是这与人的综合智能还相差甚远。无论我们有如何先进的算法模型,我们都需要重新训练数据。无论我们有如何深层的网络模型,本质上都是通过算力解决问题。这和人与生俱来的智能,以及“创造力”、“举一反三”、“归纳总结”能力都相差甚远。但是我们也看到了积极的方向,比如deepmind的reinfocement的强化学习的发展进步,openai的gan生成对抗网络的发展。这些积极的发展使得AI的领域发展日新月异。
我相信在与会的各位专家和各位从业精英的积极投入和参与下,AI的发展必将朝气蓬勃、势不可挡!最后预祝大会圆满成功!谢谢!
演讲主题:Sort Benchmark夺冠背后
演讲人:蒋杰 腾讯数据平台部总经理
大家好,很多人已经知道腾讯获得了今年的Sort benchmark的排序的4项冠军,很多朋友来问我,腾讯是怎么做到的,背后支撑的究竟是什么样的技术?今天,我借这个机会,跟大伙来讲讲背后的一些故事。
相信很多人看过我们在很多城市机场投放的这个广告,这个广告里面画的是一个赛跑的选手,排序比赛,就跟奥运会的百米赛跑一样,都要很快。但我想说的是,其实我们更像一个长跑选手,我们在跑马拉松,这场马拉松,我们跑了7年。
回顾过去几年的比赛的成绩,几年前冠军都是被美国企业垄断的,最近三年则是BAT拿了冠军。应该说,这几年,国内互联网的发展速度不比美国慢,与此同时,以BAT为代表的国内互联网企业的计算能力也不落后于美国。
过去几年,获得冠军的团队,用的基本上都是Hadoop和Spark,其实腾讯的大数据平台,也是始于Hadoop的。
我们之所以能获得四项的冠军,是我们经历了几年的打磨,追求极致,我们希望最大限度地压榨机器的性能。
首先,从成本的角度,只有把硬件压榨到极致,成本才会低。我们采用的是OpenPower架构的机器,按节点数计算,我们规模只有去年冠军的六份一,按照今年的硬件价格,我们总的TCO成本远低于去年冠军。
在调度层面,我们对调度算法做了深度优化,使得每台机器的CPU、内存、网络、磁盘IO等每个环节都能发挥到极致。本次比赛的其中两项为MinuteSort,比拼的就是一分钟内的排序数据量,这个时间调度的效率就变得非常重要,而这两项比赛我们比去年提升了5倍,是提升幅度最高的;这也从另一个方面说明了我们在调度效率上的领先性。总结为一句话,就是最大限度地压榨了硬件的性能,才让我们取得这个成绩。
目前我们用于比赛的这个集群,已经在我们的现网中用起来了,在高性能计算、图计算、深度学习等领域支撑腾讯的现网应用。
回顾我们走过的7年,我们是2009年1月开始基于Hadoop来开发我们的大数据平台,七年的征程,我们历经了3代平台的发展。
2009-2011年是我们的第一代平台,我们的第一代平台,只支持批量计算的场景,主要就是报表,这个过程,我们重点发展了平台的可扩展性,我们不断增大集群的规模,从09年的几十台,发展到现在总规模接近3万台。总结成几个字,第一代就是规模化。
第二代,用三个字总结就是实时化。这是2012年到2014年。主要支持在线分析和实时计算的场景,比如实时报表,实时查询、实时监控等。
第三代是去年到现在,主要建设机器学习平台,支持腾讯各业务数据挖掘的需求。这是从数据分析到数据挖掘的转变,三个字总结就是“智能化“。
第一代是离线计算的架构,是基于Hadoop开发的, 我们起名叫TDW,腾讯分布式数据仓库的意思。
社区的Hadoop迭代慢,单一集群规模小,稳定性和易用性都很差,不能达到腾讯的要求,因此我们按腾讯的业务运营标准,做了深度定制开发,我们着重发展集群的规模,解决Master单点瓶颈不能扩展的问题,我们优化了调度策略来提高Job的并发性,也加强HA容灾建设,还有很关键的一点的是,我们丰富了Hadoop的周边生态,建设了配套的工具和产品来降低用户的使用门槛,语法上,我们兼容Oracle的语法,方便腾讯各产品部门做程序的迁移,Hadoop大数据的性能很强,但是小数据分析的效率很差,我们就集成了PostgreSQL来提升小数据的分析性能,打通Hadoop和PG的访问界限。
就这样,我们从最开始的几十台、到几百台、到几千台,几年以后,在2013年单一集群达到4400台,2014年单一集群突破8800台,处于业界领先的水平。目前我们的总规模接近3万台。
TDW的建成,解决了我们内部三大业务痛点:
第一,它使我们具备了T/P级的数据处理能力,几十亿、百亿级的数据量,基本上30分钟就能算出来。
第二,它的成本很低,我们可以使用很普通的PC Server,就能达到以前小型机一样的效果;
第三,容灾方面,原来只要有机器宕机,业务的数据肯定就有影响,各种报表、数据查询,都出不来。现在TDW的机器宕机,业务完全无感知,系统会自动做切换、数据备份等等的事情。
正是解决了业务的这些痛点,业务部门都愿意把计算迁移到TDW。到2012年底,我们把所有原来在Oracle和mysql上跑的报表都切换到TDW。
TDW的建成,让我们具备了融合所有产品平台的数据的能力。
以前的各产品的数据都是分散在各自的DB里面的,是一个个数据孤岛,现在,我们以用户为中心,建成了十亿用户量级、每个用户万维特征的用户画像体系。
以前的用户画像,只有十几个维度主要就是用户的一些基础属性,比如年龄、性别、地域等,以前构建一次要耗费很多天,数据都是按月更新,有了TDW,我们每天更新一次。
这个用户画像,应用在腾讯所有跟精准推荐相关的产品里面。
再举个推荐的例子。推荐相信大家现在都耳熟能详,但是放在6年前,这还是一个刚刚新兴起的应用;TDW 为我们提供了一个快速切入快速支撑的能力。通过 MapReduce 的编程范式,基于 TDW 的平台,我们可以专注于各种推荐算法逻辑本身的实现,比如大家常见的 CF,MF,LR 这些算法,以及各种 hash 聚类算法;这个时候的推荐技术,面对海量的用户群体访问,更多还是基于一种实时查询的服务方式。
第一代平台解决了量大的痛点,但是在速度方面还有问题,数据是离线的,任务计算是离线的,实时性差。所以,我们建设了第二代的大数据平台。
在第一代基础上,集成了Hadoop的第二代——Spark,同时,还融合了Storm流式计算的框架。这一代平台的集成,让我们的计算的粒度从原来的小时,发展到分钟,直至秒级。
数据采集方面,我们构建了TDBank,让原来通过接口机传文件的方式,T+1的粒度,变成了毫秒级的实时采集。在这个采集平台里面,我们自研的消息中间件,每天采集的消息条数超过6.5万亿,可以说是世界上消息量最大的消息中间件。同时,我们还有高可靠版本的消息中间件,能支持像金融、计费等高一致性的需求,保证消息不丢。
在资源调度层面,我们基于Yarn,发展了我们的Gaia调度平台,Yarn只支持CPU和内存的维度,而我们的Gaia还支持网络以及磁盘IO的维度,Yarn只支撑离线计算,Gaia能支持在线的场景,另外,我们还Docker,我们平台现在每天有1.5个container。
再拿刚才提到的推荐例子,基于第一代平台的推荐应用会碰到2个问题,一个是随着用户量,访问量的增多,产生的数据会越来越多,多到在有限的时间根本不可能批处理的计算完,还有一点是用户的行为模式变化很快,需要更快的去更新各种维度的用户画像;数据的实时采集让用户行为,实时画像的计算成为可能,这构成了流式计算的 数据流,分布式的流式计算实时更新各个维度的统计量,进一步形成了推荐算法的实时训练数据,从而把上一代的 offline 的推荐系统变成了 online 的实时推荐系统。在广告的推荐应用上,我们可以看到每一次的实时加快,都带来了更大的点击率提升。
第二代的平台,实时性和体量方面,都能满足绝大多数业务需求。但随着我们的数据量越来越大,我们的瓶颈很快也出现了。
我们在Spark上做数据训练的时候,每一轮的迭代,在更新数据的时候,都会遇到网络方面的瓶颈,因为更新数据的地方是一个单点,如果数据的维度很大,这套框架就无法支撑。在我们的实际应用中,千万级的维度,都可以run得不错,但是上了亿级,性能就非常低了,甚至跑不出来。
所以,我们必须要建设一个能支持超大规模数据集的一套系统,能满足billion级别的维度的数据训练,而且,这个系统必须能满足我们现网应用需求的一个工业级的系统。它能解决big data,以及big model的需求,它既能做数据并行,也能做模型并行。
有两种思路。
一个是基于第二代平台的基础上做演进,解决大规模参数交换的问题。另外一个,就是新建设一个高性能的计算框架。
我们看了当时业内比较流行的几个产品,GraphLab,主要做图模型,容错差;Google的Distbelief,还没开源;还有CMU Eric Xing的Petuum,当时很火,不过它更多是一个实验室的产品,易用性和稳定性达不到我们的要求。
看了一圈,我们决定自研,走自研的路。我们前两代都是基于开源的,第三代则开始了自研的历程。其实在第二代,我们已经尝试自研,我们消息中间件,不论是高性能的,还是高可靠的版本,都是我们自研的。他们经历了腾讯亿万流量的考验,这也给了我们在自研方面很大的信心。
因此,第三代整体的计算框架方面,我们也走了自研的道路。第三代的平台,核心是一个叫Angel的高性能计算平台。
我们聚焦在高性能的计算框架方面,同时,也是我们往机器学习、深度学习演进的一个路线。
相比第二代,第三代的计算框架,可以支持10亿级维度的算法训练,由以前的数据并行,到可以支持模型并行。
同时,我们第三代的平台,还支持GPU深度学习,支持文本、语音、图像等非结构化的数据。
Angel是基于参数服务器的一个架构,它跑在我们的Gaia平台上面的。
它支持BSP、SSP、ASP三种计算模式;支持数据并行以及工业界更看重的模型并行,因为我们主要碰到的还是模型大的问题;
另外,在网络上我们有个原创的尝试,我们用了港科大杨老师的团队做的诸葛弩来做网络调度,ParameterServer优先服务较慢的Worker,当模型较大时,能明显降低等待时间,任务总体耗时下降5%~15%。
Angel提供很丰富的算法,支持LR、SVM、LDA、GDBT等等,并且集成了非常丰富的数学函数库,另外,还提供非常友好的编程界面,能跟Spark、MR对接,你能像用MR、Spark一样编程。
Angel跟其他平台相比,比如Petuum,和spark等,就我们的测试结果,在同等量级下,Angel的性能要优于其他平台。比如我们用Netflix的数据跑的SGD算法,大家看一下这个图的对比。
同时,Angel更适合超大规模的数据训练。目前Angel支持了很多腾讯内部的现网业务。
这里举两个例子,比如,在构建用户画像方面,以前都是基于Hadoop和Spark来做,跑一次模型要1天甚至几天,话题只有1k;而在Angel上,200多亿文档、几百万个词,3000亿的token,1个小时就跑完了。以前Spark能跑的,现在Angel快几十倍;以前Spark跑不了的,Angel也能轻松跑出来。
再看一个case,视频的点击预测,同等数据量下,Angel的性能是Spark的44倍以上。用了Angel以后,我们维度从千万扩展到亿,训练时间从天缩短到半小时,而准确度也有不小的提升。
Angel不仅仅是一个只做并行计算的平台,它更是一个生态,我们围绕Angel,建立了一个小生态圈,它支持Spark之上的MLLib,支持上亿的维度的训练;我们也支持更复杂的图计算模型;同时支持Caffe、TensorFlow、Torch等深度学习框架,实现这些框架的多机多卡的应用场景。
各位,临近尾声了,我想总结一下腾讯大数据平台发展的三个阶段:
我们从离线计算起步,经过实时计算阶段,进入了机器学习的时代。
我们从跟随开源,发展到自研,我们的发展历经了规模化、实时化,以及智能化的变迁。
最后,我要借这个机会跟大家公布一个消息,那就是:我们的大数据平台将全面开源。
我们会在明年上半年把Angel以及Angel周边的系统进行开源。
我们平台源自开源,我们的发展离不开开源,所以我们会以最大的力度拥抱开源。
其实在开源的道路上,我们一直都在参与:我们第一代平台的核心,TDW-Hive,已经在2014年就开源了;我们还在很多社区项目贡献了很多核心代码,培养了好几个committer。
而未来,我们的开源力度只会越来越大。
谢谢大家。
推荐:更多精彩关注腾讯科技官方微信“qqtech”。