微软自动调参工具—NNI

NNI的介绍

在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了。对于初学者来说,要花更多的时间和精力。

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

NNI (Neural Network Intelligence) 是一个轻量但强大的工具包,帮助用户自动的进行特征工程神经网络架构搜索,超参调优以及模型压缩

NNI 管理自动机器学习 (AutoML) 的 Experiment,调度运行由调优算法生成的 Trial 任务来找到最好的神经网络架构和超参,支持各种训练环境。

在这里插入图片描述

NNI的优势

  1. 支持私有部署,云服务中的自动机器学习直接提供了自动机器学习的服务,不仅包含了自动机器学习的功能,也包含了算力。如果团队或个人已经有很强的算力资源,就需要支持私有部署的自动学习功能
  2. 分布式调度
    . GPU 远程服务器:通过 SSH 控制多台 GPU 服务器协同完成试验,并能够计划每个试验所需要的 GPU 的数量。
    . OpenPAI:通过 OpenPAI,NNI 的试验可以在独立的 Docker 中运行,支持多样的实验环境。在计算资源规划上,不仅能指定 GPU 资源,还能指定CPU,内存等资源。
  3. 超参搜索的直接支持:与大部分现有的自动机器学习服务与工具不同,NNI 需要用户提供训练代码,并指定超参的搜索范围。这样的好处在于,NNI 几乎是通用的工具,任何训练任务都可以使用 NNI 来进行超参搜索。但另一方面,NNI 的通用性,也带来了一定的使用门槛。使用 NNI 需要有基本的模型训练的经验。
  4. 与大部分现有的自动机器学习服务与工具不同,NNI 需要用户提供训练代码,并指定超参的搜索范围。这样的好处在于,NNI 几乎是通用的工具,任何训练任务都可以使用 NNI 来进行超参搜索。但另一方面,NNI 的通用性,也带来了一定的使用门槛。使用 NNI 需要有基本的模型训练的经验。
  5. 可视化界面。在启动一次超参搜索试验后,就可以通过可视化界面来查看试验进展,并帮助超参结果,洞察更多信息。

NNI的安装

NNI 支持并在 Ubuntu >= 16.04, macOS >= 10.14.1, 和 Windows 10 >= 1809 通过了测试。 在 python 64-bit >= 3.6 的环境中,只需要运行 pip install 即可完成安装。

在linux系统中

python3 -m pip install --upgrade nni

以MNIST 示例为例,验证NNI的有效性

git clone https://github.com/Microsoft/nni.git
nnictl create --config nni/examples/trials/mnist-pytorch/config.yml

在命令行中等待输出 INFO: Successfully started experiment!。 此消息表明 Experiment 已成功启动。 通过命令行输出的 Web UI url 来访问 Experiment 的界面。 此消息表明 Experiment 已成功启动。 通过命令行输出的 Web UI url 来访问 Experiment 的界面。

在浏览器中打开 Web UI url,可看到下图的 Experiment 详细信息,以及所有的 Trial 任务。 查看这里的更多页面。 查看这里的更多页面。

停止自动调参的命令

nnictl stop   #停止自动调参

报错

在运行mnist-pytorch的例子,一直报下面错误:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=17513): Max retries exceeded with url: /api/v1/nni/check-status (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x2b352d9c6f28>: Failed to establish a new connection: [Errno 111] Connection refused',))

就是重试的次数过少,在集群的环境下很可能无法启动实验

方法一:修改源代码

  • 找到安装的nni目录下的launcher文件:nni/nni/experiment/launcher.py
  • 将126行_check_rest_server(port, url_prefix=url_prefix)修改为_check_rest_server(port, retry=30, url_prefix=url_prefix)
  • 即将重试30次,经过测试,一般在10次重试后,实验就会起来了。

方法二:官方应该在3.0版本中会解决这个问题,可以将nni升级到更高版本试试。
方法三:如果一开始在3.0版本的nni,比如降级为2.10.1(在自己的电脑上,3.0版本不会报上面的错误;在服务器中,则报错,降级为2.10.1就没问题,这也是醉了)

参考链接:https://blog.csdn.net/qq_45551930/article/details/130226862

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值