Возможно ли выполнить вывод операции tf.scan
и передать ее прямо на другой графический процессор, эффективно выполняя два сложенных RNN на двух графических процессорах параллельно? Что-то вроде этого:Есть ли способ распараллеливать сложенные RNN на несколько графических процессоров в TensorFlow?
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 с флагом завершения? –