【问题标题】:GPU utilization mostly 0% during training训练期间 GPU 利用率大多为 0%
【发布时间】:2017-07-19 02:11:19
【问题描述】:

(GTX 1080,张量流 1.0.0)

在训练期间,nvidia-smi 输出(下图)表明 GPU 利用率 大部分时间为 0%(尽管 GPU 的 使用率)。关于我已经训练的时间,似乎是这样。有时它会达到 100% 或类似的峰值,但会持续一秒钟。

+-----------------------------------------------------------------------------+
    | NVIDIA-SMI 375.26                 Driver Version: 375.26                    |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  GeForce GTX 1080    Off  | 0000:01:00.0      On |                  N/A |
    | 33%   35C    P2    49W / 190W |   7982MiB /  8110MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+

    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID  Type  Process name                               Usage      |
    |=============================================================================|
    |    0      1093    G   /usr/lib/xorg/Xorg                             175MiB |
    |    0      1915    G   compiz                                          90MiB |
    |    0      4383    C   python                                        7712MiB |
    +-----------------------------------------------------------------------------+

正如我在this 问题中所描述的那样,我遇到了这种情况。 可以使用该 github 存储库中的代码或通过遵循 tensorflow 网站上的 this 简单再训练示例并在会话中传递受限的 per_process_gpu_memory_fraction(小于 1.0)来复制该问题:

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, ...)

问题1:如何在训练过程中真正使用(利用)GPU,同时使用

问题 2:如何在我的显卡上真正使用完整的 GPU(而不是将其设置为

感谢您的帮助和提示!

【问题讨论】:

    标签: tensorflow gpu


    【解决方案1】:

    当您创建的图形大于 GPU 的内存时,TensorFlow 会退回到 CPU,它使用 RAM 和 CPU 而不是 GPU。因此,只需删除per_process_gpu_memory_fraction 的选项并减少批量大小。这些示例很可能使用了大批量,因为它是在多个 GPU 或 > 32Gb 的 CPU 中训练的,这不是你的情况。它也可以是您选择的优化器算法。 SGD 使用的内存比其他算法少,请先尝试设置。在 GPU 中使用 8Gb,您可以尝试 16 的批量大小和 SGD,它应该可以工作。然后您可以增加批量大小或使用其他算法,例如 RMSprop。

    如果它仍然不起作用,您可能正在做其他事情。例如,您在每次迭代中都保存一个检查点。保存检查点在 CPU 中完成,并且可能比在 GPU 中的简单迭代花费更多时间。这可能是您看到 GPU 使用量激增的原因。

    【讨论】:

      猜你喜欢
      • 2018-11-13
      • 1970-01-01
      • 2018-02-19
      • 2021-11-20
      • 1970-01-01
      • 2019-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多