机器学习PAI Easyrec 中的 NNI如何用?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在机器学习平台PAI EasyRec中,NNI(Neural Network Intelligence)是一个用于自动化机器学习(AutoML)的工具,主要用于超参数调优、模型架构搜索等任务。以下是关于如何在PAI EasyRec中使用NNI的具体步骤和说明:
NNI支持以下主要功能: - 超参数优化:通过定义搜索空间,自动寻找最优的超参数组合。 - 模型架构搜索(NAS):探索不同的神经网络结构以找到性能最佳的模型。 - 多目标优化:支持同时优化多个目标(如准确率和推理时间)。
在EasyRec中,NNI可以与推荐系统的训练流程结合,帮助提升模型效果。
确保您的环境中已安装NNI。如果未安装,可以通过以下命令安装:
pip install nni
在EasyRec中,您需要为模型的超参数定义一个搜索空间文件(通常为search_space.json
)。例如:
{
"learning_rate": {
"_type": "loguniform",
"_value": [0.0001, 0.1]
},
"batch_size": {
"_type": "choice",
"_value": [32, 64, 128]
},
"hidden_units": {
"_type": "choice",
"_value": [[64, 32], [128, 64], [256, 128]]
}
}
上述配置表示: - learning_rate
:在0.0001到0.1之间进行对数均匀采样。 - batch_size
:从32、64、128中选择。 - hidden_units
:从预定义的隐藏层单元数组合中选择。
创建一个NNI实验配置文件(通常为config.yml
),指定训练脚本、搜索空间、优化目标等信息。例如:
authorName: YourName
experimentName: EasyRec_NNI_Experiment
trialConcurrency: 2
maxExecDuration: 1h
maxTrialNum: 10
trainingServicePlatform: local
searchSpacePath: search_space.json
tuner:
builtinTunerName: TPE
classArgs:
optimize_mode: maximize
trial:
command: python train.py
codeDir: .
gpuNum: 0
上述配置表示: - trialConcurrency
:同时运行的试验数量为2。 - maxExecDuration
:实验最大运行时间为1小时。 - maxTrialNum
:最多运行10次试验。 - tuner
:使用TPE算法进行超参数优化,目标是最大化某个指标(如AUC)。 - trial.command
:指定训练脚本为train.py
。
运行以下命令启动NNI实验:
nnictl create --config config.yml
启动后,NNI会根据配置文件中的搜索空间和优化目标,自动执行多次试验,并记录每次试验的结果。
在EasyRec中,NNI可以与模型训练流程无缝集成。以下是具体操作步骤:
在EasyRec中,模型的训练配置文件(如easyrec_config.pbtxt
)需要包含可调的超参数。例如:
train_config {
optimizer {
type: Adam
learning_rate: 0.001
}
batch_size: 64
}
model_config {
hidden_units: [128, 64]
}
将这些超参数设置为可调参数,并在NNI的搜索空间中定义它们的范围。
在训练脚本(如train.py
)中,读取NNI提供的超参数值并更新EasyRec配置文件。例如:
import nni
import easy_rec
# 获取NNI提供的超参数
params = nni.get_next_parameter()
learning_rate = params.get("learning_rate", 0.001)
batch_size = params.get("batch_size", 64)
hidden_units = params.get("hidden_units", [128, 64])
# 更新EasyRec配置
config = easy_rec.load_config("easyrec_config.pbtxt")
config.train_config.optimizer.learning_rate = learning_rate
config.train_config.batch_size = batch_size
config.model_config.hidden_units = hidden_units
# 启动训练
easy_rec.train(config)
NNI提供了一个Web界面,您可以实时查看实验进度、超参数组合及其对应的性能指标。默认情况下,Web界面地址为:
http://localhost:8080
trialConcurrency
参数。optimize_mode
。通过以上步骤,您可以充分利用NNI在PAI EasyRec中的功能,实现高效的超参数调优和模型优化。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。