pytorch报错RuntimeError: CUDA out of memory

在复现大型代码时,使用PyTorch遇到CUDAoutofmemory错误。问题可能源于Batch-size过大、number_workers设置不当或梯度未释放。解决方案包括减小Batch-size、降低number_workers和使用with torch.no_grad()包裹无需计算梯度的代码块。实施这些修改后,成功避免了CUDA内存溢出的错误。
摘要由CSDN通过智能技术生成

pytorch报错RuntimeError: CUDA out of memory

最近我在复现一个大型代码,使用pytorch,总会出现报错CUDA out of memory的情况。原作者同时使用了几个GPU来跑,而因为硬件条件限制,我们教研室只有一个GPU,所以我总会遇到下边的错误:

RuntimeError: CUDA out of memory. Tried to allocate 823.88 MiB (GPU 0; 7.93 GiB total capacity; 6.96 GiB already allocated; 189.31 MiB free; 10.26 MiB cached)

通过百度结合自身所用到的,总结了一些解决方法

1、首先可能是因为Batch-size设置过大,所以改小Batch-size,我直接设置Batch-size=1

2、在测试时,就算Batch-size=1也还是会不停报错说CUDA out of memory,然后发现可能是因为number_workers大,于是我将其改小:默认改为10
在这里插入图片描述3、也是在测试验证中常出现的,查看代码发现在测试时,梯度没有释放造成梯度累积,所以导致出现CUDA out of memory的错误。可以通过命令watch -n 0.1 nvidia-smi来查看GPU使用情况。解决办法就是对代码进行修改,加入:

with torch.no_grad():

使用with torch.no_grad() 包含无需计算梯度的代码块。下图我在测试时加入此语句就不再报错。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值