python 推理函数执行完毕后显存不自动释放怎么办
可以使用以下方法释放显存:
-
在每个推理函数执行完毕后,手动调用
torch.cuda.empty_cache()函数释放显存。 -
在每个推理函数执行完毕后,将使用的张量设置为
None,以便 Python 垃圾回收机制回收内存。 -
在每个推理函数执行完毕后,使用
torch.cuda.reset_max_memory_allocated()和torch.cuda.reset_max_memory_cached()函数重置显存使用情况的最大值,这样可以让 PyTorch 在下次使用显存时自动释放一部分已使用的显存。 -
在代码中添加
with torch.no_grad():语句块,以避免梯度计算过程中产生的中间结果占用显存。 -
如果使用的是 PyTorch 的 DataLoader 加载数据,可以设置
pin_memory=True,让数据在 CPU 内存和显存之间自动移动,避免显存占用过多。
原文地址: https://www.cveoy.top/t/topic/cKGc 著作权归作者所有。请勿转载和采集!