当前位置:   article > 正文

Pytorch清空显存缓冲区(torch.cuda.empty_cache)_torch.cuda.empty_cache()

torch.cuda.empty_cache()
torch.cuda.empty_cache()

因为PyTorch是有缓存区的设置的,意思就是一个Tensor就算被释放了,进程也不会把空闲出来的显存还给GPU,而是等待下一个Tensor来填入这一片被释放的空间。所以我们用nvidia-smi/gpustat看到的显存占用不会减少

torch.cuda.empty_cache可以清空缓冲区

在程序中加上这句会使速度变慢一些,但是有些情况下会有用,例如程序之前test的时候总是爆显存,然后在循环中加上了这句就不爆了

  1. for i, data in enumerate(data_loader):
  2. torch.cuda.empty_cache()
  3. img_meta = data['img_meta'][0].data[0]
  4. img_name = img_meta[0]['filename'].split('/')[-1]
  5. with torch.no_grad():
  6. result = model(return_loss=False, rescale=not show, **data)

如果显存资源比较紧缺,可以在每个epoch开始时释放下不用的显存资源。

 torch.cuda.empty_cache()  # 释放显存

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/127382
推荐阅读
相关标签
  

闽ICP备14008679号