0

嗨,我正在使用 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

感谢您的帮助!

4

1 回答 1

1

在评论中,您似乎已经回答了您自己的问题(在 replica_setter 中使用 cluster_spec)。请允许我解决 CPU 集群与 GPU 集群的吞吐量问题。

GPU相当强大。您通常会通过获得具有多个 GPU 的单台机器而不是拥有多台机器且每台具有单个 GPU 来获得更高的吞吐量。这是因为通信开销成为瓶颈(同一台机器上主内存的带宽和延迟比与远程机器上的参数服务器通信要好得多)。

GPU 比 CPU 慢的原因可能是由于 GPU 需要将数据从主存复制到 GPU 并返回的额外开销。如果您正在进行大量可并行计算,那么这个副本可以忽略不计。您的模型可能在 GPU 上做的太少,开销可能会淹没实际计算。

有关构建高性能模型的更多信息,请参阅本指南

同时,我建议使用具有更多 GPU 的单台机器,看看是否有帮助:

{
  "scaleTier": "CUSTOM",
  "masterType": "complex_model_l_gpu",
  ...
}

请注意,您必须修改代码以将操作分配给正确的 GPU,可能使用towers

于 2017-07-05T14:09:19.500 回答