我计划运行一个非常大的递归网络(例如,2048x5),是否可以在tensorflow中的一个GPU上定义一个层?如何实施该模型才能达到最佳的效率。据我所知,GPU或GPU-CPU-GPU之间的通信存在开销.
发布于 2016-03-30 21:21:56
在TensorFlow中,在多个GPU之间分割一个大型模型当然是可能的,但优化它是一个困难的研究问题。一般来说,您需要执行以下操作:
with tf.device(...):块中,命名不同的GPU:
使用tf.device("/gpu:0"):#定义第一层。使用tf.device("/gpu:1"):#定义第二层。#定义其他层等。colocate_gradients_with_ops=True传递给optimizer.minimize()方法:
损失= ..。优化器= tf.train.AdaGradOptimizer(0.01) train_op =optimizer.minimize(损失,colocate_gradients_with_ops=True)tf.ConfigProto时,如果模型中的任何操作无法在GPU上运行,则可能需要在tf.Session中启用“软放置”:
config = tf.ConfigProto(allow_soft_placement=True) sess = tf.Session(config=config)https://stackoverflow.com/questions/36313934
复制相似问题