手电筒错误:
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 |
+-----------------------------------------------------------------------------+
我尝试了以下 3 种方法:
所有这些都不起作用。
答案 0 :(得分:0)
我假设您已经在错误“CUDA 内存不足”后检查了 GPU 分配。和 torch.no_grad() 与 cuda 内存没有任何关系。这取决于您定义和解决的问题。
尝试使用 watch -n1 nvidia-smi
监控 cuda 内存,如果您可以发布数据加载器和训练循环的代码。因此,我们可以为您提供帮助。但总的来说,减少批量大小和分离不必要的张量应该会改善这一点。