问题:RuntimeError: CUDA out of memory. Tried to allocate 220.00 MiB (GPU 0; 2.00 GiB total capacity; 1.07 GiB already allocated; 0 bytes free; 1.08 GiB reserved in total by PyTorch)
解决方法:
方法一:减小 batchsize
在训练过程,遇到 CUDA
内存不足的问题,可以通过减小 batchsize
来降低模型对内存的需求。
方法二:不计算梯度
一般验证集评估阶段,batchsize
比较大,所需要的内存也就要多很多。此时除了减小 batchsize
外,还可以通过不计算梯度来解决。
在出现错误的地方加上 with torch.no_grad():
with torch.no_grad():
train_and_test(model, task)
方法三:释放内存【未实测】
在报错那一行前面加上下面两行,释放无关的内存:
if hasattr(torch.cuda, 'empty_cache'):
torch.cuda.empty_cache()