【问题标题】:Keras, Tensorflow are reserving all GPU memory on model buildKeras、Tensorflow 在模型构建时保留所有 GPU 内存
【发布时间】:2019-07-16 13:11:16
【问题描述】:

我的 GPU 是 NVIDIA RTX 2080 TI

Keras 2.2.4

张量流-GPU 1.12.0

CUDA 10.0

一旦我加载构建模型(在编译之前),我发现 GPU 内存已完全分配

[0] GeForce RTX 2080 Ti | 50'C, 15 % | 10759 / 10989 MB | issd/8067(10749M)

可能是什么原因,我该如何调试?

即使我通过生成器加载数据,我也没有多余的内存来加载数据

我试图监控 GPU 的内存使用情况,发现它在构建层后(编译模型之前)已满

【问题讨论】:

  • 这是正常的 TensorFlow 行为。默认情况下,它会进行贪婪分配。一些研究会告诉你这一点。例如,阅读this
  • tensorflow 吃掉你的 GPU!它是一种设计选择,如果 tensorflow 在其运行时间中途的某个时间点需要它,可能会确保没有其他进程在 GPU 上分配任何内存
  • @RobertCrovella 但是运行卷积非常困难,因为它们将使用 GPU 内存,我试图监控行为并且所有内存都已填满。我正在为我的网络提供小批量以确保最低使用量。
  • 在 TF 中做你想做的事。仅仅因为它分配了所有内存并不意味着您内存不足。 TF 正在为您管理内存。除非您遇到内存不足错误,否则不要担心。无论如何,有很多问题和文章讨论这个问题。您需要阅读其中的一些内容并了解正在发生的事情。我无法比现有的所有文档、问题和文章更好地解释它。

标签: python-3.x tensorflow keras


【解决方案1】:

我在加载预训练的 ResNet50 时遇到了类似的问题。 GPU 内存使用量激增至 11GB,而 ResNet50 通常仅消耗不到 150MB。

我的问题是我也导入了 PyTorch 而没有在我的代码中实际使用它。评论后,一切正常。 但我有另一台 PC 具有相同的代码,工作得很好。所以我卸载并重新安装了正确版本的 Tensorflow 和 PyTorch。然后,即使我导入 PyTorch,一切正常。

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 2020-03-21
    • 1970-01-01
    • 2018-02-11
    • 2019-08-24
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多