首页 > 解决方案 > 为什么 pytorch 需要比它应该的更多的内存?

问题描述

我只是在玩 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)

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

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

标签: pythonmemorygpupytorch

解决方案


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

参考xymeng的话:

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

好像很适合你的情况。


推荐阅读