24

上新了,NNI!微软开源自动机器学习工具NNI概览及新功能详解

 4 years ago
source link: https://flashgene.com/archives/86818.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

2018年9月,微软亚洲研究院发布了第一版 NNI (Neural Network Intelligence) ,目前已在 GitHub 上获得 3.8K 星,成为最热门的自动机器学习(AutoML)开源项目之一。

作为为研究人员和算法工程师量身定制的自动机器学习工具和框架,NNI 在过去一年中不断迭代更新,我们发布了稳定 API 的 1.0 版本,并且不断将最前沿的算法加入其中,加强对各种分布式训练环境的支持。

最新版本的 NNI 对机器学习生命周期的各个环节做了更加全面的支持, 包括特征工程、神经网络架构搜索(NAS)、超参调优和模型压缩在内的步骤,你都能使用自动机器学习算法来完成 。

无论你是刚刚入门机器学习的小白,还是身经百战的“调参大法师”,NNI 都能助你一臂之力。在这篇文章中,我们会全方位解读 NNI 最新版本中的各项功能,让大家了解这个简单易用的自动机器学习工具。

MreEv2F.png!web

概述

自动机器学习是近年来火热的应用和研究方向,各种自动机器学习工具也层出不穷,它们各有优点与局限性。有的聚焦于算法,但不支持分布式训练;有的功能强大,但没有易用的用户界面,学习成本较高;有的只支持特定领域,不提供通用功能;还有的只能在云端使用。

微软自动深度学习工具 NNI 具备以下优势:

• 支持多种框架 :提供基于 Python 的 SDK,支持 PyTorch、TensorFlow、scikit-learn、LightGBM 等主流框架和库;

• 支持多种训练平台 :除在本机直接运行外,还能通过 SSH调度一组 GPU 服务器,或通过 FrameworkController、KubeFlow、OpenPAI 等在 Kubernetes 下调度大规模集群;

• 支持机器学习生命周期中的多环节 :特征工程、神经网络架构搜索(NAS)、超参调优和模型压缩等;

•提供易用的命令行工具和友好的 WEB 用户界面;

• 大量的示例 能帮助你很快上手;

•    最后划重点, NNI的所有文档都有中文版 !

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

vim6Vvr.png!web

自动机器学习工具对比

NNI 入门与超参优化

机器学习和人工智能通过近些年的厚积薄发,已经形成不少经典的机器学习算法和深度学习网络,这些算法各有特点,在不同的数据集上所需要的超参也有所不同。而自动机器学习中的超参优化就是为了解决这个问题,通过启动多个实例来找到调优结果较好的组合。

NNI 的超参调优功能就是为这样的场景准备的。在超参搜索算法上,NNI 不仅提供了 TPE、SMAC、进化算法等优秀算法,还提供了遍历、批处理、随机、Hyperband 等十多种算法。另外,还支持自动终止低效实例,加速学习过程。

NNI 的安装基于 Python pip 命令,“pip install nni”即可一步完成。

NNI 的使用也非常简单:首先,定义好需要搜索的超参空间;然后,在需要调参的网络启动之前,通过 NNI 的接口读取参数并在训练中将精确度等指标传入 NNI;最后,配置好要使用的调参算法等,即可开始。

具体过程可参考入门教程:https://aka.ms/nnizq

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

rqiyQfa.png!web

一图了解 NNI 使用

NNI 的超参调优不仅能用于机器学习,对于各类系统、数据库的繁杂参数都可以根据实际场景进行有针对性的调优。使用过程和超参调优非常类似,通过 Python 为系统传入不同的参数配置,然后将确定的调优指标(如读写速度,磁盘空间大小等)回调给 NNI 即可。

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

vIvYnuB.png!web

NNI 在运行中,可随时通过界面了解进度

Jf6ryyv.png!web

分析超参之间的关联关系,快速发现规律

自动特征工程

特征工程是应用经典机器学习算法的前置步骤,通过特征工程,能让机器学习过程更快得到较好的结果。

前面介绍的 NNI 的超参调优功能,可直接应用于特征增强、自动特征选择等特征工程中的各个子领域。为使新手轻松上手,NNI 还内置了基于梯度和决策树的自动特征选择算法,同时还提供了扩展其它算法的接口。

NNI 团队还对自动特征工程的效果进行了对比,在流行的 colon-cancer、gisette、rcv1、neews20.binary、real-sim 等数据集上进行了测试。我们发现如果在成千上万个特征中仅选择前20个,决策树基本都能取得较好的结果,如果选出更多特征,会得到更好的效果。

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

神经网络结构搜索(NAS)

神经网络搜索(Neural Architecture Search,简称 NAS)通过自动搜索网络结构来获得较好的性能,在今年涌现了大量研究成果。NAS 算法多种多样,实现也各不相同。

为了促进 NAS 的创新,我们对 NAS 算法抽象与实现进行了探索,让用户不仅能在自己的数据集上直接应用算法,还能很容易地横向比较不同 NAS 算法的效果。

NNI 中实现了 ENAS、DARTS、P-DARTS 算法,并提供了 one-shot 算法的接口。另外,还支持了网络模态(Network Morphism)这样的经典搜索方法。

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

模型压缩

随着深度学习的发展,模型也越来越大。虽然精确度有了很大的提升,但较大的模型尺寸不仅会影响推理速度,还对部署的硬件要求较高。因此,模型压缩也是一个热门话题。

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

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

结语

随着人工智能的发展,理论和建模方法也始终在不断演进。立足于研究与应用的最前线,我们希望将最好用的工具提供给每一位研究员和算法工程师,加速人工智能领域的发展进步。

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

作为一个开源项目,我们期待大家为 NNI 添加新算法、功能、示例,也希望大家为 NNI 提出建议、报告问题,让我们为大家提供更好的工具,如果您有任何反馈与建议,欢迎在 GitHub 社区中告知我们。

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK