Я пытаюсь реализовать этот пример распределенного Keras Tuner на движке ML Google Cloud Platform (GCP) (он же AI Platform): https://github.com/keras-team/keras-tuner/blob/master/docs/templates/tutorials/distributed-tuning.md
Вот мой вклад в обучение ML .yaml:
scaleTier : CUSTOM
masterType: standard
masterConfig:
imageUri: tensorflow/tensorflow:2.1.0-gpu-py3
workerCount: 8
workerType: standard_gpu
workerConfig:
imageUri: tensorflow/tensorflow:2.1.0-gpu-py3
Вверху сценария python добавляю:
tf_config = json.loads(os.environ['TF_CONFIG'])
cluster = tf_config['cluster']
task = tf_config['task']
master_addr = cluster['master'][0].split(':')
os.environ['KERASTUNER_ORACLE_IP'] = master_addr[0]
os.environ['KERASTUNER_ORACLE_PORT'] = '8000'
if task['type'] == 'master':
os.environ['KERASTUNER_TUNER_ID'] = 'chief'
else:
os.environ['KERASTUNER_TUNER_ID'] = 'tuner{}'.format(task['index'])
К сожалению, это не работает. Мастер возвращает ошибку:
server_chttp2.cc:40] {"created":"@1580940408.588629852","description":"No address added out of total 1 resolved","file":"src/core/ext/transport/chttp2/server/chttp2_server.cc","file_line":395,"referenced_errors":[{"created":"@1580940408.588623412","description":"Unable to configure socket","fd":22,"file":"src/core/lib/iomgr/tcp_server_utils_posix_common.cc","file_line":208,"referenced_errors":[{"created":"@1580940408.588609041","description":"Cannot assign requested address","errno":99,"file":"src/core/lib/iomgr/tcp_server_utils_posix_common.cc","file_line":181,"os_error":"Cannot assign requested address","syscall":"bind"}]}]}
Таким образом, получается, что мастер не может подключиться к прослушивающему порту.
Итак, я полагаю, что реальный вопрос: как выполнить привязку к порт прослушивания на GCP ML Engine? Это разрешено?
Любое понимание того, как запустить распределенную настройку Keras на GCP ML Engine, приветствуется.