如何在PyTorch中为特定张量释放GPU内存?(转)

我目前正在使用PyTorch运行深度学习程序,并希望为特定张量释放GPU内存。

我想到了del和torch.cuda.empty_cache()之类的方法,但是del似乎无法正常工作(我什至不确定是否完全释放了内存),并且torch.cuda.empty_cache()似乎可以释放所有未使用的内存 ,但是我只想释放特定张量的内存。

PyTorch中有提供此功能的功能吗?

del运算符可以工作,但是您不会看到所使用的GPU内存减少,因为该内存未返回到cuda设备。这是一种优化技术,从用户的角度来看,内存已被"释放"。即,该存储器现在可用于制作新的张量。

有什么方法可以释放内存并将其返回给设备?

如果以后要执行自动微分,PyTorch会将张量存储在计算图中(如果使用requires_grad = True进行了初始化)。如果您不想再使用特定的张量进行梯度计算,则可以使用detach方法告诉PyTorch它不再需要存储该张量的值用于梯度计算。这将有助于释放一些内存(仅删除该特定张量而不删除整个计算图)。

例如-my_tensor.detach()

obj = None或del obj都相似,除了del将删除引用。

但是,您需要调用gc.collect()来释放Python内存,而无需重新启动笔记本计算机。

如果您想从PyTorch缓存中清除obj,请运行:

torch.cuda.empty_cache()

在执行最后一条命令后,Nvidea smi或nvtop将注意到您的操作。

原文:原文网址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值