如果平时训练测试都没问题,忽然有一天测试的时候出现RuntimeError: CUDA error: out of memory,很有可能是因为当时训练时使用的卡号和现在使用的卡号不一致。
我今天用0卡的时候发现 RuntimeError: CUDA error: out of memory
首先nvidia-smi,发现0卡显存充足。
然后查看之前的日志,发现打印的变量在1卡上。
这说明我们之前用1卡运行是没有问题的,需要将cuda 1映射到cuda 0。
修改测试代码即可,将
checkpoint = torch.load(self.test_model)
改为
checkpoint = torch.load(self.test_model,map_location={
'cuda:1': 'cuda:0'})
就可以正常运行了。