在使用 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。
答案 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"')