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

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

??在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了。对于初学者来说,常常是无从下手。即使是对于有经验的算法工程师和数据科学家,也是很难把握所有的规律,只能多次尝试,找到较好的超参组合。而自动机器学习这两年成为了热门领域,着力解决超参调试过程的挑战,通过超参选择算法和强大的算力来加速超参搜索的过程。NNI (Neural Network Intelligence) 是微软开源的自动机器学习工具包。与当前的各种自动机器学习服务或工具相比,有非常独特的价值。本文作为系列文章的开篇,将首先介绍NNI 的特点和价值,然后用一个简单的mnist样例带您开启自动化机器学习之旅。

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?

原文地址:https://www.cnblogs.com/ms-uap/p/10194758.html

时间: 2024-10-24 13:15:30

微软开源自动机器学习工具NNI安装与使用的相关文章

微软推 Azure 机器学习工具:Algorithm Cheat Sheet

微软推 Azure 机器学习工具:Algorithm Cheat Sheet [日期:2015-05-15] 来源:CSDN  作者:Linux [字体:大 中 小] Azure Machine Learning Studio 有着大量的机器学习算法,现在你可以使用它来构建预测分析解决方案.这些算法可用于一般的机器学习:回归分析.分类.聚类和异常检测,且每一个都可以解决不同类型的机器学习问题. 现在的问题是,是否有什么工具之类的东西可帮助找出如何选择一个合适的机器学习算法,并根据具体的方案? 点

开源ITIL管理工具--iTop 安装过程

开源ITIL管理工具安装过程 itop是什么?iTop即IT运营门户(IT Operation Portal),是一个开源Web应用程序,用于IT环境的日常运营,ITIL要落地就用它啦. 下载地址:http://down.51cto.com/data/2090384 如何在OSSIM环境下安装? 如果你选择OSSIM,在安装时可以和各种依赖包问题说再见啦!下面开始将压缩包解压到OSSIM Web发布目录. #unzip ./iTop-2.2.0-beta-2371.zip -d /usr/sha

了解微软开源核心机器学习技术DMTK

还记得11月9日Google Research推出第二代开源机器学习软件库TensorFlow吧,谷歌称在建立和训练神经网络方面,TensorFlow速度要比第一代系统快5倍,可支持 CPU.GPU.桌面机.服务器和移动计算等平台.TensorFlow吸引了开发者广泛的眼球. 就在同一天,微软亚洲研究院也开源了分布式机器学习工具包DMTK.开源版DMTK包含了目前世界上最大规模的主题模型和分布式词向量模型,据称比同类模型高了好几个数量级.以至于有开发者惊呼,怎么微软也能把这样的核心技术给开源了?

ios开发开源框架管理工具Cocoapods安装使用

Cocoapod是一个强大的第三方的开源框架的管理工具,其中的各种开源类库,很多都是持续更新;那么我们在使用的时候就可以使用到最新的类库;由于我们在使用开源框架的时候,也难免会遇到 第三方类库可能会出现的Bug,或者由于苹果的SDK更新,各种框架也需要更新,使用Cocoapods的话就可以一键更新到最新的开源框架了! 首先就是要安装Cocoapos了,安装它需要ruby环境,但是较新的Mac 系统已经为我们安装好了ruby,所以我们现在可以直接安装Cocoapods啦! 安装Cocoapods步

秒杀Sublime Text的微软开源代码编辑工具Visual Studio Code

1. 下载链接: https://code.visualstudio.com/ 2. 秒开一个ASP.NET网站源码 3.编辑CSS颜色支持 4.Git支持 5.常用快捷键 Ctrl+Shift+P 命令面板 Ctrl+Shift+N 打开一个新窗口 Ctrl+Shift+W 关闭窗口 Ctrl+N 新建文件 Ctrl+Tab 文件之间切换 Shift+Alt+F 代码格式化 Ctrl+End 移动到文件结尾 Ctrl+Home 移动到文件开头 Ctrl+F 查找 Ctrl+H 查找替换 Ctr

微软源代码管理工具TFS2013安装与使用详细图文教程(Vs2013)

转:http://blog.csdn.net/gulijiang2008/article/details/41447989 这篇文章联合软件小编主要介绍了微软源代码管理工具TFS2013安装与使用图文教程,本文详细的给出了TFS2013的安装配置过程.使用教程,需要的朋友可以参考下 最近公司新开发一个项目要用微软的TFS2013进行项目的源代码管理,以前只是用过SVN,从来没有用过TFS,所以在网上百度.谷歌了好一阵子来查看怎么安装和配置,还好花了一天时间总算是初步的搞定了,下面就简单介绍一下安

[转] 微软源代码管理工具TFS2013安装与使用详细图文教程(Vs2013)

这篇文章联合软件小编主要介绍了微软源代码管理工具TFS2013安装与使用图文教程,本文详细的给出了TFS2013的安装配置过程.使用教程,需要的朋友可以参考下 最近公司新开发一个项目要用微软的TFS2013进行项目的源代码管理,以前只是用过SVN,从来没有用过TFS,所以在网上百度.谷歌了好一阵子来查看怎么安装和配置,还好花了一天时间总算是初步的搞定了,下面就简单介绍一下安装和配置过程. 一.安装和配置过程介绍 要安装TFS2013当然要先进行下载了,可以在下面的地址下载:http://www.

开源图像标注工具labelme的安装使用及汉化

一 LabelMe简介 labelme是麻省理工(MIT)的计算机科学和人工智能实验室(CSAIL)研发的图像标注工具,人们可以使用该工具创建定制化标注任务或执行图像标注,项目源代码已经开源. 项目开源地址:https://github.com/CSAILVision/LabelMeAnnotationTool labelMe项目地址:http://labelme.csail.mit.edu/Release3.0/ MIT的labelme源代码可以安装到服务器上使用,是一个在线的Javascri

MinGW开发工具的安装

MinGW是Minimalist GNU for Windows的缩写,是把linux下的GNU开发工具包移植到windows的项目之一.和Cygwin不一样的是,MinGW不提供linux的posix运行系统的模拟层,而是直接使用windows的运行库,因而开发的windows的程序可以说是原生的,这样就方便了项目的移植,程序的运行效率也要比Cygwin高,而Cygwin本身很多的DLL也是使用MinGW来编译的. MinGW包含几个包: MinGW —— GCC的编译套件 MSYS —— U