已解决:RuntimeError: CUDA error: out of memory

1. 检查是否使用了合适版本的torch

print(torch.__version__)  # 1.9.1+cu111
print(torch.version.cuda)  # 11.1
print(torch.backends.cudnn.version())  # 8005
print(torch.cuda.current_device())  # 0
print(torch.cuda.is_available())  # TRUE

2.检查是否显存不足,尝试修改训练的batch size,修改到最小依旧无法解决,然后使用如下命令实时监控显存占用情况

watch -n 0.5 nvidia-smi

已解决:RuntimeError: CUDA error: out of memory_第1张图片

 未调用程序时,显存占用的情况为

已解决:RuntimeError: CUDA error: out of memory_第2张图片

因此问题在于:程序指定了使用四块GPU,调用前面两块资源的时候是没有问题的,但是第三块被其他小伙伴的程序占用,因此报错。

3. 指定使用的GPU

os.environ['CUDA_VISIBLE_DEVICES'] = "0, 1, 3"
device = torch.device("cuda:0" if torch.cuda.is_available() and not args.no_cuda else "cpu")  # cuda 指定使用GPU设备
model = torch.nn.DataParallel(model, device_ids=[0, 1, 3])  # 指定多GPU并行处理时使用的设备编号

这样就愉快的跑起来了

已解决:RuntimeError: CUDA error: out of memory_第3张图片

如果此时需要同时利用剩下的一块的GPU,可以使用如下代码:
 

os.environ['CUDA_VISIBLE_DEVICES'] = "2"
device = torch.device("cuda:2" if torch.cuda.is_available() and not args.no_cuda else "cpu")  # cuda 指定使用GPU设备
model = torch.nn.DataParallel(model, device_ids=[2])  # 指定多GPU并行处理时使用的设备编号

你可能感兴趣的:(pytorch,深度学习,cuda)