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.