pytorch环境下进行模型测试总是报OOM(out of memory)的解决办法

问题描述:

  • 当模型训练好以后,进行测试或者线上部署模型时候,时长会遇到OOM(out of memory)的问题;
    在pytorch框架下进行模型训练时候,会进行梯度计算,生成计算图(大量的中间变量)以用于反向传播,计算图的生成会占用较大的显存,这时的梯度计算是不可或缺的;而在模型训练好以后,若只是想要得到一个测试结果,那么就无须再进行梯度计算,不然,若显存被大量占用,而又不能及时释放时,或者分配的量大于释放的量时,显存将会一点点或者一下子被消耗殆尽,然后发出异常(OOM)!
    在这里插入图片描述

那么,该如何解决呢?

  • 下面,就提供一种解决方法,亲测有效:
    在需要进行梯度计算的地方加上with torch.no_grad()函数,该函数的作用是取消计算图的生成,即无须再进行梯度计算用于返现传播,这将大大减少显存的占用,亦可使已分配的显存得到及时释放。具体使用如:
with torch.no_grad():
     ret = model(inputs)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值