MultiWorkerMirroredStrategy()在Google AI平台(CMLE)上不起作用

时间:2019-10-06 07:10:27

标签: tensorflow google-cloud-platform google-cloud-ml tensorflow-estimator gcp-ai-platform-training

在使用 MultiWorkerMirroredStrategy()在Google AI平台(CMLE)上训练自定义估算器时,出现以下错误。

ValueError: Unrecognized task_type: 'master', valid task types are: "chief", "worker", "evaluator" and "ps".

MirroredStrategy() PamameterServerStrategy()在AI平台及其各自的config.yaml文件上都可以正常工作。我目前 提供任何操作的设备范围。 都不是 我在会话配置tf.ConfigProto(device_filters=device_filters)中提供了任何设备过滤器。

我用于通过 MultiWorkerMirroredStrategy()进行训练的config.yaml文件是:

trainingInput:
  scaleTier: CUSTOM
  masterType: standard_gpu
  workerType: standard_gpu
  workerCount: 4

masterType输入对于在AI平台上提交培训作业是必填的。

注意:它显示'chief'是有效的任务类型,'master'是无效的任务类型。我在setup.py中为Trainer软件包提供tensorflow-gpu == 1.14.0。

2 个答案:

答案 0 :(得分:1)

(1)然后使用MultiWorkerMirroredStrategy,这似乎是一个错误。请在TensorFlow中提交错误。在TensorFlow 1.x中,它应该使用master,在TensorFlow 2.x中,它应该使用Chief。代码是(错误地)要求首席,而AI平台(因为您使用的是1.14)仅提供了主代码。顺便说一句:大师=首席+评估者。

(2)无需在您的setup.py中添加tensorflow。使用gcloud的--runtime-version(请参阅https://cloud.google.com/ml-engine/docs/runtime-version-list)标志提供您希望AI平台使用的tensorflow框架。

答案 1 :(得分:1)

我遇到了同样的问题。据我了解,MultiWorkerMirroredStrategy配置值与其他策略以及CMLE默认提供的配置值不同:https://www.tensorflow.org/tutorials/distribute/multi_worker_with_keras#multi-worker_configuration

它不支持'master'节点,而是称其为'chief'。 如果您正在容器中运行作业,则可以尝试使用'useChiefInTfConfig'标志,请参见此处的文档:https://developers.google.com/resources/api-libraries/documentation/ml/v1/python/latest/ml_v1.projects.jobs.html

否则,您可以尝试手动破解TF_CONFIG:

  TF_CONFIG = os.environ.get('TF_CONFIG')
  if TF_CONFIG and '"master"' in TF_CONFIG:
    os.environ['TF_CONFIG'] = TF_CONFIG.replace('"master"', '"chief"')