微软开源自动机器学习工具NNI安装与使用

发布时间:2018-12-29 11:51,

浏览次数:951

, 标签:

NNI

微软开源自动机器学习工具 – NNI安装与使用

在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了。对于初学者来说,常常是无从下手。即使是对于有经验的算法工程师和数据科学家,也是很难把握所有的规律,只能多次尝试,找到较好的超参组合。而自动机器学习这两年成为了热门领域,它将机器学习过程中包括自动特征提取、模型选择、参数调节等过程自动化地学习,使学习过程在给定数据和任务上学习和泛化能力非常强大。NNI

(Neural Network Intelligence)

是微软开源的自动机器学习工具包,与当前的各种自动机器学习服务或工具相比,有非常独特的价值。NNI着力解决超参调试过程的挑战,通过内置的超参选择算法、算力的强大支持和便捷的交互方式来加速和简化超参搜索的过程。更多详细内容和代码可以参考NNI的

github地址 。

本篇是NNI (Neural Network Intelligence) 系列文章的开篇,将首先介绍NNI

的特点和价值,然后用一个简单的mnist样例带您开启自动化机器学习之旅。后续系列文章还将从NNI的高效率——能够帮助节省时间和减少代码、NNI的分布式——支持OpenPAI等多端部署、NNI的可扩展性——支持多种tuner和assessor等特点介绍NNI。

NNI的众多特点

1. 安装简洁:通过pip命令就能完成安装;

2. 支持私有部署,用自己的计算资源就能进行自动机器学习;

3. 支持分布式调度:NNI 可以在单机上进行试验,还支持多种分布式调度平台,如通过 SSH 控制多台 GPU

服务器协同完成试验,或通过OpenPAI, Azure, Kubernetes等在独立的 Docker 中运行;

4. 对超参搜索的底层支持:大部分自动机器学习服务与工具的服务都是针对于图片分类等特定的任务。而NNI通过让用户提供训练代码和超参搜索范围,

依靠NNI内置算法和训练服务来搜索最佳的超参和神经架构,NNI为有一定模型训练经验的用户提供更加通用的调参方式,便于用户做出更多尝试、决策和加入思考,并完整参与整个训练过程;

5. 随库自带众多实例和流行的调参算法;

6. 架构简洁、对开发和扩展及其友好。

开启你的第一次NNI之旅

这部分将以识别手写字体mnist为例介绍NNI如何在本地机器使用注释方式定义搜索空间提交训练任务而提高效率,并介绍NNI的基础功能与使用。要通过NNI进行实验,用户只需要三步即可完成实验准备,

(1)定义搜索空间(search space); (2)上传代码(codes); (3)定义实验

,用户可以使用一行命令行即可开始实验,并可使用webUI在网页端实时查看实验进程和结果。

读完这部分,你将了解如何编写配置文件和通过注释形式定义搜索空间,你将了解如何使用NNI在本地机器上提交任务,并了解如何通过webUI清晰地检查实验结果和超参数的使用对结果的影响。nni提供的mnist代码示例文件已开源至github,克隆后可在目录~/nni/examples/mnist中查看,此外本例依赖tensorflow框架,还需要使用pip安装tensorflow。

$ git clone https://github.com/Microsoft/nni.git $ python3 -m pip install

tensorflow

· 安装

介绍例子之前首先安装NNI,NNI提供简单快速的源码编译或pip安装方式,NNI目前支持在ubuntu 16.04及更高版本和Mac

OS系统上进行安装,用户需要环境中安装有python高于3.5的版本,本例在ubuntu16.04系统上通过一行pip命令安装 :

$ python3 -m pip install --user --upgrade nni

· 三步准备实验

用户只需要三步即可完成实验准备,(1)定义搜索空间(search space);(2)上传代码(codes);(3)定义实验(experiment) 。

代码结构非常简单,其中文件search_space.json代表定义搜索空间,代码mnist.py代表上传代码,配置文件config.yml代码定义实验,可在~/nni/example/trials/mnist目录中看到目录结构。

(1) 准备搜索空间

首先使用json文件定义超参数的搜索空间,搜索空间包括搜索的变量名、搜索的类型和搜索的值范围。此例定义了网络的卷积层尺寸(conv_size)在(2,3,5,7)的范围中搜索,隐藏层的尺寸(hidden_size)在(124,512,1024)的范围搜索,学习率(learning_rate)在(0.0001,0.1)的范围搜索等等。

(2) 准备实验代码

在实验代码中引入nni包,并以几行代码加入nni的参数传递和结果回传即可将nni与实验代码结合起来。

(3)定义实验配置

通过yaml配置文件来定义实验,

配置文件中包含实验的基础信息、训练平台的选择、搜索空间的使用注释选择、协调器的选择和训练任务的配置等。此处定义方式是:在本地训练任务、使用注释方式定义搜索空间、使用TPE算法,

其内容基本如下所示:

· 一行命令开始训练

完成以上三步(定义搜索空间、上传代码、定义实验)后,你已经有配置文件、搜索空间和训练代码,配置文件的训练任务配置中连接了定义主代码的路径和执行命令、定义搜索空间定义方式及位置。此时,只需要一句命令即可提交任务。

$ nnictl create --config ~/nni/examples/trials/mnist-annotation/config.yml

· webUI查看结果

提交训练任务之后终端会返回提交任务的索引ID及webUI的网址,在浏览器中打开url地址即可得到NNI解析出的实验信息及实验实时结果。

首页可以所有训练信息和具体的超参组合,并支持对回传结果排序。

优化进度页面可以看到按时序排列的精度或损失值(此图为精度)。可以看到,时间越靠后(右侧),精度高的越多,这说明选择的超参探索算法随着时间能找到一些好的超参空间继续探索。

通过超参的分布图来直观地看到哪些超参值会明显比较好,或者看出它们之间的关联。通过下面的颜色图就能直观地看到红色(即精度较高的超参组合)线条所表达的丰富信息。如:卷积核大一些会表现较好;学习率小一些,表现基本都不错;Batch_size较大时变现更好等等。

第一次NNI之旅的体验如何?本文通过阐述NNI

的特点、后续的安装和如何使用简单例程动手实践对NNI做了一个简单的介绍,但NNI的功能不止于此,它的多平台支持、多种配置方式、分布式调度模式、多种算法支持还等待你来发现和发掘,甚至你也可以作为NNI代码的贡献者来自己定义需求。

扩展阅读

· 基础定义

1.如何在你的机器上安装nni?

2.如何使用nnictl工具命令?

3.如何使用web UI?

4.如何定义搜索空间?

5.如何配置定义实验?

6.如何使用注释定义搜索空间?

7.如何写训练实验?

· 扩展训练

1.如何在本地训练任务?

2.如何在多个机器上训练任务?

3.如何在OpenPAI上训练任务?

4.如何在远程服务器训练任务?

5.尝试更多不同的tuners和assessors

6.自己定义一个tuner

7.自己定义一个assessor

· 更多

1.如何创建NNI环境?

2.如何贡献代码?

3.如何debug?

微软nni_微软开源自动机器学习工具NNI安装与使用相关推荐

  1. 微软开源自动机器学习工具 – NNI安装与使用

    微软开源自动机器学习工具 – NNI安装与使用 NNI的众多特点 开启你的第一次NNI之旅 · 安装 · 三步准备实验 (1) 准备搜索空间 (2) 准备实验代码 (3)定义实验配置 · 一行命令开始 ...

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

    作者 | 宋驰 来源 | 微软研究院AI头条(ID: MSRAsia) 2018年9月,微软亚洲研究院发布了第一版 NNI (Neural Network Intelligence) ,目前已在 Gi ...

  3. 微软自动调参工具—NNI安装与快速上手,AutoML必备工具

    文章目录 概述 直观的看看里面有什么 安装方法 NNI 快速入门与超参优化 设置超参数的搜索范围 配置config.yaml 听说点进蝈仔帖子的都喜欢点赞加关注~~ 老规矩官网送上: https:// ...

  4. 大数据早报:微软宣布推出新Azure机器学习工具 这个机器人可以像人类一样自然地行走(9.27)

    数据早知道,上36dsj看早报! 来源36大数据,作者:奥兰多 『微软』微软宣布推出新Azure机器学习工具,帮开发人员打造AI应用 微软想为AI开发工具包加入新的Azure机器学习工具. 25日,一 ...

  5. 微软亚洲研究院开源分布式机器学习工具包

    微软亚洲研究院开源分布式机器学习工具包 为了满足研究人员和开发者日益增长的各种需求,微软亚洲研究院于日前将分布式机器学习工具包(DMTK)通过Github开源.DMTK由一个服务于分布式机器学习的框架 ...

  6. AI之AutoML:Ludwig(无需编写代码/易于使用的界面和可视化自动机器学习工具)的简介、安装、使用方法之详细攻略

    AI之AutoML:Ludwig(无需编写代码/易于使用的界面和可视化自动机器学习工具)的简介.安装.使用方法之详细攻略 目录 Ludwig的简介 Ludwig(无需编写代码/易于使用的界面和可视化自 ...

  7. 微软自动调参工具—NNI—安装与使用教程(附错误解决)

    简介 NNI是微软的开源自动调参的工具.人工调参实在是太麻烦了,最近试了下水,感觉还不错,能在帮你调参的同时,把可视化的工作一起给做了,简单明了.然后感觉很多博客写的并不是很明白,所以打算自己补充一下 ...

  8. 蚂蚁金服开源的机器学习工具 SQLFlow,有何特别之处?

    近日,蚂蚁金服副 CTO 胡喜正式宣布开源机器学习工具 SQLFlow,他在大会演讲中表示:"未来三年,AI 能力会成为每一位技术人员的基本能力.我们希望通过开源 SQLFlow,降低人工智 ...

  9. 开源自动机器学习(AutoML)框架盘点

    开发十年,就只剩下这套Java开发体系了 >>>    自从Google推出了能自动设计神经网络自我进化的AutoML论文后,我便开始持续关注这个领域 到目前为止,从网上显示的信息来 ...

最新文章

  1. Win11让AMD很受伤:CPU游戏性能下降15%,官方建议暂时别升级
  2. Java说明注释(Doc注释)
  3. php数据库录入和输出,PHP数据库之CURD操作
  4. python pip国内源_Python 修改pip源为国内源
  5. WEB API系列(一):WEB API的适用场景、第一个实例
  6. python 百度ocr识别_Python使用百度Ocr识别文字保存CSV
  7. win7设置默认浏览器
  8. 在SQL Server中使用SQL Coalesce函数
  9. 如何让网页中文本框的内容只能读不能写
  10. Windwos8.1下配置PHP环境
  11. ZTEBA601.android5.1,中兴Blade A601线刷刷机教程_中兴BA601线刷包_救砖刷机包
  12. android 计步器acc,基于加速度的门限检测计步算法设计
  13. PMP课程笔记:第6章 项目进度管理
  14. OpenCV开发笔记(六十一):红胖子8分钟带你深入了解Shi-Tomasi角点检测(图文并茂+浅显易懂+程序源码)
  15. java多线程并发基础汇总一
  16. UVALive - 7456 Least Crucial Node ( dfs + set )
  17. linux批量筛选序列变异位点,找变异流程之snp_call –WES学习之路
  18. 面板显示技术:LCD与OLED
  19. 热门Epub阅读器介绍
  20. layui数据表格接口_layui数据表格实现重载数据表格功能(搜索功能)

热门文章

  1. 菏泽学院春季高考计算机投档饯,2018山东春季高考本科普通批一志愿院校投档情况统计表...
  2. linux执行ksh文件,linux – shell脚本(KSH)将文件设置为param并在param和string之间执行测试...
  3. 使用SVM预测大盘涨跌的简单策略
  4. C语言:控制台字符无法正常输入的另一种解决办法
  5. java unchecked 警告_警告: [unchecked] 未经检查的转换
  6. java小数计算器,java计算器.
  7. 【eMMC】简介与协议浅析
  8. 全国计算机等级考试c语言模拟试题,全国计算机等级考试二级C语言笔试模拟试题-..doc...
  9. 用计算机写作信息技术集体备课,信息技术集体备课教案
  10. 微信小程序官方示例 Demo 代码