超参调优¶
自动超参调优(hyperparameter optimization, HPO)是 NNI 的主要功能之一。
超参调优简介¶
在机器学习中,用来控制学习过程的参数被称为“超参数”或“超参”,而为一种机器学习算法选择最优超参组合的问题被称为“超参调优”。
以下代码片段演示了一次朴素的超参调优:
best_hyperparameters = None
best_accuracy = 0
for learning_rate in [0.1, 0.01, 0.001, 0.0001]:
for momentum in [i / 10 for i in range(10)]:
for activation_type in ['relu', 'tanh', 'sigmoid']:
model = build_model(activation_type)
train_model(model, learning_rate, momentum)
accuracy = evaluate_model(model)
if accuracy > best_accuracy:
best_accuracy = accuracy
best_hyperparameters = (learning_rate, momentum, activation_type)
print('最优超参:', best_hyperparameters)
可以看到,这段超参调优代码总计训练4×10×3=120个模型,要消耗大量的计算资源,因此您可能会有以下需求:
NNI 可以满足您的这些需求。
NNI 超参调优的主要功能¶
调优算法¶
NNI 通过调优算法来更快地找到最优超参组合,这些算法被称为“tuner”(调参器)。
调优算法会决定需要运行、评估哪些超参组合,以及应该以何种顺序评估超参组合。 高效的算法可以通过已评估超参组合的结果去预测最优超参的取值,从而减少找到最优超参所需的评估次数。
开头的示例以固定顺序评估所有可能的超参组合,无视了超参的评估结果,这种朴素方法被称为“grid search”(网格搜索)。
NNI 内建了很多流行的调优算法,包括朴素算法如随机搜索、网格搜索,贝叶斯优化类算法如 TPE、SMAC,强化学习算法如 PPO 等等。
完整内容: Tuner: Tuning Algorithms
训练平台¶
如果您不准备使用分布式训练平台,您可以像使用普通 Python 函数库一样,在自己的电脑上直接运行 NNI 超参调优。
如果想利用更多计算资源加速调优过程,您也可以使用 NNI 内建的训练平台集成,从简单的 SSH 服务器到可扩容的 Kubernetes 集群 NNI 都提供支持。
完整内容: Overview
网页控制台¶
您可以使用 NNI 的网页控制台来监控超参调优实验,它支持实时显示实验进度、对超参性能进行可视化、人工修改超参数值、同时管理多个实验等诸多功能。
完整内容: Web 界面

教程¶
我们提供了以下教程帮助您上手 NNI 超参调优,您可以选择最熟悉的机器学习框架:
更多功能¶
在掌握了 NNI 超参调优的基础用法之后,您可以尝试以下更多功能: