Pytorch GPU 内存随着每个批次不断增加

问题描述 投票:0回答:2

我正在图像上训练 CNN 模型。最初,我在大小为

(256, 256)
的图像块上进行训练,一切都很好。然后我更改了数据加载器以加载全高清图像
(1080, 1920)
,并在经过一些处理后裁剪图像。在这种情况下,GPU 内存会随着每个批次而不断增加。为什么会出现这种情况?

PS:在跟踪损失时,我正在做

loss.detach().item()
,以便损失不会保留在图表中。

python memory-leaks pytorch
2个回答
4
投票

按照建议here,删除输入、输出和损失数据会有所帮助。

此外,我还有字典形式的数据。仅删除字典是不够的。我必须迭代 dict 元素并删除所有元素。


0
投票

我有一个类似的问题,但它积累得慢得多,经过数百万次迭代后,使用了大量内存(正如你想象的那样很难调试)。我认为这是因为我在开始运行之前运行了

export CUDA_LAUNCH_BLOCKING=1 export TORCH_USE_CUDA_DSA=1
打开调试标志。

对于有此问题的人来说,另一件值得尝试的事情是清除每个时期的内存。

import gc
import torch
gc.collect()
torch.cuda.empty_cache()

© www.soinside.com 2019 - 2024. All rights reserved.