2016-04-30 102 views
0

我正在使用Nvidia Digits Box与GPU(Nvidia GeForce GTX Titan X)和Tensorflow 0.6来训练神经网络,并且一切正常。但是,当我使用nvidia-smi -l 1检查Volatile GPU Util时,我注意到它只有6%,我认为大部分计算都在CPU上,因为我注意到运行Tensorflow的进程占用了大约90%的CPU使用量。结果是培训过程非常缓慢。我想知道是否有办法充分利用GPU而不是CPU来加速培训过程。谢谢!Tensorflow 0.6 GPU Issue

回答

3

我怀疑你的某处存在瓶颈(就像这个github issue) - 你有一些没有GPU实现的操作,所以它被放在CPU上,并且GPU由于数据传输而空闲。例如,直到最近reduce_mean没有在GPU上实现,并且在此之前Rank没有在GPU上实现,并且它被许多操作符隐式地使用。

有一次,我看到一个网络从fully_connected_preloaded.py缓慢,因为有一个Rank操作系统放在CPU上,因此在每一步都会触发从GPU到CPU的整个数据集的传输。

为了解决这个问题,我首先建议升级到0.8,因为它有更多的GPU用于整数输入(reduce_prod用于整数输入,reduce_mean等)。

然后,您可以使用log_device_placement=True创建您的会话,并查看是否有任何操作放在CPU或GPU上,导致每步的传输过多。

经常有在不具备GPU实现输入管道(如parse_example)OPS,我发现它的帮助有时使用with tf.device("/cpu:0"):

+0

感谢你的伟大的答案引脚整个输入管道CPU!在完成一些分析工作后,我注意到'tensor.eval(session = ...,feed_dict = ...)'花费的时间太长,并且随着代码运行时间的增加,时间消耗也会增加。 (顺便说一下,我使用的是Tensorflow 0.6,我试图将它升级到0.8,但是我遇到了问题 - 我想这可能是Tensorflow 0.8的bug: http://stackoverflow.com/questions/36877559/tensorflow-0-8-import-and-export-output-tensors-problems。我还想知道如果我仍然继续使用,我是否可以改进'tensor.eval()'的使用0.6) –