【发布时间】:2016-08-29 14:21:01
【问题描述】:
是否可以获取tf.scan 操作的输出并将其直接流式传输到不同的 GPU,从而有效地在两个 GPU 上并行运行两个堆叠的 RNN?像这样的:
cell1 = tf.nn.rnn_cell.MultiRNNCell(..)
cell2 = tf.nn.rnn_cell.MultiRNNCell(..)
with tf.device("/gpu:0"):
ys1 = tf.scan(lambda a, x: cell1(x, a[1]), inputs,
initializer=(tf.zeros([batch_size, state_size]), init_state))
with tf.device("/gpu:1"):
ys2 = tf.scan(lambda a, x: cell2(x, a[1]), ys1,
initializer=(tf.zeros([batch_size, state_size]), init_state))
TensorFlow 会自动处理该优化,还是会阻止图形流直到列表 ys1 最终确定。
【问题讨论】:
-
我认为批量并行会比模型并行化更快
-
这不能回答您的问题,但如果您正在寻找 github.com/tensorflow/tensorflow/blob/master/tensorflow/models/…
-
考虑使用终止标志展开 RNN?
标签: parallel-processing tensorflow recurrent-neural-network