【发布时间】:2020-11-08 23:36:35
【问题描述】:
我正在使用具有 3 个 GPU 的硬件设置,并希望使用以下代码训练我的模型:
with torch.cuda.device(2):
train_load, val_load = SRD.load_sr_st_dataset(route_img,route_dpt)
#print(train_load.dataset.__sizeof__())
sr_stereo = SRD.sr_stereo(max_d=200)
sr_stereo.cuda()
optimizer = torch.optim.Adam(sr_stereo.parameters(),lr = 0.001)
criterion = nn.MSELoss(reduction='sum')
scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer,
milestones=range(5,100,5), gamma=0.5, last_epoch=-1)
sr_stereo.train()
for e in range(epoch_num):
scheduler.step()
for sample,valid in zip(train_load,val_load):
l10,l20,r10,r20,depth = SRD.parsedata(sample)
l10v, l20v, r10v, r20v, depthv = SRD.parsedata(valid)
out_train = sr_stereo(l10,l20,r10,r20)
out_val = sr_stereo(l10v, l20v, r10v, r20v)
optimizer.zero_grad()
loss_train = criterion(out_train,depth)
loss.backward()
optimizer.step()
scheduler.step()
由于我已经在 GPU0 和 GPU1 中训练了 2 个模型,我希望这个模型在 GPU2 上运行。
我得到了错误:
RuntimeError: CUDA out of memory. Tried to allocate 282.00 MiB (GPU 2; 31.88 GiB total capacity; 29.99 GiB already allocated; 78.81 MiB free; 30.04 GiB reserved in total by PyTorch)
有什么我想念的吗?我不明白为什么会出现错误,因为 GPU 2 有足够的内存并且没有运行任何训练。
【问题讨论】:
-
它很清楚地告诉你内存已满。你的数据集有多大?
标签: python deep-learning memory-leaks pytorch