支付宝王益:40岁写30年代码是一种什么体验?

导语:

对于蚂蚁金服研究员王益而言,2019年是个颇有纪念意义的年份。今年他整40岁。从10岁开始,写代码整30年。这30年来,他当过“不务正业”的学生,创纪录地在大一就考下系统分析员,“单枪匹”闯荡过从国内到硅谷的多家知名互联网科技公司,和AI领域许多传奇人物都有所交集。不惑之年对于许多工程师来说,或许已是需要焦虑的年龄,但40岁的王益在蚂蚁金服每天都过得很充实:起床,自由泳一千米,然后去做他最喜欢的事——写代码和组织大家一起写代码。

2019年9月11日,在上海举办的Google开发者大会上,蚂蚁金服研究员王益分享了新开发的分布式深度学习系统ElasticDL。这是他来到蚂蚁金服的一年之中所做的第二个开源项目,主要用于大幅提升集群总体利用率以及深度学习团队的工作效能。之前开源的 SQLFlow系统在短短的几个月之间,已经在GitHub上获得了三千多颗星星。

2019对于王益而言是个颇有纪念意义的年份,今年他整40岁,写代码整30年

这听上去是一件不可思议的事——30年前,上世纪的80年代末,他在⻓沙上小学,全城都很难找出一位能教编程的老师,个人电脑更是一个陌生名词,一台以苹果2为原型、可以用BASIC语言编程的 “中华学习机”售价7000人⺠币,在当时几乎可以买下一套房子。

幸运的是,王益在10岁那年得到了这样一件贵重的礼物,从这台学习机和一本BASIC语言教材开始,他开启了与代码结缘的人生。

“我那时不是个好学生,经常受‘别人家的孩子’打击,老师和同学都觉得写代码是不务正业。” 回想起30年来的经历,这位清华博士、足迹从国内到硅谷历经多家知名互联网科技公司的学霸笑谈自己“活得比较任性”,“但我就是想做与众不同的事。别人越说这样不行,我就越想用这种方式证明自己。”

初中毕业那年的暑假,他用“中华学习机”和自己焊接的电路板,把自家的老式“威力牌”双筒洗衣机改造成了自动洗衣机。同时,他用Apple BASIC语言和6502汇编混合编程,写了人生中第一个游戏。高中三年,其他同学努力备考,他却加班加点自学了大学计算机系所有课程,随后参加计算机水平考试,先后获得了程序员、高级程序员、以及最高级别系统分析员资格。2018年,他获得Google APAC Innovation Award。从不断摸索代码世界的少年时代,到专注于AI基础架构和系统开发的求学工作生涯,这份“任性”一直伴随他走到今天。

“我经常从零开始。选择去做什么的一大标准是‘有意思’。”

相比于规划一条稳妥的职业发展道路,王益更愿意顺应自己强烈的好奇心,去选择最困难但最有意思的探索方向。他在中国和美国互联网公司都工作过,也分别在美国公司的中国分部和中国公司的美国分部工作过。他的足迹遍及国内BAT三家。任性的是,每次跳槽, 他都从一个人coding一个创新项目开始,吸引同事们加入,从而组建团队。虽然2011年就在腾讯作为广告系统技术总监,但是他从不在跳槽时要求带何等规模的团队。

图片1.png

2014年,王益带着妻子和两个月大的女儿离开腾讯移居硅谷。“一切都归零了。工资减半。”他笑笑说。不过凭着多位学界和业界领袖的推荐,他很快就安顿下来,不到一年就开始在硅谷创业,作为Head of Research Scienets 参与创建了AI创业公司 ScaledInference。这是一家人才济济的创业公司。人工智能行业的领袖人物、加州大学伯克利分校的Michael Jordan教授是这家公司顾问。陆奇曾代表微软到访,讨论技术合作。“可惜我们不够关注业务落地,做的不够好。技术研发一定要有落地的能力。”事后,王益不无遗憾的说。

在加入蚂蚁之前,王益在百度硅谷研究院工作,负责开源深度学习系统PaddlePaddle。在历经两年的艰苦开发,新一代技术Fluid开始系统地落地百度各个业务之后,他发起了他在 PaddlePaddle的最后一个子项目——一条太阳能驱动的无人驾驶船。这是一条双体船,由他和五岁女儿的两条划艇构成。船上的笔记本电脑运行基于immitation learning的人工智能系统,自动学习驾驶者的技巧。为了船体稳定,他在自家⻋库里焊接了连接两条划艇的金属框架。便于拆装的结构,可以装上他的皮卡,方便下水测试。

做出加入蚂蚁金服的决定,也是出于同样的理由——“有意思”。“这里的业务很新颖,对AI 有着更加多样化的需求。”如何用AI解决金融行业的问题,是和他以往所面对的完全不同的全新挑战。

SQLFlow:分析师与AI模型间的翻译

加入蚂蚁金服不久,王益就意识到自己之前的朦胧猜想越来越清晰地被验证:和主要依靠流量与广告赚钱的传统互联网公司不同,蚂蚁金服不是纯互联网公司,它有独特的商业模式和对于工具的独到需求。

此前的十多年中,他的大部分经历是在传统互联网行业做搜索推荐技术,这一类业务所需的模型总数比较有限,只需要算相关性的模型、排序的模型等,一个成熟的模型通常会有几十上百人维护,每年修改调整去提升性能。但在蚂蚁金服,这种模式被颠覆了。因为金融行业的数据远比社交、电商和搜索引擎的数据要稀疏,很难完全靠机器来挖掘出规律,必须依赖金融专业分析师的智慧。分析师大量使用SQL语言来验证想法,或者进一步做探索,这些结论对金融业务非常关键。

每一位分析师平均每天要提交很多个AI任务,这些任务对AI模型的需求各不相同,差异性特别显著。但是,模型是建模团队用Python语言描述的,分析师们如果要调用模型,要么需要学习Python语言,要么需要专配一位工程师,效率难以显著提高。

语言不通,所以需要翻译,那么能否在SQL和Python之间也设立一个翻译?

基于这样的想法,王益和团队一起开发了SQLFlow,这个系统好比一个“翻译机”,能将分析师们输入的SQL命令翻译成Python语言,这样一来,分析师无需学习Python,使用SQL语言就能够处理数据、训练AI模型,并使用训练好的模型来回答业务问题。

这套系统更重要的作用,是重新界定了分析师、建模团队和工具开发团队的责任,让同一个机构里的这三个工种有了清晰的分工,有效形成合力。

ElasticDL:一个“聪明”的智能学习系统

通过SQLFlow被调用的模型,会基于基础架构来进行分布式执行,这套分布式的智能学习系统,就是刚刚开源的ElasticDL。ElasticDL基于TensorFlow2.0构建,是面向未来的下一代技术,其很重要的独特之处,就在于它很“聪明”。

首先,它能和SQLFlow一起,补足简短的SQL程序翻译成复杂的Python程序的过程中所需的信息。根据深度学习模型的数学特性,它能够决定用什么样的方式来进行计算,还能在计算过程中智能地决定一些参数。

其次,它的容错和弹性调度机制,能让集群的利用效率更高。用户提交需求之后,不再需要“排队”等待资源释放才开始计算,计算会“插空”进行,这样闲置和等待时间更短,大幅度减少了浪费在等待上的系统资源和人力资源。

在数据收集能力极大提升的今天,拥有能算“大”数据的能力,比算得快更为重要。这是王益一直未变的观点。ElasticDL的开发,着眼之处不仅是计算本身的提速,更是针对云计算时代中,数据量大且多人共用集群的特点而进行的调度优化。“等待的时间有时会占到60%-80%,如果不能有效减少这部分的浪费,只是提升计算速度的话,对整体效率的提升就是杯水⻋薪。”王益说,但是ElasticDL的弹性调度能在资源不足的情况下,有多少就先调用多少,让计算尽快启动。

⻓远看来,ElasticDL还将支持各种学习模式,以顺应金融行业对AI的多种需求。很多在传统互联网行业可有可无的训练模式,在金融行业都很有广阔的应用场景,比如保障数据安全的同时还能共享数据背后规律的共享智能,或者建立可以进行各种大胆试验的虚拟环境,这些面向未来的需求,在ElasticDL的设计之中也有所考虑。

对于一直在做AI基础架构的王益来说,对AI有着各种不同需求的金融行业,是一片全新的驰骋疆场。无数新的问题等待他去尝试,去寻找新的解法,让他乐此不疲。

QQ截图20191018110132.png

实践出真知,无需等待理论完美证明

“数学模型和分布式架构是互相影响的,只了解其中任何一面,在这个领域都做不好。要为深度学习的架构去改数学模型,也要因为数学模型的数学特点去做架构调整。”

站在今天回顾过去做AI基础架构的十多年,王益觉得这是自己所学到的最重要一课。

这一想法的首次验证,是在他2009年离开Google进入腾讯之后写出的Peacock系统。和在Google所做的语义理解项目不同,這次他将算法和分布式架构一起考虑调整,让语义理解的规模扩大了上千倍,后来集结成了论文发表在ACM Transactions on Intelligent Systems and Technology杂志上,广为业界知晓。

2015年,他进入百度硅谷参与语音识别项目Deep Speech 2,这一项目不仅被MIT科技评论评为 2016年全球十大科技突破之一,也成为他了解深度学习的一个契机。他一度坚持要有完美的理论论证才能进入实践验证,因为深度学习的理论未经严格推敲,他一直认为只有统计学习才是“正道”。

在百度,王益获得深度学习科学家徐伟的推荐,去负责深度学习平台PaddlePaddle。在不断探索解决实际问题的过程之中,他的想法改变了。

“并不一定先要有完整论证的理论才去进行实践,也可以先实践,实践出真知。实践之后再总结提升为理论。”王益说,“这就像是在牛顿发现力学原理之前的几千年前,人类就已经利用杠杆原理修起了金字塔。”

Code Review:从最初的震撼到年的习惯

今年5月,SQLFlow宣布开源,之后仅四个月,ElasticDL也宣布开源,这在蚂蚁金服的历史上并不多⻅,却是王益的坚持。他认为唯有开源才能保证信息透明,唯有让代码直接面对全社会,才能全方位的接受审视和检验,对写代码的人自身来说,也是一种自我约束。

“开源和code review不仅是个技术问题,更是管理学问题、社会学问题,关系到如何把大家组织起来变成更高效的团队。”王益说。

Code Review对他自己而言,也是人生中一段难以磨灭的经历。他用“最初的震撼”来描述12年前初出校⻔加入Google中国时的体验。当时他已经写了18年程序,手握系统分析师资格,还特别研究过了Google的Code style,所以初次遭遇Code Review时并没有太当回事:“以为自己写了这么多年程序,怎么都还行吧。”

但现实是⻣感的:他在Google写出的第一个程序,总共不过100行代码,却被来自美国的同事和好友Jerad提出了120行意“当时深受打击,简直觉得屈辱。”

他压制了情绪,仔细去看那些意⻅,这才发现每一条都真诚且很有帮助。“从那一刻起, Code Review成为了我们的工作方式。”每天和这些同事们一起coding,互相review,让中国工程师们很快知道了应当关注哪些地方,应当如何沟通合作。因此,不管是腾讯的 Peacock,百度的PaddlePaddle新版本Fluid,还是蚂蚁的SQLFlow 和ElasticDL都是王益先开发出原型,再吸引感兴趣的同事一起来完善。

这种工作方式的影响一直延续到了今天,他也希望能够以这种方式去影响更多的工程师。“搞技术必须实事求是。”王益说,代码是工程师最好的名片,藏着掖着、互不交流,就无法带来信赖、合作与提升。帮助大家了解和实践code review,需要花费大量的时间和精力。“白天弄管理,晚上写程序”这是王益总结的在腾讯工作时的办法。“后来在百度和蚂蚁,我更刻意地专注做技术工作,确保精力更集中。”

这正是现在的互联网科技公司的组织管理和人才选拔之中不可或缺的一课。在开源机制之中,每个人都会对自己的coding更加认真,主动的人会脱颖而出,被动的人会自动淘汰,团队成员之间会自发地相互协同,互相认同,找到沟通和合作的方式。

“现在技术领域的成果已经很难靠单枪匹⻢的个人英雄主义去取得,团队合作必不可少。希望用这种方式来找到开朗真诚的伙伴,一起去摘高处的果实。”王益说。