【问题标题】:with GTX 1050 ti, tensorflow gpu memory usage 100%, but load ~0使用 GTX 1050 ti,tensorflow gpu 内存使用率 100%,但加载 ~0
【发布时间】:2019-02-14 03:34:19
【问题描述】:

我有一个 GTX 1050 ti (4GB) 和 i5 CPU,8GB 内存。 我在win10上成功安装了带有cuda驱动的tensorflow-gpu,测试显示tensorflow实际上是在使用gpu(快照):

但是,在使用 CNN 进行训练时,虽然 GPU 内存始终为 100%,但 GPU 负载为 qualsi 0,有一些峰值 # 30%~70%:

正常吗?

编辑:虽然 GPU 占用为 qualsi 0 且有尖峰,但在训练期间 CPU 负载固定为 100%。

EDIT2:我确实在某处读到过,如果 CPU 和 GPU 之间有大量数据复制操作,CPU 可能会很高,而 GPU 可能会很低。但是我正在使用官方的 tensorflow 对象检测 api 进行训练,所以我完全不知道代码中可能存在的位置。

【问题讨论】:

  • Tensorflow 将阻塞 GPU 上的内存供 python 进程使用,因此内存消耗不会发生变化。关于利用率:GPU 的使用非常依赖于模型和批量大小。在这里查看以确保您的输入管道和数据格式得到优化。作为一个开始提示:尝试增加批量大小。
  • @O.Gindele 谢谢。我尝试了 tensorflow 对象检测 api,具有不同的 batch_size(从 32 到 2)。结果变化不大。我没有提到的一个信息是在训练期间 CPU 占用率固定为 100%。
  • 你可以尝试增加批量大小而不是降低它吗?
  • @O.Gindele 是的,我尝试了 32、16、8、4 和 2。结果几乎相同。我用 EDIT2 更新了我原来的帖子。
  • @captainst 如何为 1050ti 安装 tensorflow-gpu。我试过了,但它给了我一个错误。我正在使用 cuda 10.0 工具包,cudnn 7.4。我得到的错误是由于找不到 pywrap_tensorflow。

标签: tensorflow


【解决方案1】:

在大多数情况下,您看到的是正常行为。

TensorFlow 最初会预订整个 GPU 内存。

GPU 上的负载取决于它要处理的数据。

如果数据加载操作很慢,那么 GPU 大部分时间都在等待数据从磁盘复制到 GPU,而在此期间它没有执行任何工作。这就是您在屏幕上看到的内容。

【讨论】:

  • 谢谢。虽然 GPU 占用是 qualsi 0 并且有尖峰,但在训练期间 CPU 负载固定在 100%,这让我感到困惑。
  • 100% 的 CPU 负载与 GPU 负载无关。它只是意味着 CPU 被大量使用(也许用于预处理?)。现在可能发生的情况是将预处理的数据传输到 GPU 进行处理。如果传输速度不够快,那么 GPU 将继续等待数据很长时间,从而导致间歇性的 0% 负载。仅在发布代码后才能对此进行更多说明。
  • 好点。我确实在某处读到过,如果 CPU 和 GPU 之间有大量数据复制操作,CPU 可能会很高,而 GPU 会很低。但是我正在使用官方的 tensorflow 对象检测 api 进行训练,所以我完全不知道代码中可能存在的位置
  • 人们报告了 API 的各种速度问题。调试起来并不容易。您还应该记住,GPU 在这里也发挥了作用。您在什么温度下使用卡也在这里发挥作用。例如,如果周围环境温度很高,您的 GPU 将很快达到其最高工作温度并在缺乏足够冷却的情况下减慢速度,从而导致使用率为 0%。
  • 再次感谢您。最后我将tensorflow升级到ver1.10.0,并下载了最新版本的tensorflow模型(包括物体检测)。训练时间/步长几乎减少了 10 倍!现在GPU占用在20~25%左右。
猜你喜欢
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多