【问题标题】:Tensorflow: How do you monitor GPU performance during model training in real-time?Tensorflow:您如何在模型训练期间实时监控 GPU 性能?
【发布时间】:2018-01-14 14:58:03
【问题描述】:

我是 Ubuntu 和 GPU 的新手,最近在我们的实验室中使用了一台配备 Ubuntu 16.04 和 4 个 NVIDIA 1080ti GPU 的新 PC。该机还配备了 i7 16 核处理器。

我有一些基本问题:

  1. 为 GPU 安装了 Tensorflow。那么我想,它会自动优先考虑 GPU 的使用吗?如果是这样,它是同时使用所有 4 个,还是使用 1 个然后在需要时招募另一个?

  2. 我可以在模型训练期间实时监控 GPU 使用/活动吗?

我完全理解这是基本的硬件问题,但对这些具体问题给出明确的明确答案会很棒。

编辑:

根据这个输出 - 这真的是说我的每个 GPU 上的几乎所有内存都在使用吗?

【问题讨论】:

  • 对于 2:在单独的终端窗口中尝试 nvidia-smi
  • watch -n0.1 nvidia-smi 每使用 0.1 秒
  • 非常感谢 - 请参阅编辑
  • 另外,根据我的 tensorflow 经验,我的默认设置会抓取所有 GPU 上的所有内存。为了避免这种情况,我将会话配置的选项gpu_options.allow_growth 设置为True。另见stackoverflow.com/questions/34199233
  • nvidia-smi -l 也可以解决问题

标签: performance tensorflow gpu


【解决方案1】:

我建议nvtop,它显示实时状态并且比nvidia-smi 更容易观看。它还显示在图表中。

$ sudo apt install nvtop
$ nvtop

【讨论】:

  • 我喜欢这个,很好用。
【解决方案2】:
  1. Tensorflow 不会自动使用所有 GPU,它只会使用一个 GPU,特别是第一个 gpu /gpu:0

    您必须编写多 GPU 代码才能利用所有可用的 GPU。 cifar mutli-gpu example

  2. 每 0.1 秒检查一次使用情况

    watch -n0.1 nvidia-smi

【讨论】:

    【解决方案3】:

    试试这个命令:

    nvidia-smi --query-gpu=utilization.gpu --format=csv --loop=1
    

    这是一个演示:

    【讨论】:

      【解决方案4】:

      您应该使用nvidia-smi。请记住,根据您的工作量,如果任务在 2 个采样事件之间完成,您可能看不到负载有任何变化。

      另外请记住,最大采样间隔为 1/6 秒,根据:http://manpages.org/nvidia-smi

      利用率报告每个 GPU 在一段时间内的繁忙程度,并可用于确定应用程序使用系统中 GPU 的程度。 注意:在启用 ECC 的驱动程序初始化期间,可以看到高 GPU 和内存利用率读数。这是由驱动程序初始化期间执行的 ECC 内存清理机制引起的。

      GPU 在过去的采样周期中,一个或多个内核在 GPU 上执行的时间百分比。采样周期可能在 1 秒到 1/6 秒之间,具体取决于产品。

      内存 在过去的采样周期中读取或写入全局(设备)内存的时间百分比。采样周期可能在 1 秒到 1/6 秒之间,具体取决于产品。

      【讨论】:

        【解决方案5】:

        如果您使用 GCP,请查看此脚本,该脚本允许您监控 StackDriver 中的 GPU 利用率,您还可以使用它使用nvidia-smi -l 5 命令收集 nvidia-smi 数据并报告这些统计信息以供您跟踪.

        https://github.com/GoogleCloudPlatform/ml-on-gcp/tree/master/dlvm/gcp-gpu-utilization-metrics

        【讨论】:

          【解决方案6】:

          以上所有命令都使用watch,使用builin looper 保持上下文活动效率更高: nvidia-smi -l 1.

          如果您想同时看到htopnvidia-smi 之类的内容,可以尝试glances (pip install glances)。

          【讨论】:

            【解决方案7】:
            1. 如果没有给出其他指示,启用 GPU 的 TensorFlow 安装将默认使用第一个可用的 GPU(只要您安装了 Nvidia 驱动程序和 CUDA 8.0 并且 GPU 具有必要的compute capability,其中,@ 987654322@ 是 3.0)。如果你想使用更多的 GPU,你需要在你的图中使用 tf.device 指令(更多关于它的here)。
            2. 检查 GPU 使用情况的最简单方法是控制台工具 nvidia-smi。但是,与top 或其他类似程序不同,它只显示当前使用情况并完成。正如 cmets 中所建议的,您可以使用 watch -n1 nvidia-smi 之类的东西连续重新运行程序(在这种情况下是每秒一次)。

            【讨论】:

              猜你喜欢
              • 2022-12-23
              • 2020-11-27
              • 1970-01-01
              • 1970-01-01
              • 2021-04-19
              • 2020-09-26
              • 2018-09-17
              • 2020-08-19
              • 1970-01-01
              相关资源
              最近更新 更多