一段时间以来,我一直注意到 TensorFlow (v0.8) 似乎没有充分利用我的 Titan X 的计算能力。对于我一直运行的几个 CNN,GPU 使用率似乎没有超过 ~30%。通常,GPU 利用率甚至更低,大约为 15%。显示这种行为的 CNN 的一个特定示例是 DeepMind 的 Atari 论文中的 CNN,其中包含 Q-learning(代码请参见下面的链接)。
当我看到我们实验室的其他人运行用 Theano 或 Torch 编写的 CNN 时,GPU 使用率通常为 80% 以上。这让我想知道,为什么我在 TensorFlow 中编写的 CNN 如此“慢”,我该怎么做才能更有效地利用 GPU 处理能力?一般来说,我对分析 GPU 操作和发现瓶颈所在的方法感兴趣。任何关于如何做到这一点的建议都非常受欢迎,因为目前 TensorFlow 似乎不太可能。
我所做的事情是为了更多地了解这个问题的原因:
Avg. Time Batch Preparation: 0.001 seconds
Avg. Time Train Operation: 0.021 seconds
Avg. Time Total per Batch: 0.022 seconds (45.18 batches/second)
可以在此处找到发生此“问题”的 Q-learning CNN 示例:https://github.com/tomrunia/DeepReinforcementLearning-Atari/blob/master/qnetwork.py
NVIDIA SMI 显示 GPU 利用率低的示例:NVIDIA-SMI
最佳答案
使用 Tensorflow 的最新版本(我使用的是 Tensorflow 1.4),我们可以获得 runtime statistics并在 Tensorboard 中可视化它们。
这些统计信息包括计算图中每个节点的计算时间和内存使用情况。
关于performance - TensorFlow - Titan X 上的 GPU 使用率低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37533863/