使用超参数自动调优

简介

超参数自动调优是Xiaomi Cloud-ML的功能,可以一次定义多组超参数组合,提交后并行进行训练,并返回效果最优的超参数组合。

代码规范

用户可自定义“效果最优”的指标,需要在TensorFlow模型代码中把指标写到 training/hptuning/metric 中,如下。

  1. tf.summary.scalar("training/hptuning/metric", loss)

使用示例

我们可以使用samples中的代码示例,提交时把超参数等参数写到 job.json 文件中。

  1. {
  2. "job_name": "hpat",
  3. "module_name": "trainer.task",
  4. "trainer_uri": "fds://cloud-ml/linear/trainer-1.0.tar.gz",
  5. "job_args": "--max_epochs 1000",
  6. "cpu_limit": "0.25",
  7. "memory_limit": "250M",
  8. "hyperparameters": {
  9. "goal": "MINIMIZE",
  10. "output_path": "fds://cloud-ml/linear/linear_hpat",
  11. "params": [
  12. {"optimizer": "ftrl", "learning_rate": 0.1},
  13. {"optimizer": "ftrl", "learning_rate": 0.5},
  14. {"optimizer": "sgd", "learning_rate": 0.1},
  15. {"optimizer": "sgd", "learning_rate": 0.5}
  16. ]
  17. }
  18. }

然后使用 cloudml 命令行工具提交即可,由于我们需要定义超参数组合这是必须传入JSON文件作为参数。

  1. cloudml jobs submit -f job.json

训练结束后,我们可以通过命令行查看任意一个任务的结果,系统可以自动选择效果最优的超参数组合返回给用户。

  1. cloudml jobs list
  2. cloudml jobs logs hpat-hp-0
  3. cloudml jobs hp hpat-hp-0

参数介绍

  • -f 是可选参数,用户可以使用JSON文件来描述提交任务的参数,注意不可以和其他参数混用。

原文: http://docs.api.xiaomi.com/cloud-ml/trainjob/0503_use_hpat.html