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上内存+显存少很多。

相关文章:

  • 2021-04-03
  • 2021-07-07
  • 2022-02-11
  • 2022-12-23
  • 2022-12-23
  • 2021-12-29
  • 2021-04-22
  • 2021-10-23
猜你喜欢
  • 2022-12-23
  • 2021-10-01
  • 2021-11-09
  • 2022-12-23
  • 2021-12-10
  • 2021-12-22
  • 2021-08-22
相关资源
相似解决方案