上新了,NNI!微软开源自动机器学习工具NNI概览及新功能详解
作者头像
  • 兴业计算机团队
  • 2019-12-26 20:17:49 4

2018年9月,微软亚洲研究院推出了NNI(Neural Network Intelligence),目前该项目在GitHub上已获得超过3800颗星,成为了最受欢迎的自动机器学习(AutoML)开源项目之一。

NNI是一款专门为研究人员和算法工程师设计的自动机器学习工具和框架。自发布以来,它在过去的一年中经历了多次迭代更新,推出了稳定API的1.0版本,并持续引入最新的算法,增强了对各种分布式训练环境的支持。

最新版本的NNI全面支持机器学习生命周期的各个环节,包括特征工程、神经网络架构搜索(NAS)、超参数优化和模型压缩等。无论是初学者还是经验丰富的专家,NNI都能提供有效的帮助。本文将详细介绍NNI最新版本的各项功能,帮助大家更好地理解和使用这一简单易用的自动机器学习工具。

概述

自动机器学习是一个热门的研究和应用领域,市场上出现了许多自动机器学习工具,但每种工具有其独特的优势和局限性。有的工具专注于算法,但不支持分布式训练;有的功能强大,但缺乏友好的用户界面,增加了学习难度;还有一些工具只适用于特定领域,缺乏通用性;有些则只能在云端运行。

微软的自动深度学习工具NNI具有以下显著优势:

  • 支持多种框架:提供了基于Python的SDK,支持PyTorch、TensorFlow、scikit-learn、LightGBM等主流框架和库;
  • 支持多种训练平台:除了本地运行外,还可以通过SSH调度GPU服务器,或者通过FrameworkController、KubeFlow、OpenPAI等在Kubernetes下调度大规模集群;
  • 支持机器学习生命周期中的多环节:从特征工程到神经网络架构搜索(NAS),再到超参数优化和模型压缩等;
  • 提供易用的命令行工具和友好的WEB用户界面
  • 大量的示例帮助用户快速上手;
  • 所有文档都有中文版

完整中文文档请参考:https://aka.ms/nnizh

NNI入门与超参数优化

近年来,机器学习和人工智能已经发展出了许多经典的算法和深度学习网络,这些算法在不同数据集上的超参数需求各不相同。自动机器学习中的超参数优化正是为了解决这个问题,通过启动多个实例来寻找最优参数组合。

NNI的超参数优化功能正是为此设计。在超参数搜索算法方面,NNI不仅提供了TPE、SMAC、进化算法等优秀算法,还提供了遍历、批处理、随机、Hyperband等多种算法。此外,NNI还支持自动终止低效实例,加快学习过程。

安装NNI只需一行命令:“pip install nni”。使用NNI也非常简单:首先定义需要搜索的超参数范围;然后在训练前通过NNI的接口读取参数并将准确度等指标传递给NNI;最后配置调参算法即可开始优化。

详细步骤可参考入门教程:https://aka.ms/nnizq

你也可以在这里找到所有示例:https://aka.ms/nnize

NNI的超参数优化不仅可以应用于机器学习,也可以用于各种系统的复杂参数优化。使用方法与超参数优化类似,通过Python传入不同的参数配置,再将优化目标(如读写速度、磁盘空间大小等)返回给NNI即可。

更多信息请访问:https://aka.ms/nnizrd

自动特征工程

特征工程是应用经典机器学习算法的关键步骤,良好的特征工程可以显著提升机器学习的效果。NNI的超参数优化功能可以直接应用于特征增强和自动特征选择等特征工程的各个子领域。为了方便新手入门,NNI内置了基于梯度和决策树的自动特征选择算法,并提供了扩展其他算法的接口。

NNI团队还对比了自动特征工程的效果,在流行的colon-cancer、gisette、rcv1、news20.binary、real-sim等数据集上进行了测试。结果表明,决策树在选择少量特征时表现良好,而选择更多特征时效果更佳。

更多信息请访问:https://aka.ms/nnizfe

神经网络架构搜索(NAS)

神经网络架构搜索(NAS)是一种通过自动搜索网络结构来获得更好性能的技术。NAS算法种类繁多,实现方式各异。

为了推动NAS的发展,NNI对NAS算法进行了抽象和实现,使得用户不仅可以在自己的数据集上直接使用算法,还能轻松比较不同NAS算法的效果。NNI实现了ENAS、DARTS、P-DARTS等算法,并提供了one-shot算法的接口。此外,还支持了网络形态(Network Morphism)这种经典的搜索方法。

算法介绍及使用方法:https://aka.ms/nnizn

模型压缩

随着深度学习的发展,模型变得越来越庞大。虽然模型精度大幅提升,但过大的模型尺寸不仅影响推理速度,还提高了部署的硬件要求。因此,模型压缩成为一个热门话题。

模型压缩主要分为两类算法:一类是剪枝算法,用于压缩网络结构;另一类是量化算法,用于减小模型精度。NNI目前提供了AGP、L1Filter、Slim、Lottery Ticket、FPGM、QAT、DoReFa等九种模型压缩算法。用户可以根据需要,通过NNI的模型压缩接口实现自己的压缩算法。

相关算法介绍及使用方法:https://aka.ms/nnizc

结语

随着人工智能技术的不断发展,理论和建模方法也在不断进步。作为一款面向研究和应用前沿的工具,我们希望NNI能够成为每位研究人员和算法工程师的最佳助手,加速人工智能领域的进步和发展。

2020年,我们将继续努力创新,力争为NNI提供全生命周期的自动化框架、更丰富的算法和更高效的分布式调参能力,进一步提升其易用性和用户体验。

作为一个开源项目,我们期待大家为NNI贡献新算法、新功能和示例,也欢迎大家提出建议和报告问题,共同打造更好的工具。如果您有任何反馈或建议,请在GitHub社区中告知我们。

NNI的GitHub社区:https://aka.ms/nniis

扫描下方二维码或点击阅读原文,访问NNI的中文文档。 https://aka.ms/nnizh

    本文来源:图灵汇
责任编辑: : 兴业计算机团队
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
微软概览开源新功能详解NNI机器自动工具学习
    下一篇