【问题标题】:Tensorflow memory needed doesn't scale with batch size and image size所需的 TensorFlow 内存不会随批量大小和图像大小而扩展
【发布时间】:2018-01-31 06:19:13
【问题描述】:

我使用的是 ubuntu 16.04,张量流 1.3

权重约 1700 万的网络

实验

  1. 图像大小 400x1000,批量大小 4,在图构建期间:

    未能在主机上分配 34359738368 字节:CUDA_ERROR_OUT_OF_MEMORY

  2. 图像大小 300x750,批量大小 4,在图构建期间:

    未能在主机上分配 34359738368 字节:CUDA_ERROR_OUT_OF_MEMORY

  3. 图像大小 300x740,批量大小 1,在图构建期间:

    未能在主机上分配 34359738368 字节:CUDA_ERROR_OUT_OF_MEMORY

因此,三个实验所请求的内存是相同的。我的问题是 17M 的权重真的需要这么大的内存吗?为什么所需的内存不会随着不同的图像大小和批量大小而改变?

【问题讨论】:

  • 您尝试过有效的实验吗?你有多少内存可用? (注意:不熟悉 Tensorflow 或 GPU 编程,但看起来您需要查看图形内存。)
  • 我有两张GPU卡,总内存加起来22GB。
  • 我会尝试使用尽可能小的尺寸(在所有变量中,例如使用 1x1 图像)进行实验。另外,检查程序中隐含默认设置过高的选项。
  • 顺便说一句,您的其中一张存储卡可能专用于您的计算机显示器,可能不适用于其他程序。如果他们每个人都有 11Gbs,那就有问题了。
  • [更新] 我将权重减少到 8M,但我仍然得到这个:未能在主机上分配 34359738368 字节:CUDA_ERROR_OUT_OF_MEMORY

标签: tensorflow memory-leaks


【解决方案1】:

这可能是因为您存储了很多中间结果。运行 sess.run 后,你分配了一些新的内存来存储新的 tensor 结果,但是在添加新的 alloc 内存后,你的主机上分配的总内存超过了 32GB。请检查运行时使用的主机内存(不是 gpu 内存)。如果是这种情况,您需要降低主机内存分配。也许将它存储到硬盘是一个不错的选择。

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2021-02-14
    相关资源
    最近更新 更多