使用超参数自动调优
简介
超参数自动调优是Xiaomi Cloud-ML的功能,可以一次定义多组超参数组合,提交后并行进行训练,并返回效果最优的超参数组合。
代码规范
用户可自定义“效果最优”的指标,需要在TensorFlow模型代码中把指标写到 training/hptuning/metric
中,如下。
tf.summary.scalar("training/hptuning/metric", loss)
使用示例
我们可以使用samples中的代码示例,提交时把超参数等参数写到 job.json
文件中。
{
"job_name": "hpat",
"module_name": "trainer.task",
"trainer_uri": "fds://cloud-ml/linear/trainer-1.0.tar.gz",
"job_args": "--max_epochs 1000",
"cpu_limit": "0.25",
"memory_limit": "250M",
"hyperparameters": {
"goal": "MINIMIZE",
"output_path": "fds://cloud-ml/linear/linear_hpat",
"params": [
{"optimizer": "ftrl", "learning_rate": 0.1},
{"optimizer": "ftrl", "learning_rate": 0.5},
{"optimizer": "sgd", "learning_rate": 0.1},
{"optimizer": "sgd", "learning_rate": 0.5}
]
}
}
然后使用 cloudml
命令行工具提交即可,由于我们需要定义超参数组合这是必须传入JSON文件作为参数。
cloudml jobs submit -f job.json
训练结束后,我们可以通过命令行查看任意一个任务的结果,系统可以自动选择效果最优的超参数组合返回给用户。
cloudml jobs list
cloudml jobs logs hpat-hp-0
cloudml jobs hp hpat-hp-0
参数介绍
-f
是可选参数,用户可以使用JSON文件来描述提交任务的参数,注意不可以和其他参数混用。