提高pytorch在GPU上训练、测试效率的一些实用经验

提高pytorch在GPU上训练、测试效率的一些实用经验

1、测试时out of memory可能是因为未设置no_grad:

with torch.no_grad():
    for data, label in test_loader:

2、用watch nvidia-smi命令查看GPU利用率时发现利用率一会儿为100%,一会儿为0%,高低跳动不定,可以在dataloader中设置num_workers=n, pin_memory=True:

train_loader = torch.utils.data.DataLoader(dataset=trainset, batch_size=128, shuffle=True, num_workers=8, pin_memory=True)
test_loader = torch.utils.data.DataLoader(dataset=testset, batch_size=1, shuffle=False, num_workers=8, pin_memory=True)

3、训练时第一个epoch GPU显存足够,但第二个以及之后的epoch显存翻倍,并出现out of memory,可以在一个训练epoch结束时del一些变量:

for epoch in range(num_epochs):
	###
	del x, y1, y2, output, output_, labels, loss1, loss2

你可能感兴趣的:(软件问题,Pytorch)