NNI

NNI的简单使用,GitHub🔗

以下为 1.x 版本,已经失效

介绍

NNI (Neural Network Intelligence) 是一个工具包,可有效的帮助用户设计并调优机器学习模型的神经网络架构,复杂系统的参数(如超参)等。 NNI 的特性包括:易于使用,可扩展,灵活,高效。

本仓库主要介绍了NNI自动调参功能的使用。

相比于原始的训练代码,NNI的自动调参仅需要调整少许代码并添加两个文件即可完成自动调参过程。

笔者视角下主要有以下优点:

  • 界面美观,具有单独的网页端展示结果;
  • 训练规范,能够简洁地保存训练结果和中间输出;
  • 批量训练,对于参数分析实验能够一步完成,十分方便。

部署

nni的安装可以参考NNI官方文档,在这比主要介绍代码修改部分及两个配置文件search_space.jsonconfig.yml

源代码

这里以example内PyTorch代码为例(修改自官方示例)。详细对比见Original.pyRevised.py

引入依赖

1
2
import nni
from nni.utils import merge_parameter

修改超参配置

1
2
tuner_params = nni.get_next_parameter()
params = vars(merge_parameter(get_params(), tuner_params))

训练过程中/结束后返回结果

1
2
3
4
5
# report intermediate result
nni.report_intermediate_result(test_acc)

# report final result
nni.report_final_result(test_acc)

按照以上思路修改对应代码部分即可

search_space.json

官方说明链接

该文件为希望参数搜索空间,对于单个参数,基本格式如下

1
2
3
{
"参数名称":{"_type":"类型","_value":"取值范围"}
}

config.yml

官方说明链接

Tips

网页端指定对应端口

1
nnictl create --config config.yml --port xxxx
作者

Shuyu Zhang

发布于

2020-12-26

更新于

2022-10-16

许可协议

评论