Có thể lấy đầu ra của hoạt động tf.scan
và truyền trực tiếp tới một GPU khác, chạy hai RNN được chồng lên nhau trên hai GPU song song hay không? Một cái gì đó như thế này:Có cách nào để song song RNN xếp chồng lên nhau trên nhiều GPU trong TensorFlow không?
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))
sẽ TensorFlow tự động chăm sóc tối ưu hóa đó, hoặc nó sẽ chặn dòng chảy đồ thị cho đến khi danh sách ys1
được hoàn thành.
Tôi nghĩ rằng song song lô sẽ nhanh hơn song song mô hình – titus
điều này không trả lời câu hỏi của bạn, nhưng đây là một ví dụ về cách thực hiện song song dữ liệu nếu bạn đang tìm kiếm một https://github.com/tensorflow /tensorflow/blob/master/tensorflow/models/image/cifar10/cifar10_multi_gpu_train.py – Julius
Cân nhắc hủy đăng ký RNN bằng cờ chấm dứt? –