【问题标题】:Why pytorch needs much more memory than it should?为什么 pytorch 需要比它应该的更多的内存?
【发布时间】:2020-01-28 15:45:53
【问题描述】:

我只是在玩 pytorch,我想知道为什么它会占用我 GPU 的这么多内存?

我将 Cuda 10.0 与 pythorch 1.2.0 和 torchvision 0.4.0 一起使用。

import torch
gpu = torch.device("cuda")
x = torch.ones(int(4e8), device=gpu)
y = torch.ones(int(1e5), device=gpu)

运行上面的代码我得到了错误: 运行时错误:CUDA 内存不足。尝试分配 2.00 MiB(GPU 0;2.00 GiB 总容量;1.49 GiB 已分配;0 字节空闲;0 字节缓存)

那么,pytorch 是否需要约 500MB 的 gpu 内存作为开销?或者这里有什么问题?

【问题讨论】:

    标签: python memory gpu pytorch


    【解决方案1】:

    xymeng 在 github 中完成的更多信息和测试可以在给定的link 中看到

    引用xymeng的话:

    PyTorch 有自己的 cuda 内核。根据我的测量,cuda 运行时为它们分配了约 1GB 的内存。如果您在启用 cudnn 的情况下编译 pytorch,则总内存使用量为 1GB + 750M + 其他 = 2GB+ 请注意,这只是我的猜测,因为没有关于此的官方文档。令我困惑的是,cuda 运行时分配的内存比实际代码大小多得多(它们大约呈线性相关。如果我删除了 pytorch 的一半内核,内存使用量也会减少一半)。我怀疑内核二进制文件已被压缩,或者它们必须由运行时进行后处理。

    似乎适合你的情况。

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 2017-09-14
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      相关资源
      最近更新 更多