TensorFlow多gpu训练中的模型并行性

时间:2018-04-02 09:24:48

标签: tensorflow

我正在使用tensorflow在一台机器上的几个GPU中训练模型。但是,我发现速度比单个GPU上的训练要慢得多。我想知道张量流是否并行或按顺序在不同的GPU中执行子模型。例如:

x = 5
y = 2
with tf.device('/gpu:0'):
     z1 = tf.multiply(x, y)
with tf.device('/gpu:1'):
     z2 = tf.add(x, y)

/gpu:0/gpu:1内的代码是否按顺序执行?如果按顺序执行,如何使两个部分并行执行?假设这两部分不相互依赖。

2 个答案:

答案 0 :(得分:1)

在TensorFlow中,只有第二个块(在gpu:1内)会执行,因为没有任何东西取决于第一个块。

答案 1 :(得分:0)

是的,它按顺序执行,由于其性质,with块将等到计算完成后再移动到下一个代码块。

您可以从tensorflow实现队列和线程,以利用您的额外计算。

请参考tensorflow的thsi教程: https://www.tensorflow.org/api_guides/python/threading_and_queues