首页 > 解决方案 > 不了解 CUDA 资源并不断耗尽内存

问题描述

我想我正在运行 Tensor PyTorch。

我是 python 新手,并试图用它来试验卷积神经网络和处理更大的图像。但是我一直遇到这个错误,即使我请求较小的图像输出。我刚刚注册了 Colab Pro。虽然它肯定更快,但它仍然与 CUDA 出错。如果我知道怎么做,我会重新分配内存,但我不知道。还有其他方法可以访问/管理 GPU 内存吗?

文件“/usr/local/lib/python3.7/dist-packages/torch/_tensor.py”,第 255 行,后向 torch.autograd.backward(self,gradient,retain_graph,create_graph,inputs=inputs)文件“/ usr/local/lib/python3.7/dist-packages/torch/autograd/ init .py",第 149 行,向后允许_unreachable=True,accumulate_grad=True) #allow_unreachable flag RuntimeError: CUDA out of memory。尝试分配 114.00 MiB(GPU 0;15.78 GiB 总容量;13.27 GiB 已分配;4.75 MiB 空闲;PyTorch 总共保留 14.43 GiB) VGG-19 架构检测到成功加载模型/vgg19-d01eb7cb.pth conv1_1:64 3 3 3 转换 1_2:64 64 3 3 转换 2_1:128 64 3 3 转换 2_2:

标签: pythontensorflowout-of-memorygoogle-colaboratory

解决方案


我在下面展示了在 pytorch 中管理 GPU 内存的方法,但这些方法通常不是处理像你这样的 CUDA 错误的建议方法。

您收到此错误的原因与输出的大小无关,而是与输入的大小有关。您可能需要使用太大的图像进入您的网络,transforms.Resize()或者您的批量大小太大,因此您需要大量的并行计算,因此需要在数据加载器中降低该数量。

从 gpu 内存中删除张量的方法可以通过使用来完成

a = torch.tensor(1)
del a

# Though not suggested and not rlly needed to be called explicitly

torch.cuda.empty_cache()

将张量分配给 cuda 内存的方法是简单地将张量移动到设备使用

a = torch.tensor(1)
a = a.cuda()

# OR

device = torch.device("cuda")
a = a.to(device)

萨塔克耆那教


推荐阅读