道器相融,由 Angel 谈一个优秀机器学习平台的自我修养(下)

《道器相融,由 Angel 谈一个优秀机器学习平台的自我修养(上)》

在您看来,如何才能高效的搭建一个优秀的机器学习平台?

黄明: 先讲个大家都知道的小插曲:TensorFlow的前身是DistBelief,当时并不太受深度学习界待见,大部分人做深度学习,要么Caffe,要么Torch,基本忽略DistBelief,后来TensorFlow推出,就很受欢迎。这里有个时间细节,Hinton是2013年加入Google的,而DistBelief是2011年开始研发的,TensorFlow是2015年发布的,Jeff Dean由始至终,都在Google负责这个项目。作为外人,不太可能知道Hinton到底对TensorFlow做出了什么样的贡献,但是效果是很明显的。DistBelief之前工程性太强,对深度学习的模型本质和算法友好度不足,Hinton加入后,第二代的TensorFlow的水准远远超越第一代的DistBelief。整个系统的设计,从上层到底层,从名字到周边,都透露着对深度学习工程师的贴心理解。这也是TensorFlow成功的原因。

所以要设计和搭建一个优秀的机器学习平台,在我看来要具备如下3个条件:

首先,要搭建一支工程和算法模型能力都很强的团队。整体上的这个团队,需要很好的互补能力,要有算法工程师,也要有系统架构师,大家互相配合。算法工程师的数学功底和表达能力很重要,而系统架构师的理解能力和快速实现能力很重要。另外最好能将学术界的创新能力和工程界的落地能力结合,才能使系统创新性和可靠性兼得。腾讯的Angel项目从一开始,就是北大的博士生和腾讯的工程师联合主导的项目,虽然远比不上Hinton和Jeff Dean这样的大神级别,但是模式是类似的,这是非常关键的一个要素。

其次,需要有大数据作为驱动。之前我们研究过Petuum,发现有些理念很不错,但是稳定性非常差,在大数据量下很难跑通,而且搭建也很难。所以在Angel的研发过程中,我们始终坚持以大数据为驱动的原则,各种Tricks和设计必须以最终压测通过为原则,并紧密依靠内部业务,通过场景落地来检验效果,以此保障系统的设计合理性和可用性。这点对于大公司来说其实没有太大的难度,只要有正确的理念和合作即可。但是这对于小公司来说则比较困难。所以这也是BAT等大企业开源的框架,和实验室或者初创公司出品的框架相比的优势之一。

最后,需要保持很快的演进速度。TensorFlow现在经常被批评接口改动太快。其实最近Angel的接口改动也很多,而且有些不能向后兼容。这其中原因很简单,一个是因为业界的深度学习发展太快,新算法和模型、技巧层出不穷,作为一个平台必须能快速适应,不进则退。另一个原因是开发的人太多,即便是Angel目前Star还比较少,但是内部大量的并行开发,很难保证所有的模块都是合理的,定期重构是消除这些不合理的唯一方法。整体来看,只要是合理的重构,能提升性能,就标识着这个项目还在快速的生长期中,不失为一件好事。

InfoQ:创新工场的王咏刚老师在《为什么AI工程师要懂一点架构》中提到,研究不能只懂算法,算法实现不等于问题解决,问题解决不等于现场问题解决,架构知识是工程师进行高效团队协作的共同语言。能不能谈谈您对架构能力的看法?

黄明: 王咏刚老师说的要懂“一点”。这个词在我看来代表了两个意思:

确实需要懂,不能什么都不懂。企业里的算法工程师和数据科学家一定要有动手能力,不能整天只会做研究、写Paper,Matlab和单机版的Python试验一下,自己独占一台GPU机器玩得很开心,模型做完了不会上线,沟通一到工程部分就聊不下去……其实是处于一种很不好的状态。这样的AI工程师,除非某方面特别强或特别突出,否则在企业是很难落地生存的。

不能指望懂太多。毕竟做算法和做工程的思维重点不一样,脑回路也不太一样,方法论也不一样。两方面都精通的人才,有,但是难找。这也是腾讯做Angel的初衷和目的,就是让算法工程师不需要懂太多底层框架优化,也能轻松地写出高效的、能分布式运行的生产代码,把一些通用的体系化的系统和架构细节屏蔽掉,这样才能极大地提高企业生产力。

目前来看,包括Spark、TensorFlow这些比较好的框架,也正是因为它们能够使数据工程师和AI工程师,在适当屏蔽掉底层的架构细节后,依然能够写出高效的算法代码,才取得了成功。

Angel平台的新变化和展望

InfoQ:通过您之前的投稿,大家对Angel平台开源前所做的一系列重构和升级已经有所了解,开源以来想必又有了不少新变化,能否介绍一下近三个月你们对Angel平台又做了哪些优化?

黄明:开源以来,Angel低调的发布了2个小版本:1.1.0和1.2.0,主要是加入了新的算法和优化方法,加强了稳定性,细化和完善之前的功能。这3个月内的优化,以稳定和性能提升为主。因为Angel的定位是工业级可用的平台,所以非常看重大数据量下的稳定性和性能,我们公布的算法都是生产验证过。同时我们对Spark on Angel的接口进行了反复的重构,尽可能和Angel本身的接口接近一致和复用,这方面的工作到时候会在这次QCon的大会重点介绍。

另外根据用户的反馈,Angel开发团队正在开发2个大功能,尚未发布,包括:

Python接口:接口优化和重构,以提升易用性。因为之前宣传的时候,很多用户的第一个问题,就是有没有Python接口……所以我们不得不把这个作为第一优先级来满足。

Spark Streaming on Angel:支持在线学习,加入FTRL算法。就像之前说的,实时性也是机器学习必不可少的。那Angel本身不做实时这块,但是支持Spark on Angel,那通过Spark Streaming来接入实时训练,也是水到渠成的事情,成本也很低,不过对Angel的HA和内存管理,需要进一步的优化。

这两个新功能应该在下2个版本就能够和大家见面了。至于深度学习的支持,其实也在进行了,但是有些难度,会晚点就推出。

InfoQ:开源后这段时间,Angel平台的推广情况如何?有没有什么印象特别深刻的问题反馈?

黄明: Angel开源以来,其实我们并没有太刻意推广,包括我们在github上Public的第一天(6月16日)都没有准备做任何PR,不过由于之前的影响力,最终各大媒体都报道了。但是腾讯TOSA(开源委员会)最近一年对开源项目的扶持非常大,态度也很Open,所以我们主要是借着腾讯开源的力量在做这个事情,发了几篇文章。目前整体的Star数接近2.5k,我们比较欣慰的是Fork和Star数的比例比较高的,看得出很多人还是对项目很有兴趣的。整体上,我们还是按照自己之前定好的节奏,小步快跑地进行新功能和版本的研发。

据了解和接触,目前有部分公司(如小米、新浪微博等)正在试用Angel,也有了不少贡献者。印象深刻的有几个:

华为的一位工程师,项目刚发布不久就提交了一个比较大的PR,帮忙把Netty版本升级了,非常给力。后来他想把GraphX集成进来,但是我觉得这个方向不太对,就Reject掉了,不太好意思。

微软LightBGM的开发者之一提了个Issue,和Angel开发GBDT的同学互动了10个来回左右,详细地讨论了机器学习任务中MPI和PS的网络通讯开销到底谁更小的问题,进行了很有意思的学术互动。

海外的一个用户主动帮忙翻译Angel的文档,之前为了开源,团队花了快1个月的时间边写文档边改Bug,所有文档加起来应该有100篇左右,翻译工作量巨大。但现在基本全部都翻译完了。

这些都让我们体会到了开源的力量和益处,一个平台在开源之后,会受到来自全球的关注,只要你用心经营,并保持良好的功能和性能,能帮助到用户,用户就会主动帮你做很多事情。而你的视野,也会变得更加的开阔。很多外部用户的需求非常客观到位,正是他们推动着我们往前走。

InfoQ:开源三个月后再看Angel,与一众机器学习平台相比(比如Spark、Petuum、GraphLab、TensorFlow),Angel的优势是什么?Angel的什么特性最能吸引机器学习开发者?

黄明:首先目前其实Petuum、GraphLab都不开源,没有可比性。Angel在研发初期借鉴参考过Petuum的一些思路,但是后来实验中发现,Petuum在可靠性和稳定性上都达不到工业可用级别,所以基本上也都推倒重做了。

和Spark比的话,目前Spark的重心还是在SparkSQL上,这从每个版本的PR数就可以看出来,MLLib的比例很小。这在某种程度上也是因为Spark的RDD本质局限导致的。相比之下,Angel重点是机器学习算法,而基于PSModel的编程模型可以让各种机器学习的优化和Tricks都很方便地实现,对于算法工程师非常友好。伴随着Python接口的提供,这个优势将会变得更加明显。

TensorFlow目前在深度学习上的地位还是遥遥领先,从7w个Star数就可略见一斑。但是在多机多卡的性能上TensorFlow的PS做得并不好,最近发布的最新版本还在尝试走MPI路线,这是业界难题之一。Angel目前不会独立做一套新的深度学习框架去和TensorFlow竞争,而是会发挥自身优势,把PS-Service做好做极致,来加速并行训练并形成互补。

关于传统机器学习算法的生命周期问题,我觉得不用太担心。很重要的一点是传统机器学习算法比深度学习更贴近problem solving而非模拟智能。深度网络模拟大脑结构,所以在人类擅长的智能领域优于传统算法,比如视觉听觉,各种对外界信号的理解……但是还有一些非智能领域,人大脑展现出各种认知缺陷(cognitive deficit),比如对模式是随机还是真实的判断,对概率的认知,对风险评估等等。这些方面传统机器学习方法仍然更有效,不需要通过大量的野蛮暴力尝试,就能得到更好的结论。也许以后会改变。但目前传统思路的机器学习还是有必要的,在很多场合,简单有用,包括腾讯的很多场景,还是有刚需,所以Angel还是要把它经营好。

整体上来看,目前Angel是业界,包括国内和国外,比较成熟的开源参数服务器框架,能够在十亿级别的维度(其实百亿也可以,只不过没生产完全验证过,所以不这样宣传)、T级别大小的样本量规模下,开发和运行通用的机器学习算法的平台。另外值得一提的是,Angel的算法开发难度也比较低,有一位开源贡献者很轻松地在Angel上实现了阿里巴巴用于CTR预估的MLR算法,并贡献给Angel社区,这正是Angel团队所期待的。

InfoQ:您认为目前机器学习平台还存在哪些问题和难点?未来改进的重点是什么?

黄明:目前机器学习平台还存在3个大问题:算力的水平扩展、模型的高效压缩、快速的推理能力。

机器学习平台最大的难题还是算力。性能再强,接口再好用,底层优化再极致,单机能力终有极限,需要能水平扩展,而深度学习大规模通用的多机多卡的分布式方案,目前依然是个难题,即便TensorFlow也没解决得很好。这也是腾讯致力于Angel系统的原因,希望无论是CPU还是GPU,我们都能提供高性能分布式机器学习方案。

除此之外,利用庞大的集群规模,长时间训练出来的精细模型,其大小一般比较大,像Angel训练出来的模型一般都会上百G,而深度学习的模型,多数也到G级别。这么大的模型,需要压缩之后才能给终端使用,如何在尽量减少精度损失的情况下,最大化的压缩模型,也是平台需要考虑的。

最后一个是快速的推理能力。无论是终端推理(手机端,无人驾驶车……),还是服务端推理(广告,推荐……),要求都是一样的,要尽可能速度快和高吞吐量。这时如何合理地利用和设计流式实时系统,来快速接入数据进行推理,也是平台需要考量的点。

在未来一年里,相信大部分的机器学习框架,包括深度学习框架,都会围绕着上述几个问题重点发力。这也是Angel需要面对的挑战和机遇。

采访嘉宾介绍: Andymhuang(黄明),腾讯T4专家,Spark早期的研究者和布道者,对分布式计算和机器学习,有独到的经验和研究。目前于数据平台部担任海量计算组Leader,负责构建大规模分布式计算和机器学习平台,助力腾讯各大数据和机器学习业务快速发展。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

第一批被AI累死的人

一双眼睛的局部细节图出现在电脑屏幕上,小慧对着放大的眼睛,一步步地做好标记点。一眼望过去,一排排的电脑屏幕上,都是类似的画面。略显昏暗的办公环境加上电脑屏幕上被...

802
来自专栏智能算法

“忘掉大数据”之“建模术”:数据挖掘还原用户的生活场景

建模无疑是大数据里面最艺术的部分,也是最令大数据从业者痴迷、得意的领域,一个好的模型就是一篇作品,是一首诗,令人心旷神怡。建模、模型并不是什么新鲜事...

3286
来自专栏灯塔大数据

人工智能 |「凡是过往,皆为序章。」64岁的RODNEY BROOKS谈AI的起源与发展

我们距离通用人工智能还有多远?这是一个很多人都在试图回答的问题。然而对于人工智能领域的真正从业者来说,我们面前的道路还很长。Rethink Robotics 创...

923
来自专栏ATYUN订阅号

Kebotix利用机器学习和机器人加速化合物和材料设计

机器人手臂将移液器浸入培养皿中,并将少量明亮的液体转移到位于另一台机器前面的许多容器中。当所有样品都准备好后,第二台机器测试它们的光学特性,并将结果输送到控制臂...

714
来自专栏量子位

姚期智院士亲自讲授,一文读懂量子计算

但如果你对量子计算深怀兴趣,或者对量子计算的前世今生、未来前景等充满好奇,这可能是最深入浅出的授受文章。

772
来自专栏人工智能头条

中文自然语言处理实现突破,京东智能广告实验室论文被ACL收录

941
来自专栏机器之心

人物 | Yann LeCun:让Facebook学会思考的人

选自BuzzFeed 作者:Alex Kantrowitz 机器之心编译 Yann LeCun 是深度学习研究领域内一个响当当的名字。作为 Faceboo...

2629
来自专栏前沿技墅

AI对话系统3.0:社交聊天机器人

最近,人工智能领域的后起之秀Facebook着实火了一把。根据2017 年6 月17 日美国《大西洋月刊》的报道,Facebook人工智能实验室设计的两个聊天机...

993
来自专栏量子位

AI计算力6年增长30万倍,远超摩尔定律 | OpenAI分析报告

为了感受这个速度,OpenAI发布了一份分析报告,说的是2012年开始,AI训练所用的计算量呈现指数增长,平均每3.43个月便会翻倍。

673
来自专栏人工智能

CCCF 微软沈向洋:理解自然语言:表述、对话和意境

来源:《中国计算机学会通讯》2017年第12期《CNCC2017特邀报告》 微软全球执行副总裁沈向洋博士在2017年10月25日在福州举行的中国计算机大会(CN...

2185

扫码关注云+社区