当前位置: 首页 > 编程日记 > 正文

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

作者 | 宋驰

来源 | 微软研究院AI头条(ID: MSRAsia)

2018年9月,微软亚洲研究院发布了第一版 NNI (Neural Network Intelligence) ,目前已在 GitHub 上获得 3.8K 星,成为最热门的自动机器学习(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 用户界面

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

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

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

自动机器学习工具对比

NNI 入门与超参优化

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

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

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

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

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

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

一图了解 NNI 使用

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

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

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

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

自动特征工程

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

前面介绍的 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

NNI 的中文文档链接:https://aka.ms/nnizh

(*本文为AI科技大本营转载文章,转载请联系原作者)

精彩推荐

推荐阅读

  • 11年艺术学习“转投”数学,他出版首本TensorFlow中文教材,成为蚂蚁金服技术大军一员

  • 知识图谱,下一代数据中台的核心技术

  • 新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

  • 迁移学习前沿研究亟需新鲜血液,深度学习理论不能掉链子

  • 详解GPU技术关键参数和应用场景

  • 链版“微信”,27 岁身价达 2.5 亿美元

  • 你真的懂云计算吗?

  • 互联网诞生记

  • “区块链岛”女记者调挖矿事件时惨遭暗杀,时隔2年依旧无法沉冤昭雪……

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

10624 - Super Number

题目链接 题意:给出n到m的范围,求出一个数在前i位数组成的数字能被i整除。假设存在输出这个数,假设不存在。输出-1. 思路:回溯,每次放第i位,然后推断是否符合题意。这题踩着时间过去的2.6s(看了…

2008找回企业久违的网速

曾几何时,单位上网访访问页面也是忽忽的,等待10秒简直是不可忍受;曾几何时,公司网络下载是嗖嗖的,转眼已是2M开外;曾几何时,办公室上网看视频是杠杠的,那流畅那画面都快赶上电视直播…

发现一个windows7(32bit或64bit)DirectUI的bug

前段时间发现一个windows7的一个bug,不是什么严重的问题,我在此记录下。(转载请指明出于breaksoftware的csdn博客) 重现步骤如下: 0 在文件夹的“更改您的视图”中选择下图中用红色叉叉标记的项 1 新建一个文件夹名为“Cs" 2…

阿里达摩院2020趋势第一弹:感知智能的“天花板”和认知智能的“野望”

作者 | Just出品 | AI科技大本营(ID:rgznai100)“感知智能与认知智能是相辅相成的关系。认知智能需要感知系统来进行信号处理和概念识别,而感知系统也需要认知系统的反馈来决定如何进行更有效的提取和识别。”1月2日,阿里巴巴达摩…

Java 对synchronized的补充Lock锁

Java并发编程:Lock 从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock&#xff1…

有奖评选 | 2020年的AI技术公开课,你想听到哪些干货?

CSDN技术公开课有奖评选开始啦~~听过课的小伙伴们,哪位讲师的分享让你获益匪浅?记得给TA投票哦!投票后获取入群方式,参与抽奖,奖品很丰厚哦~~进入付费时代,如今我们看似只要招招手,一切知识随手…

一个分析“文件夹”选择框实现方法的过程

在软件开发中,我们如果存在“导入导出”的场景时,难免会用到“文件夹”选择框。之前一直没有太关注过这个的实现过程。最近在工作中遇到了一些问题,我做了一些研究。在此记录下研究的过程。(转载请指明出于breaksoftware的csdn博客…

Openssl req命令

一、简介 req指令用来创建和处理PKCS#10格式的证书 二、语法 openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-out filename] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-nodes] [-subject] [-passin arg] [-passout arg] [-key filename] [-key…

使用windbg抓取崩溃文件和分析的过程

在软件编程中,崩溃的场景比较常见的。且说微软技术再牛X,也是会出现崩溃的场景。网上有一段Win98当着比尔盖茨蓝屏的视频非常有意思。 (转载请指明出于breaksoftware的csdn博客)我们身边的很多软件都引入了dump生成和收集机制。但…

TF 2.1.0-rc2发布,2020年停止支持Python 2

作者 | 神经星星来源 | HyperAI超神经(ID:HyperAI)【导读】2020 年 1 月 1 日,Python 2 停止维护,正式退休。Python 3 全面登场的时刻,TensorFlow 也在悄悄改变。近日 TensorFlow 官方 GitHub 账号中,发布了…

重新认识笔记本锂电池的保养

重新认识笔记本锂电池的保养 对于笔记本电脑来说,电池可以说是一个比较重要的部件,它的效能直接关系到笔记本电脑在缺少电源的环境中的工作能力。而电池在笔记本电脑的众组件中又算是一个不折不扣的消耗品,因此涉及到笔记本电脑电池的保养和合…

nginx转发及后端服务器获取真实client的IP

针对nginx的模块介绍可以查阅wiki:http://wiki.nginx.org/Modules常用模块:HTTP CoreProxyRewriteUpstream 原理:squid,varnish以及nginx等,在做反向代理的时候,因为要代替客户端去访问服务器,所以&#xf…

AJAX的组成应用

表示层XHTMLCSS 动态显示和数据 DOM (文档对象模型)数据交互和操作 XML,XSLT 异步数据获取 XMLHttpRequest 绑定和处理数据 JavaScript XMLhttpRequest对象属性:Number readyState 4 表示完成Function onreadystatechange 回调函数string responseText XMLDocument responseXM…

打开,保存文件框的文本溢出排查

工作中遇到的这个问题还是很有意思的。其中嵌套了很多奇葩性的问题。 (转载请指明出于breaksoftware的csdn博客)我们来看下故事的发生过程,QA同学发现我们存在如下的bug 看到如此多的串,可以认为这个是典型的溢出问题。后来我咨询…

2020年,为什么说入坑AI是最好的时机?

2019年可以说是AI全面落地和商用的一年,产业智能化成为各个行业重点关注的发展方向,交通、工业、农业、医疗等主流行业无一例外。随着人工智能技术的进一步发展和落地,深度学习、数据挖掘、自动程序设计等领域也将在更多应用场景中得到实现。…

IIS 伪静态配置(安装ISAPI_Rewrite配置)

第一:首先到官方网站下载ISAPI_Rewrite 我的机子是32位的就下32位免费版的,链接地址如下: http://www.helicontech.com/download/isapi_rewrite/ISAPI_Rewrite3_0064_Lite.msi 可以选择不同版本:http://www.helicontech.com/downl…

Github标星24k,127篇经典论文下载,这份深度学习论文阅读路线图不容错过

作者 | Floodsung翻译 | 黄海广来源 | 机器学习初学者(ID:ai-start-com)【导读】如果你是深度学习领域的新手,那么你可能会遇到的第一个问题是“我应该从哪篇论文开始阅读?”本文就是一篇深度学习论文的阅读路线图!该…

c/c++面试

1. static在c,c中有什么不同点2. 堆和栈的区别3. 纯虚函数4. 指针和引用的区别5. 如果构造函数出错,如何处理?6. 对设计模式是否熟悉,用过哪些?7. c如何使用c中的函数,为什么?整理:1…

一种解决启动进程传递参数过长的方法

工作中,QA同学在测试我们程序的时候,发现在XP下,我们的A进程无法启动我们的B进程。而在Win7 64bit系统下功能正常。RD同学调试后,发现我们A进程中使用ShellExcute去启动了B进程(转载请指明出于breaksoftware的csdn博客…

Ubuntu“无法获得锁\加锁”解决方案

2019独角兽企业重金招聘Python工程师标准>>> 当你添加了源,更新源的时候,如果中途中断了更新,安装软件或者再次更新的时候就是出现如下提示, E: 无法获得锁 /var/lib/apt/lists/lock – open (11: 资源暂时不可用) E: …

一步一步学Silverlight 2系列(3):界面布局

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlig…

一种准标准CSV格式的介绍和分析以及解析算法

CSV是一种古老的数据传输格式,它的全称是Comma-Separated Values(逗号分隔值)。出生在那个标准缺失的蛮荒年代,CSV的标准一直(到2005年)是NULL——世间存在着N种CSV格式,它们自成体系&#xff0…

新战场路在何方——详解360金融数据中台之旅

作者 |360金融架构总监黄建庭出品 | AI科技大本营(ID:rgznai100)本文为CSDN即将推出的《新战场:决胜中台》专刊的第 4 篇文章。自阿里巴巴引入中台概念后,市场对中台的关注度持续“高烧”不退。作为企业的基础平台,数据…

oracle中的exists 和not exists 用法详解

有两个简单例子&#xff0c;以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.aT2.a) ; T1数据量小而T2数据量非常大时&#xff0c;T1<<T2 时&#xff0c;1) 的查询效率高。 2) select * from T1 where T1.a in (select…

现代内存编号解读(转)

现代SDRAM、DDR SDRAM、DDR2 SDRAM三种主流内存颗粒的编号一、DDR SDRAM&#xff1a;HYNIX DDR SDRAM颗粒编号&#xff1a;HY XX X XX XX X X X X X X X — XX X1 2 3 4 5 6 7 8 9 10 11 12 — 13 14整个DDR SDRAM颗粒的编号&#xff0c;一共是由14…

被追捧为“圣杯”的深度强化学习已走进死胡同

作者 | 朱仲光编译 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai1100&#xff09;【导读】近年来&#xff0c;深度强化学习成为一个被业界和学术界追捧的热门技术&#xff0c;社区甚至将它视为金光闪闪的通向 AGI 的圣杯&#xff0c;大多数人都看好它未来发展的巨大潜力。但…

一种清除windows通知区域“僵尸”图标的方案——问题分析

通知区域名称有趣的历史 假如说到windows通知区域&#xff0c;可能很多人还是不清楚它是什么。如果改称Tray区域&#xff0c;可能有人就懂了。如果再白话点&#xff0c;叫它“托盘”或者“系统托盘”&#xff0c;可能会有更多的人猜到它是windows什么部位。现在我们揭开…

Apache2.4+Tomcat7集群搭建

一、安装jdk、Tomcat、Apache1.安装jdk1.7cd /home/java/software #把软件下载到/home/java/software目录下&#xff0c;将应用安装到/home/java目录下。 wget http://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz tar -zxvf jdk-7u80-linux-x64.tar…

一种清除windows通知区域“僵尸”图标的方案——XP系统解决方案

XP下“僵尸”图标的解决方案 从《一种清除windows通知区域“僵尸”图标的方案——问题分析》&#xff08;以后简称《问题分析》&#xff09;一文中分析的通知区域结构可以看出&#xff0c;XP的通知区域结构是相对简单的。如果我们解决了XP下的问题&#xff0c;那么Win7上的问题…

《评人工智能如何走向新阶段》后记(再续12)

由AI科技大本营下载自视觉中国151. 新一代人工智能研究方向: &#xff08;1&#xff09;研究新一代人工智能基础理论&#xff08;机理、模型和算法&#xff09;&#xff1b;&#xff08;2&#xff09;研发面向需求的共性技术&#xff08;以神经网络和算法为核心、数据和硬件为基…