NNI-模型优化工具

NNI (Neural Network Intelligence) 是微软开发的一款AUTOML工具,涉及四个特性:

  • 超参优化 Hyperparameter Optimization,HPO
  • 模型搜索 Neural Architecture Search, NAS
  • 模型压缩 Model Compression, MC
  • 特征工程 Feature Engineering, FE

详细的使用方法和心得可以参考下面链接:
NNI调试记录-HPO
NNI调试记录-NAS
NNI调试记录-Pruning

文章中的代码可以参考:
fast-reid-nni

安装步骤

pip

pip install nni

从源码编译

有三种方式,建议使用docker。docker虽然有学习成本,但优点真的很多且很方便,强烈建议学习下。如果公司有服务器的话,直接在docker里面开发那就更爽了,具体配置ssh登录和图形转发可以参考这个链接

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

从docker安装

docker pull msranni/nni

测试

$ nnictl hello
A hyperparameter optimization example has been created at "nni_hello_hpo" directory.
Please run "python nni_hello_hpo/main.py" to try it out.

如果能看到上面的打印信息说明安装成功

nnctl

一组NNI命令行交互工具,方便进行实验创建,恢复,停止等控制,常用的有如下这些:

  • nnictl create
    创建一个实验
  • nnictl resume
    恢复实验
  • nnictl view
    查看已经完成的实验,这个有点用,因为NNI在实验结束后会断开request,导致链接失效,用这个命令可以重新打开网页缓冲。
  • nnictl update
    更新部分参数,包括搜索空间,尝试次数,并发数,最大尝试耗时
  • nnictl stop
    停止实验
  • nnictl trial ls
    查看某个实验下面的jobs(并发)
  • nnictl experiment save
    导出某个实验,方便迁移到其他设备
  • nnictl experiment load
    加载用nnictl experiment save保存的镜像

Let’s Getting Start

NNI到底有多简单,从下面这段代码就能看出:

params = nni.get_next_parameter()

class Net(nn.Module):
    ...

model = Net()
optimizer = optim.SGD(model.parameters(),
                      params['lr'],
                      params['momentum'])

for epoch in range(10):
    train(...)

accuracy = test(model)
nni.report_final_result(accuracy)

总结

从业这些年,发现很多人包括我过人(不管是新人还是老人,不管是大厂还是小厂)还是喜欢人工调参(专业点的用EXECL记录,不专业的直接纸笔),总结一些理由就是
1、寻优太耗时,可能卡还不够;
2、要写工具很麻烦;
3、靠经验调的参数配置也够用了,为了提升那点精度费时费力没必要;

后来我用shell写一些自动化调参脚本,能做到一定的自动化,效率低(网格搜索)、可视化都很低。NNI确实一定程度解决了上面说的问题:

  1. 利用了多并发,还有基于启发式、GD的寻优算法,资源不够,也能效率大大提升;
  2. 提供了功能强大但简单易用的API(继承pytorch);
  3. webui,可视化程度高;
  4. 完整的log记录,方便回溯;
  5. 可以打包和加载实验,方便迁移;
  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@daviiid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值