今天在修改模型的指定GPU中遇到的坑,主要原因是由于原本模型使用多卡运行,现在希望改成单卡运行遇到的问题。
原本的代码如下
import os
os.environ['CUDA_VISIBLE_DEVICES']='0,1,2,3'
device_ids = [0,1,2,3]
model = torch.nn.DataParallel(model, device_ids=device_ids)
model = model.cuda()
- RuntimeError: module must have its parameters and buffers on device cuda:0 (device_ids[0]) but found
原因是由于直接将原来的0,1,2,3 修改为’1’
因为改为单卡运行后则不需要再使用DataParallel多卡运行,如果使用它则需要指定主卡,故修改代码为下面即可
import os
os.environ['CUDA_VISIBLE_DEVICES']='1'
model = model.cuda()
- RuntimeError: Unable to find a valid cuDNN algorithm to run convolution
上述问题解决后又出现该问题,发现是由于没有修改batch_size导致,原本的多卡运行batch_size设置过大因此无法运行,将batch_size调小,成功运行