像许多其他人一样,我收到了一个Cuda的运行时错误,内存不足,但由于某种原因,pytorch保留了大量。
运行时错误:CUDA内存不足。尝试分配2.00 MiB(GPU 0;6.00 GiB总容量;已分配4.31 GiB;844.80 KiB可用;PyTorch总共保留4.71 GiB(
我试过torch.cuda.empy_cached((,但这也不起作用,其他cuda内存不足的帖子也没有帮助我。
当我在运行python程序之前检查了我的gpu使用情况(nvidia-smi(时,它是免费的。
从给定的描述来看,问题似乎不是Pytorch在执行前分配的内存,而是cuda在分配数据时耗尽了内存,这意味着4.31GB已经分配(未缓存(,但未能分配2MB的最后一个块。可能的解决方案对我来说已经奏效了,就是减少批量,希望能有所帮助!
您应该通过键入来查找进程
!ps -aux|grep python
然后当你发现这个过程时,你应该通过键入来杀死它
!kill -9 652
这将终止进程编号652。在你的情况下,这将是你想要摆脱的其他东西。
注意:记住,如果您杀死了一些不应该结束的进程,那么您必须重新开始您的代码。但这是最简单和手动的方法
另一个注意事项:或者,如果在成功清空gpu缓存后再次出现问题,您可以始终减小批处理大小。