记录pytorch内存爆炸的问题

问题与解决

开始训练之后内存就开始一直涨,server上60g都不够用肯定是代码的问题了
后来查看进程被kill的原因是OOM(Out of Memory)

  1. loss.item()
    这个问题基本上大家都说过了,但是我 T_T 一开始只在training中使用了running_loss += loss.item(),忘了在validation部分加 .item()导致内存一直涨,后来检查的时候才发现
  1. 数据转换(list转 torch.tensor
    上面的问题解决了之后不会爆内存了,但是还是会缓慢增长
    虽然想着有增有减是正常的,还是检查了一下dataloading的有没有问题
    __getitem__ 类中我把list转成 torch.tensor。我没有手动设置dtype,默认的转换会把float类型的list转成 FloatTensor (float32),把int类型的list转成 LongTensor (int64),但我只需要int32就够了
    参考这篇 https://zhuanlan.zhihu.com/p/86286137

关于如何追内存

https://blog.csdn.net/rocking_struggling/article/details/108963606

我用了 import psutil 包for CPU.
GPU 用 import pynvml

  • memory_profiler据说也很好用但是我还没试
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值