colab 如何释放gpu显存?

文章讨论了如何释放Python中的内存,特别是当使用PyTorch时如何清空GPU缓存。通过将对象设为None并调用gc.collect()来管理Python内存,同时使用torch.cuda.empty_cache()处理PyTorch的GPU内存。在Jupyternotebook环境下,由于异常回溯可能导致内存泄漏,有时可能需要重启内核来彻底清理GPU内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)

obj = None

2)

import gc
gc.collect() # Python thing
# torch.cuda.empty_cache() # PyTorch thing
with torch.no_grad():
    torch.cuda.empty_cache()

参考资料:

如果您只是将使用大量内存的对象设置为None这样:

obj = None
之后你打电话

gc.collect() # Python thing
这是您可以避免重新启动笔记本电脑的方法。

如果您仍然希望从 Nvidea smi 或 nvtop 中清楚地看到它,您可以运行:

torch.cuda.empty_cache() # PyTorch thing
清空 PyTorch 缓存。

到目前为止,答案对于 Cuda 方面是正确的,但在 ipython 方面也存在问题。

当您在笔记本环境中遇到错误时,ipython shell 会存储异常的回溯,因此您可以使用 访问错误状态%debug。问题是这需要将导致错误的所有变量保存在内存中,并且它们不会被诸如gc.collect(). 基本上你所有的变量都会卡住并且内存泄漏。

通常,引发新异常会释放旧异常的状态。所以尝试类似的东西1/0可能会有所帮助。然而,使用 Cuda 变量时事情会变得很奇怪,有时不重启内核就无法清除 GPU 内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子燕若水

吹个大气球

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值