使用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
posted @ 2020-12-01 17:30  e-yi  阅读(128)  评论(0)    收藏  举报  来源