编者按:在不久前发表的“如何从系统层面优化深度学习计算?”一文中,微软亚洲研究院异构计算组资深研究员伍鸣与大家分享了他对深度学习计算优化的一些看法,文章受到了大家热烈的欢迎。
在本期的“科学匠人”中,伍鸣将作为主人公为大家讲述更多自己关于研究的感悟,他表示研究就像潜水,要习惯不断的“起伏”和“压力”。
微软亚洲研究院资深研究员伍鸣
2007年加入微软亚洲研究院时,伍鸣对于自己的研究方向隐隐有一丝担忧——从外界看来,针对CPU、OS等底层系统的研究在微软亚洲研究院似乎并不常见。然而在随后的日子里,自由的学术氛围、涉猎广泛的同事们以及与伍鸣研究方向相近的系统组,让他彻底消除了忧虑,开启了在计算机系统领域深入探索的旅程。
从跟随导师成长,到独挡一面做研究,再到带领异构计算团队,经历了一个个项目的立项到结题,与同仁们的一次次切磋与探讨,如今已成为资深研究员的伍鸣表示,在微软亚洲研究院从事计算机系统研究的这11年对他而言就像是深海沉潜——当你习惯了海水的起伏,学会了与压力相处,便能见到全然不同的风景。
伍鸣(前排左一)与异构计算组成员
加入微软亚洲研究院之初,伍鸣接触的是分布式系统的调试与测试——研究高级调测工具,找到并解决系统的Bug。读博士期间他对这个方向的研究了解并不多,但在并行计算方向上的积累使他很快认同这个问题的重要性。同时,新鲜的研究内容也让初入职场的他十分兴奋。
上手不久,伍鸣就发觉分布式系统有它特殊的“不确定性”——其状态空间非常大,在实验室里小范围内运行完美的程序,当部署到大型平台上时,往往会发生出人意料的故障,而应用一旦部署,再进行调试、排错的可行性极低。所以,解决此问题最好的办法就是在测试阶段,发现各种潜在问题并加以处理。
为此,伍鸣参与开发了R2和Modist软件。R2可以记录下系统的运行过程以及期间发生的所有非确定事件;Modist则能控制系统的不确定性,尤其是在出现并发事件时,它可以控制事件出现的顺序,让不经常发生的边界情况下的问题得以出现,从而更有效地锁定错误根源,并修正它。然而,庞大的状态空间使得找到这些隐藏的非确定性Bug犹如海底捞针。伍鸣因此又主导设计开发了DeMeter系统,通过组件划分以及动态发现组件间接口行为的方法,进一步显著地缩小了需要搜寻的系统状态空间,从而使得这样的工具更加实用。关于这三个系统工具的研究论文,分别被全球系统领域的顶级会议OSDI、NSDI、及SOSP接收发表,得到了国际同行的广泛认可。
调试分布式系统的经验使得伍鸣对分布式系统本身的设计有了更深入的理解,并对其产生了浓厚的兴趣。一个偶然的机会,伍鸣得知微软总部研究院数据库研究领域的“大拿”Phil Bernstein正在寻求合作伙伴,希望一起设计并实现新的并发控制方法,利用当时新兴的高性能闪存和网络硬件来更好地解决数据库事务处理的可扩展性问题,于是伍鸣主动请缨进行远程合作。在Phil的指导下,伍鸣承担了大部分算法的设计和实现工作,也让他有机会独立思考系统的整体布局,站在更高的角度去审视系统的架构与可能存在的问题,理清设计和应用思路。辛苦做了一段研究之后,伍鸣顺利完成了论文,并投向了全球数据库领域的顶级会议SIGMOD,但却不幸被拒……
这让研究之路一直还算顺利的伍鸣有些沮丧。此时他收到来自Phil的邮件,告诉他这是很常见的情况,被拒的原因可能是由于写作规范不符合要求,或是某些过程不够清晰,亦或是某些运行结果不够令人满意。Phil理性客观地试图让伍鸣理解这并非完全否定他的研究成果,而只意味着“你的研究仍有可以提升的空间”。
在Phil的鼓励下,伍鸣开始仔细审视之前的项目,静下心来重新梳理每一个环节,才发现原来自己的某些设计并不严谨,有些表述不够清晰,亮点也呈现的不够突出。在对论文进一步拆解推敲之后,伍鸣的论文被另一个行业顶级会议VLDB发表。“自那时起,每次做系统,我都习惯性地仔细审视和反省系统中的每一个细节,而这个习惯也让我在之后的系统设计工作中受益匪浅”,伍鸣说。
随着社交网络和云计算的兴起,伍鸣随后转向了图计算系统的研究。他在这个方向上尝试了图计算在多核系统上的优化、对快速图更新的更好支持、对时序图分析的访存局部性改进、以及用RDMA高速网络硬件大幅提升分布式图计算系统的可扩展性。他的这一系列研究工作取得了丰硕的学术成果。然而,当他想要在公司的产品中应用这些技术时,却发现公司里更多的应用场景并不是图计算,而是机器学习。伍鸣意识到,其实图计算与机器学习在模式上有很大的相似性——都是迭代的内存计算。事实上,只需要将应用的接口和存储的数据结构做出适当的改变,就可以让已经搭建的图计算系统很好地支持机器学习的任务。“ChaNa(刹那)”项目系统的雏形此时出现在了他的脑海中。
当时,微软的互联网广告业务所依赖的一些工具运行效果并不理想,在研究之后伍鸣发现,他的图计算系统经过改造后可以很好地解决这个问题。于是他将微软广告平台的点击率预测算法作为要支持的目标应用,做出了“刹那”的原型。经过初步测试,运行性能和支持的模型规模均有数量级的提升。之后,伍鸣用技术和数据说服了产品团队使用他的最新研究成果。
与产品团队的合作让伍鸣意识到,研究带来的美好体验不仅仅是让更多人看到在论文中展现的科研成果,更在于转化成扎扎实实的产品,被更多人用到。与产品团队的沟通也让他发现,所谓的“内部销售”关键在于信任的建立,以及能够给产品带来怎样的实际价值。“如果总是局限在自己狭窄的研究领域不与外界沟通,反而会让研究失去基础,导致研究寸步难行,尤其是在系统研究这样与实际应用结合非常紧密的领域。”
“项目做大以后引发了更多新的研究问题,由此我们也聚拢了更多志同道合的研究员们,研究也自然越做越好。”“刹那”在微软内部得到了广泛的认可,伍鸣和团队的研究以及协同能力也因此更上一层楼。
伍鸣不仅研究做得好,爱好也非常广泛。音乐、游戏、摩托骑行等都是他钟爱的项目,热爱潜水的他还专门考取了潜水执照。之所以如此享受潜水是因为他觉得,“潜水的过程和做研究很相像,都是在探索一个未知的世界,会遇到很多让你意想不到的东西,潜得越深,你看到的景色便越绚烂,这让我特别兴奋。”
伍鸣在潜水
“作为研究员,一定要有好奇心和求知欲,驱动自己去挖掘新的知识和领域。”伍鸣表示,从一个模糊的研究方向,到一步步将它实现,在不确定的过程中获得确定的结果,把看似没有关联的事物串起来去解决问题,无论是过程还是结果都能给人带来一种柳暗花明的喜悦。
如今,伍鸣的研究与深度学习、人工智能结合紧密。尽管现在科技界可谓言必称AI,但AI到底发展到了哪一步,具体要如何实现,仍有很多问题不清晰。对此,伍鸣认为,AI时代最重要的是三个核心的要素:计算能力、数据和算法,要想将AI落地,需要综合考虑这三个要素,而且需要从系统层面去为AI扫清障碍。
“虽然现在很多AI应用不断涌现,但还没有出现一个足够强大的系统平台可以去支撑诸多AI应用的开发与运行。”在伍鸣看来,AI发展的瓶颈恰恰在于系统。所谓系统,必须是一个实际存在、可以工作的end-to-end体系,它看起来很抽象,将所有应用所必需的底层特质提炼了出来,但同时又很具体的是一个实实在在的软件系统。
微软近年来不断在人工智能系统领域发力,希望可以为业界提供一个全栈的AI平台(AI Stack),覆盖人工智能系统和应用的三个层面:一,底层AI计算能力,从硬件到基础设施再到管理系统全部覆盖;二,AI平台中间层,包括编程语言、各种工具包等,给开发AI算法的人员使用;三,AI算法,提供成熟的AI算法供应用开发者使用。
全栈的AI平台
随着团队成员的增多,伍鸣也需要考虑更多管理问题,除了做好自己的研究工作,与其他领域的专家以及产品组的横向交流也明显增多,这些是与系统研究不同的挑战。不过,伍鸣表示,他很享受工作上所带来的这些“压力”,无论是做研究还是管理,他都会像潜水员一样“努力弄清楚情况”,让未知的“海底”逐渐清晰,直到豁然开朗。
你也许还想看:
直播预告
微软亚洲研究院视觉计算组资深研究员王井东将在明天(5月31号)参加AI科技大本营的直播公开课,为大家讲解发表在ICCV 2017和CVPR 2018上的研究——基于交错组卷积的高效深度神经网络。点击阅读原文进入报名页面。
感谢你关注“微软研究院AI头条”,我们期待你的留言和投稿,共建交流平台。来稿请寄:msraai@microsoft.com。