【发布时间】:2016-09-23 10:23:02
【问题描述】:
我想在具有多个 ps 和 worker 的多 GPU 集群中试验 TensorFlow 的图内复制。 CIFAR-10 multi GPU example 显示在单台机器上的图形同步复制。有没有像example trainer program for between-graph training 这样我可以参考的示例?
【问题讨论】:
标签: tensorflow
我想在具有多个 ps 和 worker 的多 GPU 集群中试验 TensorFlow 的图内复制。 CIFAR-10 multi GPU example 显示在单台机器上的图形同步复制。有没有像example trainer program for between-graph training 这样我可以参考的示例?
【问题讨论】:
标签: tensorflow
一般来说,对于分布式训练,我们更喜欢图间复制而不是图内复制,因为图间复制比图内复制(当前的实现)更具可扩展性。图内复制的主要问题是,它目前需要您为网络构建图结构的多个副本,并将它们具体化在一个位置(即分布式主节点)。当你有数百个副本时,这会将主服务器变成瓶颈;相比之下,在图间复制中,每个副本只有一个在本地运行的图副本。
图间复制的缺点是它使同步训练更加困难,因为您现在有多个训练循环要同步,而不是一个循环和一个训练操作。 distributed Inception trainer 中使用的 tf.train.SyncReplicasOptimizer 提供了一种使用图间复制进行同步训练的方法。
但是,如果您想尝试图内复制,可以通过修改 CIFAR-10 示例中的 the line that assigns a device to each of the towers 来实现。您可以在不同的工作任务中将塔分配给不同的 GPU,而不是将塔分配给同一进程中的不同 GPU。例如:
worker_devices = ["/job:worker/task:0/gpu:0", ..., "/job:worker/task:7/gpu:0"]
for worker_device in worker_devices:
with tf.device(worker_device):
# Execute code for building the model replica.
【讨论】: