如何在PyTorch CUDA(Colab环境)中释放GPU内存?
解决Colab中PyTorch CUDA GPU内存无法释放的问题
以下是几种实用的显存释放方案,按优先级排序:
手动清理张量与CUDA缓存
及时删除不再使用的张量,再调用缓存清理函数释放显存:import torch # 删除无用张量(解除变量引用) del large_tensor, unused_model_output # 强制清理CUDA未使用的缓存 torch.cuda.empty_cache()注意:del只是移除变量对张量的引用,需等待Python垃圾回收器回收张量后,empty_cache()才能真正释放显存
用
torch.no_grad()隔离无梯度操作
推理或验证阶段禁用梯度计算,既减少显存占用,也能加速资源释放:with torch.no_grad(): # 模型推理/验证代码 predictions = model(test_inputs)离开上下文后,相关临时张量会被自动回收,无需手动删除。
清理残留的模型与优化器实例
多次重新定义模型时,旧实例可能仍占用显存,重新初始化前务必清理:# 清理旧模型和优化器 if 'model' in locals(): del model if 'optimizer' in locals(): del optimizer torch.cuda.empty_cache() # 重新初始化 model = YourCustomModel().to('cuda') optimizer = torch.optim.SGD(model.parameters(), lr=0.01)限制张量作用域
避免用全局变量持有大张量,尽量将张量放在函数局部作用域内,函数执行完毕后局部变量会被自动回收,减少显存残留。重启Colab运行时
如果上述方法都无效,直接通过顶部菜单「Runtime → Restart runtime」重启运行时,这能彻底清空所有显存占用,但操作前请保存好未备份的代码和结果。
内容的提问来源于stack exchange,提问作者Maryam
相关产品推荐
相关产品推荐

