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

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

  • NNI的众多特点
  • 开启你的第一次NNI之旅
      • · 安装
      • · 三步准备实验
        • (1) 准备搜索空间
        • (2) 准备实验代码
        • (3)定义实验配置
      • · 一行命令开始训练
      • · webUI查看结果
  • 扩展阅读
      • · 基础定义
      • · 扩展训练
      • · 更多

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络基本原理简明教程-0-Python-Numpy库的点滴

Python中的Numpy的基本知识 Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 以下列出一些关于Numpy矩阵运算的基本知识和坑点。 首先需要在命令行中安装Num…

神经网络基本原理简明教程-0-基本函数导数公式

基本函数导数公式 Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 如何浏览本系列教程 由于里面包含了大量必要的数学公式,都是用LaTex格式编写…

微软发布人工智能教育与学习共建社区

步入2019,人工智能(Artificial Intelligence)的浪潮依然汹涌,各国对于AI人才的需求进一步加大:2月,美国总统特朗普签署行政命令,正式启动美国人工智能计划;加拿大正通过“全球技能战…

流量复制_快速体验之《gor+diffy实现线上流量复制到测试环境》

对于没有副作用的接口(重复发送不会产生两份数据、不会产生多余的监控统计等等),就可以用这种方式方便的做回归测试。 部署三个不接外部流量的服务,两份老版本、一份新版本,把生产环境的流量复制到 Diffy 上。 如果生产环境支持通过请求头之类…

顶级程序员的心得 –– Coders at Work

顶级程序员的心得 –– Coders at Work说明:这篇文章是我 2010 年的原创,但是发现 csdn 的版本把格式全部搞坏了,原文在这里 我2009年读了 “Coders at Work”, 这是作者对15 位顶级程序员的采访, 总共600页。 从采访的模式看&…

springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...

【原创】java后台(Springboot)开发知识图谱&&高频技术汇总1.引言:学习一个新的技术时,其实不在于跟着某个教程敲出了几行、几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开…

CSDN 原力 -- beta 测试中

更新 2022/8: 我们把原力等级和 “学习成就” 结合起来了。 请看: http://edu.csdn.net/me/softwareteacher 2022/7: 能用算法来判定一个 IT技术博客的质量么? 我们发布了博客质量分 API https://www.csdn.net/qc 大家可以去试一试。 2022/6&#xff1…

华为的涉外知识产权工程师_华为法务社招 | 岗位:高级知识产权工程师

//岗位一:高级知识产权工程师(网联车)//工作地点:上海岗位职责1、 负责智能车/电动车业务领域的专利包管理,为专利规划与分析,申请布局,授权应用等全流程提供专业服务;协助研发部门挖掘专利idea&#xff1b…

2021 部分团队的年终总结

博客主站: 这是 CSDN 的核心业务,持续投入,念念不忘,必有回响。 https://blog.csdn.net/weixin_42481955/article/details/121942860 社区:我们想让社区成为 IT 人的 ‘票圈’ 和 ‘公号’, 目前只是迈出…

gtx1660是什么级别的_GTX1660Ti到底属于什么系列?Nvidia一句话定性了

原标题:GTX1660Ti到底属于什么系列?Nvidia一句话定性了目前大家已经能够从不少渠道买到Nvidia最新的GTX 1660 Ti显卡了,娱乐大师将近20万的分数可以说确实挺不错,而基于图灵构架的它在玩游戏上面也丝毫不弱于GTX 1070,…

博客写作在App

测试在App 上写作博客。 今天和公司的小伙伴去山里总结工作讨论新年的计划。 1)抓住历史给开发者的机遇 2)聚焦,做出非常高质量的产品,体验和运营。做全行业第一。做最好的开发者内容和生态平台。 3)基础要打牢&#x…

C笔记 -- 一个为 IT人士打造的笔记工具

立即下载: https://plugin.csdn.net/chrome-index-help C笔记 讨论社区:https://bbs.csdn.net/forums/placard?category0&typeId23466 设想我们有这样的工具,你会使用么? 能帮助你学习么? 2022 年 9 月 28 日更…

2022年上半年部分团队的总结

CSDN 是中国 IT 人士学习,成长,成功的平台。 平台有很多小团队,不断地开发出很多小功能,运营活动,那么,半年过去了,大家做得怎么样呢? 我们看看今年上半年各团队的总结:…

参加 CSDN 一线客服工作的经历

在工位上得到的用户反馈 我加入 CSDN 后,先是远程工作,然后几经周折,终于来到 CSDN 北京总部的办公室,公司的同事为了让我尽快了解用户的心声,把我的工位安排在这个 《用户心声》 大屏幕的下方,我经常可以…

linux+mysql登录日志_Linux查看登录日志

lastlog打印系统账号最近一次的登录记录情况,解析的是/var/log/lastlog文件,它是一个data file类型的文件,文本模式打开无法正常显示。Username Port From Latestroot pts/0 171.83.37.215 Sat Jan 9 17:23:53 0800 2021bin **Never logged in**daemon **Never logged in**adm …

用户调查:给粉丝群发消息,红包,打赏的一些想法

CSDN 粉丝互动,红包,打赏的一些想法 2022/11/15 更新: 基于用户的投票和反馈,我们做了下面的更新: 1)会员每天和陌生人的发信息上限由 5 条升级为 10 条 2)会员增加一次粉丝群发的机会 3&#…

看球二三事 - 世界杯征文

征文活动链接: https://bbs.csdn.net/topics/609601920 在过期报纸上看 1982 年的世界杯,当时我们家里没有电视,晚上的时候听到马路对面的房子里传来惊呼声,也不知道为啥。 1983 年的春节前,家里要打扫房间&#xff…

vue隐藏浏览器_一分钟学会Vue的条件渲染和列表渲染

介绍之前一段时间由于工作很忙,没有时间继续学习Vue,今天算是继续对之前的学习进行补充了,今天要学习的便是Vue的条件渲染和列表渲染,我们将讨论if、if-else、if-else-if,show等。在列表渲染中,我们将讨论如…

mysql索引背后的数据结构_图解Mysql索引的数据结构!看不懂你来找我

听说微信搜索《Java鱼仔》会变更强哦!本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦(一)关于索引索引是帮助Mysql更加高效获取数据的一种数据结构,索引的使用很简单,但是如果不能理解索引…

常见的字符函数与字符串函数介绍(1)

常见的字符函数与字符串函数介绍 前言 C语言中对字符与字符串的处理很是频繁,但是C语言中并没有字符串类型的变量,字符串通常存放在常量字符串或者字符数组中。字符串常量适用于那些对它不做任何修改的字符串函数。 函数功能简介与再实现 1、 strlen…