编者按:微软亚洲研究院自动机器学习(AutoML)工具 NNI 自发布以来好评如潮,全新升级的2.0版本也备受关注。它的成功是跨领域、跨 Lab、开源社区内外通力合作的成果。本文将带领大家了解 NNI 背后的故事,讲述 NNI 是如何做到开源合作与跨界创新的。
2020年,经历了9个小版本的迭代与优化,微软亚洲研究院研发的自动机器学习(AutoML)工具 NNI(Neural Network Intelligence)现已全新升级至2.0版本,并在 GitHub 上收获了 8.7K 星,受到了 GitHub 社区和业内人士的广泛关注与喜爱。有用户感叹,开源的 NNI 平台简直就是教科书级的 AutoML 工具,更有人将 NNI 项目制作成课程,方便更多人学习和使用。
到底什么叫做 AutoML 工具,其实在业内还没有一个确切的定义,似乎只要能够将机器学习的某个环节自动化的工具,就都可以称之为 AutoML 工具。相比于其他在特定领域提供较单一功能的自动机器学习工具,NNI 给研究人员和算法工程师量身定制了一个更通用、更全面的自动机器学习工具集,可覆盖机器学习的全生命周期。此次 NNI 2.0 更是在机器学习模型开发和部署的每个环节都有新的突破和进展。
NNI:系统研究的最佳实践之一,前沿成果让平台永葆“鲜活”
在近两年的时间里,微软亚洲研究院根据开源社区以及各方使用者的体验反馈,从赋能超参调优(Hyperparameter Optimization)、神经网络架构搜索(Neural Architecture Search)、特征工程(Feature Engineering)和模型压缩(Model Compression)等多个方面持续改进 NNI。
从1.0版本到2.0版本,NNI 不断迭代和优化,微软亚洲研究院首席研究产品主管李东兵表示,“这是一个持续演进的过程,自动机器学习的一些环节目前还处于发展阶段,我们也是一边开发一边摸索,希望可以不断地为研究人员和算法工程师提供好用、易用、更具扩展性的工具,同时从系统架构设计层面给以强有力的保障。”
作为一个实用的工具平台,NNI 可以认为是系统研究的一个实践——研究员们将平时积累的系统研究方法论融入其中,并持续注入微软亚洲研究院多个领域最新的前沿研究成果,让 NNI 平台永葆“鲜活”。但与科研人员日常为验证研究成果所进行的系统演示不同,NNI 团队还需要扎实的编码和工程功底,才能为用户提供一个功能及使用体验都成熟且易用的工具平台。
“好用”是初心,NAS“精华”来自不同研究组的碰撞
NNI 2.0 的 NAS 算法中融入的两项最新突破,分别是来自微软亚洲研究院系统与网络组的“支持探索性训练的新型深度学习框架 Retiarii”,和多媒体搜索与挖掘组的“基于优先路径蒸馏的网络结构搜索算法”,即 Cream 算法。
Retiarii 的主要作用是让用户可以根据自己的需求和场景定制化搜索空间,这打破了 NNI 1.0 中只支持固定节点神经网络结构搜索的限制。Retiarii 是古罗马角斗士的一种,译为“网斗士”,其身手敏捷且擅长用网。顾名思义,Retiarii 框架创新性地将神经网络的开发看成一系列网络模型的“变形“(Mutation),这一系列变形组成了在一个网络空间(Model Space)内的搜索过程,根据不同的搜索策略,Retiarii 可以和少数几个变形器组合起来,实现多达27种神经网络结构搜索方案。
Retiarii 的跨网络优化器,还可以自动发现探索性训练期间各个网络之间的相似性,利用相似性实现8.58倍的神经网络搜索加速。比如,之前用户搜索出10个神经网络,只有在其上逐一运行才能找出最优级的那一个,现在基于 Retiarii,NNI 2.0 可以识别出10个网络空间节点中相同的节点,计算时不会重复,只计算一次即可,从而能够加速找到最适合用户需求的神经网络。关于 Retiarii 的论文已经被 OSDI 2020 收录。
参与 Retiarii 研究的微软亚洲研究院系统与网络组主管研究员张权路表示,“NNI 2.0集成了目前业内各大经典 NAS 算法,每一种算法都有各自的特点。而为了兼容多个算法,NNI 的模块化由多个小模块组成,就像搭积木一样。除了 GitHub 社区有不少用户非常认可 NNI,微软亚洲研究院多媒体搜索与挖掘组也是 NNI 的用户,他们不仅使用 NNI,而且还在 NNI 上贡献了他们的最新 NAS 算法——Cream,如今该算法又在 NNI 平台实现了它的创新。”
Cream 的特别之处在于,它集 NNI 平台上其他 NAS 算法之长,搜索并融合平台上的所有神经网络,通过竞争机制筛选出性能更好、计算量更小的神经网络架构。同时,Cream 能够让初步筛选出来的神经网络架构相互借鉴、学习,最终遴选出最优、最适合的计算机视觉神经网络。
Cream 与 NNI 共生共长的状态是一个研究与实践的良好循环,微软亚洲研究院多媒体搜索与挖掘组研究员彭厚文表示,“在微软亚洲研究院开放、合作的研究环境中,我们有机会一起做出影响力更大的研究。当我们发现 NNI 有任何功能模块的不足时,就会在第一时间与 NNI 团队的成员进行探讨,通过‘反馈-探讨-优化-反馈’的循环往复过程,助力 NNI 的不断进化迭代。而我们自己在 NAS 方面的科研创新,也恰恰来源于 NNI 平台,我们也将创新成果发表在了 NeurIPS 2020 上,与更多学术界同仁分享。”
此外,随着机器学习模型的广泛应用,不少模型开始向移动端或边缘设备迁移,因此模型的容量不能过大,模型压缩也已成为刚需。NNI 2.0 通过“剪枝和量化”给用户提供了两种更高效、更自动化的模型压缩方法。
“虽然模型压缩的自动剪枝功能不是颠覆性的创新,但我们任何一个功能的改进,都是基于‘让 NNI 更好用’这个最原始的初心。NNI 平台是一个实用型的工具,好用是最大的前提条件,所以 NNI 平台不仅重视 Retiarii、Cream 这类研究突破,在功能、编码等工程层面的精雕细琢,也是我们一贯的坚持,”李东兵表示。
跨领域、跨Lab、开源社区内外通力合作
在 NNI 2.0 的研发过程中,有一位特殊的研究工程师——张羽戈,他也是 NNI 平台的编码“担当”。2019年7月,张羽戈开始在位于北京的微软亚洲研究院实习,并参与了 NNI 项目。2020年,他正式加入微软亚洲研究院(上海),开启了与北京团队的远程协作。虽然分属两地,但张羽戈表示,远程协作丝毫没有影响项目进展的速度,回北京出差的聚餐反而让他倍感亲切。
张羽戈不仅参与了 Retiarii 的研究,还承担了大部分的 NAS 代码实现工作,与彭厚文的团队直接对接。他表示,“与多媒体搜索与挖掘组的合作,让我对前沿 NAS 算法的认识更加深入。由于 NNI 本质上是一个系统工程项目,因此对系统架构以及代码的质量和标准化要求都非常高。我也感受到了系统与网络组同事们在系统研究和系统工程上的细致和严谨。这样的项目经历,让我从研究和工程两个方面都受益良多。”彭厚文也笑称,跟随着 NNI 的开发步伐,多媒体搜索与挖掘组的编码水准也得到了进一步提升。
跨领域、跨 Lab、跨部门、开源社区内外的通力合作,在包括 NNI 在内的微软项目中还有很多很多。正是这种跨“圈”的合作,让 NNI 2.0 持续进化。作为一个开源、开放的平台,NNI 对于各方研究成果、工程经验的兼容并蓄,是它得以茁壮成长的精髓所在。