Tôi muốn biến số _model_fn
của mình thành Estimator
thành giải pháp đa GPU.Thiết lập nhiều GPU/Tháp Tensorflow 1.2 Ước tính
Có cách nào để thực hiện điều đó trong API Esitmator hay tôi phải mã hóa vị trí và đồng bộ hóa thiết bị một cách rõ ràng.
Tôi biết tôi có thể sử dụng tf.device('gpu:X')
để đặt mô hình của mình trên GPU X
. Tôi cũng biết rằng tôi có thể lặp qua các tên GPU có sẵn để tái tạo mô hình của mình trên nhiều GPU. Tôi cũng biết tôi có thể sử dụng một hàng đợi đầu vào đơn cho nhiều GPU.
Điều tôi không biết là phần nào (trình tối ưu hóa, tính toán mất mát), tôi thực sự có thể chuyển sang GPU và nơi tôi phải đồng bộ hóa tính toán.
Từ ví dụ Cifar10
Tôi thấy rằng tôi phải chỉ đồng bộ hóa độ dốc.
Đặc biệt khi sử dụng
train_op = tf.contrib.layers.optimize_loss(
loss=loss,
global_step=tf.contrib.framework.get_global_step(),
learning_rate=learning_rate,
learning_rate_decay_fn=_learning_rate_decay_fn,
optimizer=optimizer)
tôi không thể gọi optimizer.compute_gradients()
hoặc optimizer.apply_gradients()
thủ công nữa vì đây là nội bộ xử lý bởi .optimize_loss(..)
Tôi đang tự hỏi làm thế nào để tính trung bình các gradient như nó được thực hiện trong cifar10 ví dụ Cifar10-MultiGPU hoặc nếu đây là cách tiếp cận phù hợp cho Estimator
.