pytorch--How to free CPU RAM after `module.to(cuda_device)`?

问题
How to free CPU RAM after module.to(cuda_device)?

大家在使用pytorch的时候,可能会发现一个问题,就是呢,我们使用module.to(cuda_device) 语句后,模型转到了gpu,显存增长了但是同样内存也增长了,一般不管网络多大,最少涨2G。我在lenet测试了,在maskrcnn-benchmark项目均测试过,效果都是这样子。

这里经过理解pytorch的原理发现,事实就是这样的,对,pytorch运行只要是使用cuda都会申请很大块的内存,并不会释放,我的猜测是因为pytorch是动态图网络,它的内部机制导致pytorch需要很多内存。但是由于pytorch自己内部管理机制,它又是很省内存和显存的,假设你需要跑两个模型,1个单独测试CPU损耗1.6G,GPU损耗500M,另一个单独测试CPU损耗2.0G,GPU损耗600M,你把这两个模型合在一个份代码,一起跑,你会发现惊奇的一幕,内存并不是按照1.6G+2.0G=3.6G的算法,而是可能只有2.0G,显存是1.1G。

Tips,在TX2上跑pytorch请不要拿PC上的资源占用去衡量,在TX系列内存和显存公用,合在一起跑,内存(显存)占用要比PC上内存+显存少很多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值