参考:
https://oldpan.me/archives/how-to-calculate-gpu-memory
https://oldpan.me/archives/how-to-use-memory-pytorch
https://oldpan.me/archives/pytorch-gpu-memory-usage-track
https://github.com/Oldpan/Pytorch-Memory-Utils
其他可能的踩坑点1
应该先把checkpoint加载到内存,再送显存
存储方面,能在 device=’cpu’ 上面做的事情,就别在 device=’cuda’上面做
model = Network()
model.load_state_dict(torch.load('xxxx.pth.tar', map_location='cpu' ))
model.cuda()
其他可能的踩坑点2
主动释放显存里的缓存
torch.cuda.empty_cache()
可能的踩坑点3
可能的踩坑点4
inplace替换:
我们都知道激活函数Relu()有一个默认参数inplace,默认设置为False,当设置为True时,我们在通过relu()计算时的得到的新值不会占用新的空间而是直接覆盖原来的值,这也就是为什么当inplace参数设置为True时可以节省一部分内存的缘故。