【问题标题】:TensorFlow strange memory usageTensorFlow 奇怪的内存使用情况
【发布时间】:2020-06-24 18:52:47
【问题描述】:

我在 Ubuntu 19.10 机器上(带有 KDE 桌面环境),配备 8GB RAM、i5 8250u 和 MX130 gpu(2GB VRAM),运行带有 tensorflow-gpu 的 Jupyter Notebook。

我只是在训练一些模型来测试它们的内存使用情况,而我看不到任何意义。我在训练期间使用 KSysGUARD 和 NVIDIA System Monitor (https://github.com/congard/nvidia-system-monitor) 来监控我的系统。

  1. 当我在 NVIDIA S.M. 上点击“火车”时显示内存使用率为 100%(或接近 100%,如 95/97%),GPU 使用情况良好。

  2. 总是在 NVIDIA S.M. 中,我查看进程列表,“python”仅占用大约 60MB 的 vram 空间。

  3. 在 KSysGUARD 中,python 的内存使用量始终在 700mb 左右。

对此可能有一些解释,问题是 gpu 的内存使用率达到 90% 的模型具有字面上的 2 个神经元(当然是密集连接的 xD),就像具有 2 亿个参数的模型一样。我使用的批量大小为 128。

我想了一下这个乱七八糟的东西,如果我没记错的话,一个2亿参数的模型应该占用200000000*4bytes*128字节,应该是1024gb。 这意味着我肯定在某些事情上错了,但是我太无私了,无法为我保留这个谜语,所以我决定给你机会来解决这个问题;D

PS:英语不是我的主要语言。

【问题讨论】:

    标签: deep-learning tensorflow gpu memory


    【解决方案1】:

    Tensorflow 默认分配目标 GPU 中的所有可用 VRAM。有一个称为内存增长的实验性功能,可以让您控制它,基本上停止初始化过程分配所有 VRAM,并在需要时执行它。

    https://www.tensorflow.org/api_docs/python/tf/config/experimental/set_memory_growth

    【讨论】:

    • 好的,这意味着我所有的 VRAM 都被分配给了 tensorflow,即使他使用了所有 2GB 中的 1mb。这意味着,我的问题是系统监视器没有显示 tensorflow 进程,导致进程不在实际占用所有内存的列表中。 ...对吗?
    • 好的,我发现了内存是如何工作的。但还有一件事我不确定:我如何才能在仅 2GB 的 vram 上训练这么大的模型(2.5 亿参数)?
    • Tensorflow 必须适应内存中的神经网络、数据等,因此您正在训练的模型仍在 2GB VRAM 限制内。
    • @DennisOrlando 如果我的帖子回答了您的问题,您可以接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多