8
是否有可能採取tf.scan
操作的輸出並將其直接流式傳輸到不同的GPU,從而有效地在兩個GPU上並行運行兩個堆疊的RNN?事情是這樣的:有沒有辦法在TensorFlow中的多個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
定稿。
我認爲批量並行會比並行模式更快 – titus
這並不能回答你的問題,但這裏是一個數據並行的例子,如果你正在尋找一個 https://github.com/tensorflow /tensorflow/blob/master/tensorflow/models/image/cifar10/cifar10_multi_gpu_train.py – Julius
考慮用終止標誌展開RNN? –