一、 安装

x86

pip install nni

other 源码安装

git clone https://github.com/microsoft/nni.git
cd nni
pip install --upgrade setuptools pip wheel
python setup.py develop

二、 用法示例

2.1 提交服务命令:

nnictl create --config config.yml --port 8080

2.2 定义超参空间:

{"C": {"_type":"uniform","_value":[0.1, 1]},"kernel": {"_type":"choice","_value":["linear", "rbf", "poly", "sigmoid"]},"degree": {"_type":"choice","_value":[1, 2, 3, 4]},"gamma": {"_type":"uniform","_value":[0.01, 0.1]},"coef0": {"_type":"uniform","_value":[0.01, 0.1]}
}

2.3 定义运行参数:

运行时间限制

运行测试

运行脚本

运行环境

search_space:features:_type: choice_value: [ 128, 256, 512, 1024 ]lr:_type: loguniform_value: [ 0.0001, 0.1 ]momentum:_type: uniform_value: [ 0, 1 ]trial_command: python model.py
trial_code_directory: .trial_concurrency: 2
max_trial_number: 10tuner:name: TPEclass_args:optimize_mode: maximizetraining_service:platform: local

2.4 定义执行算法脚本:

import nni
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
import logging
import numpy as npLOG = logging.getLogger('sklearn_classification')def load_data():'''Load dataset, use 20newsgroups dataset'''digits = load_digits()X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, random_state=99, test_size=0.25)ss = StandardScaler()X_train = ss.fit_transform(X_train)X_test = ss.transform(X_test)return X_train, X_test, y_train, y_testdef get_default_parameters():'''get default parameters'''params = {'C': 1.0,'kernel': 'linear','degree': 3,'gamma': 0.01,'coef0': 0.01}return paramsdef get_model(PARAMS):'''Get model according to parameters'''model = SVC()model.C = PARAMS.get('C')model.kernel = PARAMS.get('kernel')model.degree = PARAMS.get('degree')model.gamma = PARAMS.get('gamma')model.coef0 = PARAMS.get('coef0')return modeldef run(X_train, X_test, y_train, y_test, model):'''Train model and predict result'''model.fit(X_train, y_train)score = model.score(X_test, y_test)LOG.debug('score: %s', score)nni.report_final_result(score)if __name__ == '__main__':X_train, X_test, y_train, y_test = load_data()try:# get parameters from tunerRECEIVED_PARAMS = nni.get_next_parameter()LOG.debug(RECEIVED_PARAMS)PARAMS = get_default_parameters()PARAMS.update(RECEIVED_PARAMS)LOG.debug(PARAMS)model = get_model(PARAMS)run(X_train, X_test, y_train, y_test, model)except Exception as exception:LOG.exception(exception)raise

2.5 Web portal UI

可以设置训练时常

portal 8080 服务自动根据yml 文件去做参数筛选,优化算法提交脚本

不同训练结果准确率展示

三、总结

优点:

  1. 代码结构清晰,能灵活增加算法

  2. 参数配置灵活自定义

  3. 支持不同平台环境算法训练

  4. 有较好的UI及结果展示界面

缺点:

  1. 是通过专门web服务的方式分次进行提交任务,yml,conf 等配置文件依次提交,不太适合我们的提交方式

  2. 获取结果得从对应的服务获取结果,按照定义的配置执行

AutoML- NNI相关推荐

  1. [机器学习]AutoML --- NNI (Microsoft)

    NNI (Neurol Network Intelligence) 是微软开源的自动机器学习工具.与当前的各种自动机器学习服务或工具相比,有非常独特的价值.本文先介绍一下 NNI 的特点,然后再后续的 ...

  2. MLOps专栏文章汇总

    MLOps 技术栈架构 MLOps stack architecture MLOps 全球的MLOps和ML工具概览 聊聊MLOps是什么,它对算法工程师带来了什么 可重复可复现的机器学习在生产中的1 ...

  3. tensowflow 训练 远程提交_深度解析AutoML工具——NNI:带上超参一起训练

    NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包. 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机.本地多机.云等不同的 ...

  4. 上新了! 热门开源 AutoML 工具 NNI 2.0 来袭!

    编者按:NNI(Neural Network Intelligence)是微软亚洲研究院为研究人员和算法工程师量身定制的自动机器学习(AutoML)工具.在过去的两年中,NNI 不断迭代更新,持续将最 ...

  5. 调参工要凉?微软重磅开源AutoML工具包NNI

    导读:今年 7 月份的时候,AI 前线报道了一篇有关微软智能系统的消息,在文章中,我们对微软的视觉领域 AutoML 系统 Microsoft Custom Vision 进行了简要分析.在对微软亚洲 ...

  6. 微软nni_GitHub项目推荐 | NNI:微软发布的开源神经架构搜索or超参调优AutoML工具包...

    NNI(神经网络智能)是一个帮助用户运行自动机器学习(AutoML)实验的工具包.该工具调度并运行由优化算法生成的试验作业,以在不同的环境(如本地机器.远程服务器和云)中搜索最佳的神经体系结构和/或超 ...

  7. 【微软AutoML】 NNI实现的assessor分析与总结

    [微软AutoML] NNI实现的assessor分析与总结 Assessor顾名思义就是评估器,功能在于评价当期训练的效果如何.实际上,人工调参也需要一定的评价标准,通常就是把曲线画出来,看一看Tr ...

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

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

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

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

  10. 走马观花AutoML

    1 前言 在上一篇文章中,我们提到了几个算法深入方向,包括AutoML,模型解释.正好这两个话题之前也在公司有做过一些内部分享,接下来会逐渐整理成文,与大家探讨交流.这篇文章会主要以<Autom ...

最新文章

  1. 使用 JSONP 实现跨域通信,第 2 部分: 使用 JSONP、jQuery 和 Yahoo! 查询语言构建 mashup...
  2. java 写日志太快_Log4j2 快速入门 —— 定期/定大小生成日志文件(三)
  3. voip 音频采集时间_数字音频基础------从PCM说起
  4. Docker 基础技术之 Linux namespace 源码分析
  5. 【转】vue项目打包上传的步骤和方法
  6. mysql 删除用户变量_MySql安装与MySQL添加用户、删除用户与授权
  7. No matching provisioning profiles found for Applications/MyApp.app”问题解决
  8. 梳理项目的pom文件
  9. java json 转map_JAVA | 基于Fastjson的JSON串序列化和反序列化模板总结
  10. 海康威视ivms-4200图文说明
  11. 转:: 刺鸟:用python来开发webgame服务端(3)
  12. LimeSDR DAB发射 RTL SDR DAB接收
  13. 金蝶凭证序时簿在哪_金蝶KIS旗舰版外购入库单序时簿界面没有凭证的按钮
  14. 鼠标悬停大小缩略图片切换_3D缩略图悬停效果
  15. 【QCM2150】WCN3680 WPA3 R3 4.2.3.17测试失败及问题解决方案
  16. 传奇世界开服教程:传奇世界开服需要准备什么?前期需要投入多少?
  17. 这几个消除笔软件,值得你们收藏
  18. 配置samba服务器全过程
  19. 卷积层TSNE可视化
  20. mysql服务怎么启动和关闭?

热门文章

  1. linux运维要经常加班吗,请好好善待你身边的Linux运维工程师,因为他们…
  2. Jitsi视频会议部署(三):让电话打进来!
  3. 图片文字翻译的软件有哪些?快收藏这几款实用的软件
  4. COVID vaccine inequity, species swaps — the week in infographics
  5. js分割thymleaf的字符串
  6. SQL 注释语句 (--与/*...*/)
  7. sql脚本语言中的循环语句介绍
  8. ZigZag Conversion(“Z”形转换)
  9. 任务栏广告弹窗源头查找与处理方法
  10. Python学习教程(Python学习路线):Day14A-网络编程入门