我正在尝试建立细分模型,并且不断 “ CUDA错误:内存不足”,在进行了调查之后,我意识到所有4个GPU都可以正常工作,但是其中一个正在填充。
一些技术细节:
我的模型:
该模型是用pytorch编写的,具有3.8M参数。
我的硬件:
我有4个GPU,每个GPU具有12GRAM(Titan V)。
我试图了解为什么我的一个GPU装满了,我做错了什么。
代码: 我将尝试解释我在代码中所做的事情:
首先,我的模特:
model = model.cuda()
model = nn.DataParallel(model, device_ids=None)
第二,输入和目标:
inputs = inputs.to('cuda')
masks = masks.to('cuda')
这些是与GPU兼容的线路,如果我错过了什么,而您还需要其他任何东西,请分享。
我感觉好像缺少了一些基本知识,这不仅会影响该模型,还会影响将来的模型,我很乐意寻求帮助。
非常感谢!
答案 0 :(得分:0)
在不了解很多细节的情况下,我只能说以下
nvidia-smi
不是最可靠和最新的测量机制DataParallel
中广播到其他GPU)我对PyTorch的了解还不足以可靠地回答问题,但是您可以肯定地检查单个GPU设置是否可以用批大小除以4来工作。也许您可以一次加载模型+批处理(不进行处理) )。