Closed hccz95 closed 2 years ago
你有该改过代码吗?比如把某些变量值保存了下来
你有该改过代码吗?比如把某些变量值保存了下来
我没有做任何修改。后来我进行了一些尝试,发现在rollout.py
的61行前面加上with torch.no_grad():
之后,就不存在内存泄漏问题了。但是不知道怎么解释
这里的action是一个tensor,所以还包含了梯度等其他信息;可能你的机器还没来得及把之前的action占用的空间删掉,这样累计下来就会超过你的内存了
这不是内存泄漏,而是在rollout的时候pytorch在计算梯度信息,占用了额外内存,而no_grad省去内存以后内存正好够用。rollout函数里没有反向传播,所以建议在generate_episode前加上一个@torch.no_grad()装饰器。
在运行COMA算法时,我发现
runner.py
的44行,调用self.rolloutWorker.generate_episode(episode_idx)
时貌似造成了内存泄漏,导致整个程序的内存占用不断增加,最终消耗所有内存