MultiWorkerMirroredStrategy() не работает на Google AI-Platform (CMLE)
Я получаю следующую ошибку при использовании MultiWorkerMirroredStrategy() для обучения пользовательского оценщика на Google AI-Platform (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)
.
В config.yaml
файл, который я использую для обучения с MultiWorkerMirroredStrategy():
trainingInput:
scaleTier: CUSTOM
masterType: standard_gpu
workerType: standard_gpu
workerCount: 4
В masterType
ввод обязателен для подачи заявки на обучение на AI-Platform.
Примечание: он показывает "руководитель" как допустимый тип задачи и "мастер" как недопустимый. Я предоставляю tenorflow-gpu==1.14.0 в setup.py для пакета тренера.
2 ответа
Я попал в ту же проблему. Насколько я понимаю, значения конфигурации MultiWorkerMirroredStrategy отличаются от других стратегий и от того, что CMLE предоставляет по умолчанию: https://www.tensorflow.org/tutorials/distribute/multi_worker_with_keras
Он не поддерживает "главный" узел, вместо этого он называет его "главным". Если вы выполняете свои задания в контейнере, вы можете попробовать использовать флаг 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"')
(1) Похоже, это ошибка в MultiWorkerMirroredStrategy. Сообщите об ошибке в TensorFlow. В TensorFlow 1.x он должен использовать master, а в TensorFlow 2.x должен использоваться главный. Код (ошибочно) запрашивает руководителя, а платформа AI (поскольку вы используете 1.14) предоставляет только мастера. Между прочим: мастер = шеф + оценщик.
(2) Не добавляйте тензорный поток в ваш setup.py. Предоставьте платформу тензорного потока, которую вы хотите использовать на платформе AI, используя--runtime-version
(См. https://cloud.google.com/ml-engine/docs/runtime-version-list) флаг для gcloud.