NNI (Neurol Network Intelligence) 是微软开源的自动机器学习工具

https://www.cnblogs.com/ms-uap/p/9719071.html

【重磅】微软开源自动机器学习工具 - NNI
在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了。即使是对于有经验的算法工程师和数据科学家,有时候也很难把握其中的规律,只能多次尝试,找到较好的超参组合。而对于初学者来说,要花更多的时间和精力。

自动机器学习这两年成为了热门领域,着力解决超参调试过程的挑战,通过超参选择算法和强大的算力来加速超参搜索的过程。

NNI (Neurol Network Intelligence) 是微软开源的自动机器学习工具。与当前的各种自动机器学习服务或工具相比,有非常独特的价值。本文先介绍一下 NNI 的特点,然后再后续的安装、使用章节详细介绍如何上手。

流程

支持私有部署。云服务中的自动机器学习直接提供了自动机器学习的服务,不仅包含了自动机器学习的功能,也包含了算力。如果团队或个人已经有了很强的算力资源,就需要支持私有部署的自动学习工具了。

NNI 支持私有部署。整个部署也很简单,使用 pip 即可完成安装。

分布式调度。NNI 可以在单机上完成试验,也支持以下两种分布式调度方案:

GPU 远程服务器。通过 SSH 控制多台 GPU 服务器协同完成试验,并能够计划每个试验所需要的 GPU 的数量。
OpenPAI。通过 OpenPAI,NNI 的试验可以在独立的 Docker 中运行,支持多样的实验环境。在计算资源规划上,不仅能指定 GPU 资源,还能制定 CPU,内存资源。
超参搜索的直接支持。当前,大部分自动机器学习服务与工具都是在某个任务上使用,比如图片分类。这样的好处是,普通用户只要有标记数据,就能训练出一个高质量的平台,不需要任何模型训练方面的知识。但这需要对每个训练任务进行定制,将模型训练的复杂性包装起来。

与大部分现有的自动机器学习服务与工具不同,NNI 需要用户提供训练代码,并指定超参的搜索范围。这样的好处在于,NNI 几乎是通用的工具,任何训练任务都可以使用 NNI 来进行超参搜索。但另一方面,NNI 的通用性,也带来了一定的使用门槛。使用 NNI 需要有基本的模型训练的经验。

步骤

兼容已有代码。NNI 使用时,可以通过注释的方法来进行无侵入式的改动。不会影响代码原先的用途。通过注释方式支持 NNI 后,代码还可以单独运行。

易于扩展。NNI 的设计上有很强的可扩展性。通过下面这些扩展性,能将系统与算法相隔离,把系统复杂性都包装起来。

Tuner 接口,可以轻松实现新的超参调试算法。研究人员可以使用 NNI 来试验新的超参搜索方法,比如在强化学习时,在 Tuner 中支持 off-policy 来探索比较好的超参组合,在 Trial 里进行 on-policy 的实际验证。也可以使用 Tuner 和训练代码相配合,支持复杂的超参搜索方法。如,实现 ENAS ,将 Tuner 作为 Control,在多个 Trial 中并行试验。

Accessor 接口,可以加速参数搜索,将表现不好的超参组合提前结束。

NNI 还提供了可扩展的集群接口,可以定制对接的计算集群。方便连接已经部署的计算集群。

可视化界面。在启动一次超参搜索试验后,就可以通过可视化界面来查看试验进展,并帮助超参结果,洞察更多信息。

首页,可以看到当前试验的进展情况,搜索参数和效果最好的一些超参组合。

首页

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

优化

通过超参的分布图来直观地看到哪些超参值会明显比较好,或者看出它们之间的关联。通过下面的颜色图就能直观地看到红色(即精度较高的超参组合)线条所表达的丰富信息。如:
卷积核大一些会表现较好。
全连接层大了不一定太好。也许是所需要的训练时间增加了,训练速度太慢造成的。
而学习率小一些(小于0.03),表现基本都不错。
ReLU 比 tanh 等其它激活函数也好不少。
...
超参

通过试验状态页面,能看到每个试验的时间长度以及具体的超参组合。

试验

通过控制页面还可以实时的增加试验的超参组合,或者调整超参的范围。

控制

最后,再贴一次地址:https://github.com/microsoft/nni

使用方法和更多详情,可参考 GitHub 的官网,有问题或 bug 可以直接提 Issue。

NNI (Neurol Network Intelligence) 是微软开源的自动机器学习工具的更多相关文章

  1. 【重磅】微软开源自动机器学习工具 - NNI

    [重磅]微软开源自动机器学习工具 - NNI 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了.即使是对于有经验的算法工程师和数据科学家,有时候也很难把握其中 ...

  2. zz【重磅】微软开源自动机器学习工具 - NNI

    [重磅]微软开源自动机器学习工具 - NNI 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了.即使是对于有经验的算法工程师和数据科学家,有时候也很难把握其中 ...

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

    微软开源自动机器学习工具 – NNI安装与使用   在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了.对于初学者来说,常常是无从下手.即使是对于有经验的算法工程师 ...

  4. 社区活动分享PPT:使用微软开源技术开发微服务

    上周六在成都中生代技术社区线下活动进行了一个名为"微软爱开源-使用微软开源技术开发微服务"的技术分享. 也算是给很多不熟悉微软开源技术的朋友普及一下微软最近几年在开源方面所做的努力 ...

  5. 资深人士剖析微软开源.NET事件:战略重心已经从PC转移到云端

    本文是雷锋网对我的访谈整理的文章,源地址是 http://www.leiphone.com/news/201411/6KaGhD7PDABnvrRf.html 2014年11月13日,微软表示开源.N ...

  6. K & DN 的前世今生(微软开源命名变革)

    一个非常有意思的 Issue:Can we rename K? 在这个 Issue 中,有大量的社区开发者讨论了微软开源命名问题,主要是 K 如何进行替换掉?看来大伙都对微软项目命名有歧义,首先,再次 ...

  7. Winjs – 微软开源技术发布的 JavaScript 组件集

    Winjs 是由微软开源技术的开发者推出的一组 JavaScript 组件,包括 ListView.ListView.Tooltip.DatePicker.Ratings 等等,帮助 Web 开发人员 ...

  8. 【干货】快速部署微软开源GPU管理利器: OpenPAI

    [干货]快速部署微软开源GPU管理利器: OpenPAI 介绍 不管是机器学习的老手,还是入门的新人,都应该装备上尽可能强大的算力.除此之外,还要压榨出硬件的所有潜力来加快模型训练.OpenPAI作为 ...

  9. 微软开源大规模数据处理项目 Data Accelerator

    微软开源了一个原为内部使用的大规模数据处理项目 Data Accelerator.自 2017 年开发以来,该项目已经大规模应用在各种微软产品工作管道上. 据微软官方开源博客介绍,Data Accel ...

随机推荐

  1. 自定义mousewheel事件,实现图片放大缩小功能实现

    本文是承接 上一篇的<自定义鼠标滚动事件>  的基础上实现的,建议大家先看一下上一篇的mousewheel的实现,再浏览下文: 上篇中我们介绍到: $element.mousewheel( ...

  2. Python3.x:ConfigParser模块的使用

    Python3.x:ConfigParser模块的使用 简介 ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节 ...

  3. html4与html5的区别

    一.HTML5更加灵活,支持下列多种形式 1.标签名可以大写(不推荐) -<SpAN>这个HTML5也的认</SpAN> 2.属性双引号可选(推荐添加双引号) -<div ...

  4. Python 对象学习一

    # 对象的基本理论 # 什么是对象? # 万物皆对象 # 对象是具体物体 # 拥有属性 # 拥有行为 # 把很多零散的东西,封装成为一个整体 # 举例:王二小 # 属性 # 姓名 # 年龄 # 身高 ...

  5. jedis客户端,取redis服务的值

    package com.common.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ...

  6. MapReduce数据筛选

    需求: 编写MapReduce程序算出高峰时间段(如9-10点)哪张表被访问的最频繁的表,以及这段时间访问这张表最多的用户,以及这个用户访问这张表的总时间开销. 测试数据: TableName(表名) ...

  7. LeetCode——Maximum Depth of Binary Tree

    LeetCode--Maximum Depth of Binary Tree Question Given a binary tree, find its maximum depth. The max ...

  8. windchill系统——一些功能查找

    1.创建产品 导航栏的浏览——>最近的产品——>全部查看——>新建产品——>填写“名称”.选择“模板”.一定的“说明”.“专用访问权限”一般选择“否”——>“确定”选项 ...

  9. ik分词器

    ik分词器下载地址:https://code.google.com/archive/p/ik-analyzer/downloads 需要FQ 配置文件: IKAnalyzer2012.jar(主 ja ...

  10. 牛客练习赛13D

    定义一个数字为幸运数字当且仅当它的所有数位都是4或者7.比如说,47.744.4都是幸运数字而5.17.467都不是.现在想知道在1...n的第k小的排列(permutation,https://en ...