嗨,我正在使用 ML Engine 和一个自定义层,该层由一个 complex_m 主控器、四个工作器、一个 GPU 和一个 complex_m 作为参数服务器组成。
该模型正在训练一个 CNN。但是,工人似乎有麻烦。这是日志https://i.stack.imgur.com/VJqE0.png的图像。
主服务器似乎仍在工作,因为正在保存会话检查点,但是,这已经接近应有的速度。
使用 complex_m 工人,该模型有效。它只是在开始时等待模型准备好(我假设它是直到主初始化全局变量,如果我错了,请纠正我)然后正常工作。然而,对于 GPU,任务似乎存在问题。
我没有在任何地方使用 tf.Device() 函数,在云中我认为如果 GPU 可用,设备会自动设置。
我按照人口普查示例并加载了 TF_CONFIG 环境变量。
tf.logging.info('Setting up the server')
tf_config = os.environ.get('TF_CONFIG')
# If TF_CONFIG is not available run local
if not tf_config:
return run('', True, *args, **kwargs)
tf_config_json = json.loads(tf_config)
cluster = tf_config_json.get('cluster')
job_name = tf_config_json.get('task', {}).get('type')
task_index = tf_config_json.get('task', {}).get('index')
# If cluster information is empty run local
if job_name is None or task_index is None:
return run('', True, *args, **kwargs)
cluster_spec = tf.train.ClusterSpec(cluster)
server = tf.train.Server(cluster_spec,
job_name=job_name,
task_index=task_index)
# Wait for incoming connections forever
# Worker ships the graph to the ps server
# The ps server manages the parameters of the model.
if job_name == 'ps':
server.join()
return
elif job_name in ['master', 'worker']:
return run(server.target, job_name == 'master', *args, **kwargs)
然后在定义主图之前使用 tf.replica_device_setter。
作为一个会话,我正在使用 tf.train.MonitoredTrainingSession,这应该处理变量的初始化和检查点保存。我不知道为什么工人说变量没有初始化。
需要初始化的变量都是变量:https ://i.stack.imgur.com/hAHPL.png
优化器:AdaDelta
感谢您的帮助!