实习派 | CodeXGLUE:跨国、跨部门、跨团队,合作创新中迅速成长

2021-06-03 | 作者:微软亚洲研究院

基准数据(Benchmark Dataset)对一个领域的发展至关重要。在代码智能(code intelligence)领域,微软亚洲研究院自然语言计算组联合 Visual Studio 和必应搜索发布了首个大规模多任务的新基准—— CodeXGLUE

在庞大数据中构建基础体系如同沙里淘金,在这项重要工作的完成中,自然语言计算组的实习生卢帅、郭达雅、任烁和黄俊杰是四位重要的淘金者。对于他们个人而言,参与这场跨国、跨部门、跨团队的科研项目合作,也为他们带来了属于自己科研之路上的重大突破。让我们一起来看看,他们是如何在这场“淘金之旅”中锤炼自身并迅速成长的吧~

 

卢帅、郭达雅、任烁和黄俊杰

在不久前举办的 Family Fest 上合影

创建代码智能多任务数据集  全面提升科研与动手能力

代码智能的目的是让计算机具备理解和生成代码的能力,并利用编程语言知识和上下文进行推理,支持代码检索、补全、翻译、纠错、问答等场景。近年来,统计机器学习算法,尤其是深度学习算法在很多代码智能任务上都取得了不错的进展,但是,代码智能领域仍缺少一个能覆盖多种任务的基准数据。

CodeXGLUE 正是填补了此方面的空白,它的出现将帮助代码智能领域的研究者从不同角度衡量模型的优劣,从而推动该领域的发展。该领域一旦有突破,将大幅度推动 AI 在软件开发场景的落地。

“目前有些数据集并不符合真实场景的需求,所以我们也做了一些改善,使其不仅能够促进该领域的研究,也能在真实的生产场景中得到应用。”来自中山大学的实习生郭达雅这样介绍项目的价值,“我们任务是在代码智能领域建立一个类似 ImageNet、GLUE 的基准数据集,尽可能地提高代码智能的效率。”

CodeXGLUE 覆盖了 code-code、code-text、text- v code、text-text  四个类别,包含 10 个任务及 14 个数据集。郭达雅负责其中与理解相关的任务,包括代码克隆检测、代码缺陷检测、代码注释生成与代码检索。

“收集并改善适用于真实场景的数据集,是一个痛苦和反复的过程。”郭达雅说,这场在数据中构建基础体系的过程像是沙里淘金,也像是孕育珍珠。

除了 CodeXGLUE 项目将对代码智能领域发展产生的影响力,参与这样一个覆盖了多项领域内核心任务的工作,也帮助郭达雅厘清了自己在博士学习阶段科研的主线。“在此之前,我做的项目都是很零散的,但是做完这个项目之后,我的东西都很连贯了。”

郭达雅

对于北京航空航天大学的实习生任烁而言,参与 CodeXGLUE 项目也对他意义重大。“虽然说我当时都马上要博士毕业了,但真的是第一次做这种基准数据的项目。”任烁说,通过参与这个项目,他完整地了解了做一个基准数据集的流程,从前期数据准备、任务选择,到模型搭建、得出结果、任务发布等。“更多地,我学习到了站在微软公司的角度,需要考虑一些什么样的问题,这些方面都是之前单独写 paper 做科研无法了解到的。”

 

跨国、跨部门、跨团队  全方位合作中迅速成长

在 CodeXGlue 项目中,团队合作是最为重要的关键词之一。本项目由微软亚洲研究院自然语言计算组与微软 Visual Studio 部门和必应搜索部门合作完成,微软亚洲研究院的团队充分发挥其在自然语言处理基础科研方面的优势,Visual Studio 和必应搜索团队则提供了更多软件工程的视角。双方优势互补,推动项目有序进展。

对实习生而言,这段独特的合作体验让他们收获颇丰。“他们(微软在美国的产品部门)对于代码质量和代码管理很重视。”北京大学的实习生卢帅说。在实验室或研究型机构,论文产出常常是受到更多重视的,对于代码管理的重视则相对较少。通过本次合作,卢帅意识到代码规范对于要发布的开源数据库极其重要,也感受到它为团队合作带来的巨大增益。

微软全球产品部门的代码管理基于可复用和易协作的理念,“他们对于整个代码块的管理非常严格,每一个函数、每一个类具体实现了什么功能,都要写很长的文档,一是为了这次合作中,我这边写完他那边能看懂,二是为了这次合作结束之后,接下来要用这份代码的人能够很快上手。”卢帅介绍,“同时,处理一份数据的代码也不是一次性的,之后还可以把中间的部分抽离出来,下一次单独用于处理别的数据。”

“参与这次‘声势浩大’的跨国、跨部门、跨团队的合作,也让我更好地明晰了自己在团队工作中的作用,找到了发挥自身优势的工作方法。” 这是卢帅的另一大收获。

在本项目中,卢帅主要负责代码补全与代码生成两项任务。与其他实习生不同,卢帅坦言自己“并不是做纯 NLP 出身”,之前做的工作更多与软件工程相关。但这也恰好是团队所急需的重要角色,“自然语言处理和软件工程用的技术和模型是可以通用的,但涉及到分析每个语言里的特殊结构时,会需要用到特定领域的知识。”卢帅说。“软件工程我不懂的会问卢帅,卢帅在 NLP 这边遇到技术问题,就会和我们沟通,我们两个优势互补、配合默契。”郭达雅补充。

 

卢帅

任烁则在项目中充分发挥了他在机器翻译方面的经验。他主要负责代码翻译和代码纠错两项任务,“我们组之前是做机器翻译的,代码翻译虽然跟机器翻译有一些区别,但用的框架基本上还是一致的。”任烁说,“同时,代码纠错与机器翻译中 sequence-sequence 的任务也是非常相似的。”

CodeXGlue 项目中最年轻的实习生、来自北京航空航天大学的黄俊杰也在其中充分施展能力。他主要负责代码检索中的部分工作,成果还受到了微软(亚洲)互联网工程院的关注,“工程院那边可能也会把这部分代码应用到微软的 Bing 搜索中,” 黄俊杰介绍。同时,他还负责基准数据集网站的整体搭建。在网站发布时间特别紧的情况下,他仍高效、优质地完成了工作,让大家都非常惊喜。“前端的一些东西是非常细致琐碎的,在这个过程中也非常磨我的性子,练我的耐心。”黄俊杰说。

 

黄俊杰

亦师亦友  mentor 指明前进方向

抛去指令式的单向要求,在 MSRA,mentor 与实习生之间,更多的是亦师亦友的关系——实习生在科研中有着强烈的自我驱动力和自我管理能力,mentor 则为他们的学术之路指明方向、保驾护航。回顾起在 MSRA 实习的这段经历,每一位实习生都有很多感受想要表达。

在任烁眼中,mentor 不仅是自己学术上的偶像,也是生活中的榜样。“我的 mentor 曾经是微软的联培博士,对我们联培生的培养过程、心路历程都非常了解。”任烁说,“他会针对各个科研阶段的需求为我们制定计划。通过他的指导,我了解到打好数学底子是非常重要的,除了科研,我的工程能力也在不断提升。此外,他对于整个领域深厚的了解和为人处世的礼节,都在潜移默化地影响着我。”

“做一个 benchmark 的项目是非常困难的,从整合数据集到挑选任务、选取 baseline,我们需要一个非常厉害的团队大脑。”卢帅认为,在这次开创性的项目中,mentor 起到了重要的引领作用。“我们当然会有一些自己的见解,但多数还都不太成熟,我们需要 mentor 进行最终的判断。他也能够发现我们每个人的优势,让我们去做自己最擅长的任务。”

“我的 mentor 有一套自己的方法,他能够更多地引导学生去思考问题并解决问题,在最关键的时候给予一些帮助,他特别强调作为博士生学习阶段科研项目连续性。”郭达雅说。

同“肝”共苦,结伴前行

在 MSRA,除了科研本身,身边的人常常告诉我们,一定要多多交朋友。除了 mentor 之外,能给到我们最大帮助的常常是身边的小伙伴。黄俊杰回忆起和小伙伴们的相处时谈到,“之前在论文分享会上和大家交流,一直都记得任烁清晰的报告,他流利的表达和严谨的态度,都让我觉得他是一个非常值得学习的伙伴。”

“我也始终记得一开始在用 sequence-sequence 框架时,我们每个人都有一套代码,为了后续的统一,大家就对比看哪个框架更好,达雅的框架就非常优秀,体量小又简洁,一点都不拖泥带水,让我对他的敬佩之情油然而生。” 任烁也毫不吝啬对小伙伴的夸奖。

虽然实习时长不一,四位同学都在 MSRA 完成了一段“很多希望被超额满足”的实习经历。卢帅说,“我计划在这里做一个喜欢的项目并做出成果,CodeXGlue 就实现了我的这个愿望。而 MSRA 在自然语言处理领域的深厚积淀和优越的资源支撑,也让我在学校里很多想要尝试却受软硬件设施限制的想法得到了实现。我不仅能够实现自己的想法,还发现原来自己能够不断尝试找到解决问题的方法,这都让我感受了极大的成就感。”

任烁作为联合培养的学生在 MSRA 度过多年时光,在与优秀人才并肩科研的过程中,他常常感受到“天外有天”,“有时候你的一个想法,苦于无人沟通的时候,这里的大牛伙伴会乐意和你一起互相讨论,帮你把想法更好地实施出来。“ 丹棱街 5 号有一种魔法,让每个在这里的年轻人被身边的人所激励,也不断激励身边的人。如果把微软亚洲研究院想象成一个容器,里面的每一个人都是一个独特的分子,在不断的碰撞与交流中创造出新的想法。任烁说。

 

任烁

这是一场从数据集中构建地基的淘金之旅,也是他们创造个人历史的一个小小见证。岁月会大浪淘沙,而他们在青春时期做出的开创性成就,将会永远闪耀。

 

标签