基于TPU的CloudML调优

时间:2018-07-24 13:37:17

标签: google-cloud-ml tensor2tensor google-cloud-tpu

是否支持TPU进行分布式超参数搜索?我正在使用tensor2tensor库,该库supports CloudML用于超参数搜索,即,以下对我有用的库可以在GPU上对语言模型进行超参数搜索:

t2t-trainer \
  --model=transformer \
  --hparams_set=transformer_tpu \
  --problem=languagemodel_lm1b8k_packed \
  --train_steps=100000 \
  --eval_steps=8 \
  --data_dir=$DATA_DIR \
  --output_dir=$OUT_DIR \
  --cloud_mlengine \
  --hparams_range=transformer_base_range \
  --autotune_objective='metrics-languagemodel_lm1b8k_packed/neg_log_perplexity' \
  --autotune_maximize \
  --autotune_max_trials=100 \
  --autotune_parallel_trials=3

但是,当我尝试如下使用TPU时:

t2t-trainer \
  --problem=languagemodel_lm1b8k_packed \
  --model=transformer \
  --hparams_set=transformer_tpu \
  --data_dir=$DATA_DIR \
  --output_dir=$OUT_DIR \
  --train_steps=100000 \
  --use_tpu=True \
  --cloud_mlengine_master_type=cloud_tpu \
  --cloud_mlengine \
  --hparams_range=transformer_base_range \
  --autotune_objective='metrics-languagemodel_lm1b8k_packed/neg_log_perplexity' \
  --autotune_maximize \
  --autotune_max_trials=100 \
  --autotune_parallel_trials=5

我得到了错误:

googleapiclient.errors.HttpError: <HttpError 400 when requesting https://ml.googleapis.com/v1/projects/******/jobs?alt=json returned "Field: master_type Error: The specified machine type for masteris not supported in TPU training jobs: cloud_tpu"

2 个答案:

答案 0 :(得分:3)

这里tensor2tensor库的作者之一。是的,这确实是一个错误,现在是fixed。感谢发现。我们将于本周在PyPI上发布固定版本,您当然可以从master克隆并在本地安装。

您使用的命令现在应该可以正常工作。

答案 1 :(得分:2)

我相信tensor2tensor库中存在一个错误: https://github.com/tensorflow/tensor2tensor/blob/6a7ef7f79f56fdcb1b16ae76d7e61cb09033dc4f/tensor2tensor/utils/cloud_mlengine.py#L281

需要为Cloud ML Engine设置的是worker_type(而不是master_type)。

但是,要回答原始问题,可以,TPU应该支持HP Tuning,但是上面的错误与此正交。