performance - TensorFlow - Titan X 上的 GPU 使用率低

标签 performance profiling gpu tensorflow conv-neural-network

一段时间以来,我一直注意到 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 似乎不太可能。

我所做的事情是为了更多地了解这个问题的原因:

  • 分析 TensorFlow 设备放置 ,一切似乎都在 gpu:/0 上,所以看起来不错。
  • 使用 c简介 ,我已经优化了批量生成和其他预处理步骤。预处理是在单个线程上执行的,但 TensorFlow 步骤执行的实际优化需要更长的时间(请参阅下面的平均运行时间)。提高速度的一个明显想法是使用 TFs 队列运行器,但由于批处理准备已经比优化快 20 倍,我想知道这是否会产生很大的不同。
    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)
    
  • 在多台机器上运行以排除硬件问题。
  • 大约一周前升级到最新版本的 CuDNN v5 (RC)、CUDA Toolkit 7.5 并重新安装了 TensorFlow。

  • 可以在此处找到发生此“问题”的 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/

    相关文章:

    c++ - 如何在 OpenCV 2.4.13 中导入经过训练的 SVM 检测器

    compiler-construction - 何时将 volatile 与共享 CUDA 内存一起使用

    javascript - 优化 JavaScript 自动更正实现

    python - 如何使用 VLOOKUP 类型在 Pandas 中的新列中添加值?

    java - 使用 profiler4j 进行分析

    python - 分析多进程 Python 脚本时出现神秘的 pickle 错误

    profiling - sycl::info::event_profiling 中的 command_submit 提交整个代码还是仅提交并行代码?

    java - 如果文本中有阿拉伯语或波斯语字母,通过 fontmetrics 计算的字符串宽度非常慢

    c++ - 使用相同输入连续调用 ID3D11DeviceContext 状态的成本?

    c++ - 安装 CUDA C++ 库?