pytorch:运行时错误:CUDA内存不足。有足够的GPU内存
火炬错误:pytorch:运行时错误:CUDA内存不足。有足够的GPU内存,pytorch,Pytorch,火炬错误: RuntimeError: CUDA out of memory. Tried to allocate 392.00 MiB (GPU 0; 10.73 GiB total capacity; 9.47 GiB already allocated; 347.56 MiB free; 9.51 GiB reserved in total by PyTorch) 我通过nvidia smi检查了GPU资源,显示没有其他正在运行的进程和内存使用情况:10/10989MiB +------
RuntimeError: CUDA out of memory. Tried to allocate 392.00 MiB (GPU 0; 10.73 GiB total capacity; 9.47 GiB already allocated; 347.56 MiB free; 9.51 GiB reserved in total by PyTorch)
我通过nvidia smi检查了GPU资源,显示没有其他正在运行的进程和内存使用情况:10/10989MiB
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.56 Driver Version: 418.56 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... On | 00000000:04:00.0 Off | N/A |
| 22% 30C P8 10W / 230W | 10MiB / 10989MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
我尝试了以下三种方法:
所有这些都不起作用。我假设您已经检查了GPU分配,并发布了错误“CUDA内存不足”。还有torch.不,grad()与cuda内存无关。这取决于你定义和解决的问题
尝试使用
watch-n1 nvidia smi
监视cuda内存,如果您可以发布数据加载程序的代码和您的训练循环。所以,我们可以帮助你。但总体而言,减少批处理大小和分离不必要的张量可以改善这一点。显然,您的代码占用的内存比可用内存多。在另一个终端窗口中使用观看nvidia smi
,如下面的回答所示,可以确认这一点。至于什么会消耗内存,您需要查看代码。如果将批处理大小减小到非常小的值没有帮助,则可能是内存泄漏,如果需要更具体的帮助,则需要显示代码。我将代码添加到:中,这是一个重复项目。我从未遇到过这样的内存泄漏问题。非常感谢你的帮助!