2017-08-15 97 views
0
tensorflow: 1.2.0 
gpu: TITAN X (Pascal) 
driver: 370.28 

我跑distrubuted tensorflow训练图像分类模型,但是没有看到GPU使用(实际上,GPU UTIL MNIST或其他培训工作也0)。GPU UTIL为0时运行tensorflow培训工作,上下文切换是非常高的

有当straced训练过程中的许多民意调查系统调用(FD调查是/ dev/nvidia0):

poll([{fd=8, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}], 10, 100 <unfinished ...> 
futex(0x2d1eca4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 3340677, {1502763800, 428734182}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 

vmstat显示很高的上下文切换,数以百万计CS每秒。

有人见过这个吗?

回答

0

我以前有过同样的问题,但是这是因为我的GPU没有设置运行 - 我在我的CPU上运行tensorflow,但我认为它运行在GPU上。如果你做的一切正确,它不会是这样的。 1)你可以通过使用nvidia-smi来检查:尽管gpu util是0%,gpu memory util也是0%吗?如果流程中没有任何流程?

- 如果是这样,你的GPU完全不使用时,tensorflow必须在CPU上运行(您可以使用上,检查CPU使用率,如果是100%以上,那么它是一个额外的证明,该方案实际上是并列在CPU上)

在这种情况下,您应该检查您是否安装了tensorflow的gpu版本。您可以在www.tensorflow.org上分别找到针对cpu/gpu的2个不同版本的安装介绍。 GPU版本tensorflow可能永远不会在GPU上运行。

另外上面的一些机器环境要求你指定你想明确使用的gpu设备。使用如下命令来检查:

CUDA_VISIBLE_DEVICES = 0蟒蛇rnn_mnist.py

(注=必须以正确的格式,如CUDA_VISIBLE_DEVICES = [0]是无效的,但没有警告将被提升,该程序将运行在CPU上)

2)如果不是这种情况,python确实运行在GPU上,它只是util为0%。还有另一种可能性,即数据获取花费了太多时间,这在CPU上,并且GPU始终在等待数据,所以util是平均0%。

- 最可能的原因是您设置的batch_size太小,请尝试128或1024.

相关问题