MultiWorkerMirroredStrategy() 无法在 Google AI 平台 (CMLE) 上运行

MultiWorkerMirroredStrategy() not working on Google AI-Platform (CMLE)

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

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

MirroredStrategy()PamameterServerStrategy() 都在 AI-Platform 上使用它们各自的 config.yaml 文件正常工作。我目前 为任何操作提供设备范围。 两者都不 我在会话配置中提供了任何设备过滤器,tf.ConfigProto(device_filters=device_filters)

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

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

masterType 输入是在 AI-Platform 上提交训练作业所必需的。

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

(1) 这似乎是 MultiWorkerMirroredStrategy 的一个错误。请在 TensorFlow 中提交错误。在 TensorFlow 1.x 中,它应该使用 master,而在 TensorFlow 2.x 中,它应该使用 chief。代码(错误地)要求 chief,而 AI Platform(因为您使用的是 1.14)仅提供 master。顺带一提:大师=首席+评价员。

(2) 没有将 tensorflow 添加到您的 setup.py。使用 --runtime-version(请参阅 https://cloud.google.com/ml-engine/docs/runtime-version-list)标志向 gcloud 提供您希望 AI Platform 使用的 tensorflow 框架。

我遇到了同样的问题。据我了解,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"')