NNI
NNI的简单使用,GitHub🔗
以下为 1.x 版本,已经失效
介绍
NNI (Neural Network Intelligence) 是一个工具包,可有效的帮助用户设计并调优机器学习模型的神经网络架构,复杂系统的参数(如超参)等。 NNI 的特性包括:易于使用,可扩展,灵活,高效。
本仓库主要介绍了NNI自动调参功能的使用。
相比于原始的训练代码,NNI的自动调参仅需要调整少许代码并添加两个文件即可完成自动调参过程。
笔者视角下主要有以下优点:
- 界面美观,具有单独的网页端展示结果;
- 训练规范,能够简洁地保存训练结果和中间输出;
- 批量训练,对于参数分析实验能够一步完成,十分方便。
部署
nni的安装可以参考NNI官方文档,在这比主要介绍代码修改部分及两个配置文件search_space.json和config.yml。
源代码
这里以example内PyTorch代码为例(修改自官方示例)。详细对比见Original.py和Revised.py
引入依赖
1 | import nni |
修改超参配置
1 | tuner_params = nni.get_next_parameter() |
训练过程中/结束后返回结果
1 | # report intermediate result |
按照以上思路修改对应代码部分即可
search_space.json
官方说明链接
该文件为希望参数搜索空间,对于单个参数,基本格式如下
1 | { |
config.yml
官方说明链接
Tips
网页端指定对应端口
1 | nnictl create --config config.yml --port xxxx |