使用NNI进行自动超参数调优
使用NNI进行自动超参数调优
有中文文档
NNI (Neural Network Intelligence) 是一个工具包,可有效的帮助用户设计并调优机器学习模型的神经网络架构,复杂系统的参数(如超参)等。 NNI 的特性包括:易于使用,可扩展,灵活,高效。
- 易于使用:NNI 可通过 pip 安装。 只需要在代码中添加几行,就可以利用 NNI 来调优参数。 可使用命令行工具或 Web 界面来查看 Experiment。
- 可扩展:调优超参或网络结构通常需要大量的计算资源。NNI 在设计时就支持了多种不同的计算资源,如远程服务器组,训练平台(如:OpenPAI,Kubernetes),等等。 通过训练平台,可拥有同时运行数百个 Trial 的能力。
- 灵活:除了内置的算法,NNI 中还可以轻松集成自定义的超参调优算法,神经网络架构搜索算法,提前终止算法等等。 还可以将 NNI 连接到更多的训练平台上,如云中的虚拟机集群,Kubernetes 服务等等。 此外,NNI 还可以连接到外部环境中的特殊应用和模型上。
- 高效:NNI 在系统及算法级别上不断地进行优化。 例如:通过早期的反馈来加速调优过程。
主要概念
- Experiment(实验): 表示一次任务,用来寻找模型的最佳超参组合,或最好的神经网络架构等。 它由 Trial 和自动机器学习算法所组成。
搜索空间:是模型调优的范围。 例如,超参的取值范围。- Configuration(配置):配置是来自搜索空间的实例,每个超参都会有特定的值。
- Trial: 是一次独立的尝试,它会使用某组配置(例如,一组超参值,或者特定的神经网络架构)。 Trial 会基于提供的配置来运行。
- Tuner(调优器): Tuner 个自动机器学习算法,会为下一个 Trial 生成新的配置。 新的 Trial 会使用这组配置来运行。
- Assessor(评估器):分析 Trial 的中间结果(例如,定期评估数据集上的精度),来确定 Trial 是否应该被提前终止。
训练平台:是 Trial 的执行环境。 根据 Experiment 的配置,可以是本机,远程服务器组,或其它大规模训练平台(如,OpenPAI,Kubernetes)。
1. 安装NNI
python3 -m pip install --upgrade nni
2. 修改模型脚本run_demo.py
使模型接受json格式的参数,并可以输出你所需的评价指标(可以是复数指标)。一种写法如下:
# 类似这样
import nni
...
def run_trail(lr,dropout,a,b,c,...):
...
return {
'default': percision(y_hat,y), # default标识的评价指标被视作主要评价指标
'metric2': recall

浙公网安备 33010602011771号