如何解决““ RuntimeError:CUDA内存不足。”?有没有办法释放更多的内存?

时间:2019-12-11 03:49:41

标签: python tensorflow jupyter-notebook gpu

在这种情况下,我在VM上使用jupyter笔记本来训练某些CNN模型。 VM具有16v CPU和60GB内存。我刚刚购买了NVIDIA TESLA P4,以获得更好的性能。但是它总是会出现类似"RuntimeError: CUDA out of memory. Tried to allocate 196.00 MiB (GPU 0; 7.43 GiB total capacity; 2.20 GiB already allocated; 180.44 MiB free; 226.01 MiB cached)"

的错误

为什么会发生?系统很干净。我想知道为什么我只有很少的可用内存吗?

我认为GPU的设置没有错误

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   38C    P0    22W /  75W |      0MiB /  7611MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

1 个答案:

答案 0 :(得分:1)

当进程在GPU上分配内存时,该内存只能由该进程或在其终止时释放。如果您看到CUDA内存不足错误,但是没有其他运行,那么我建议使用nvtop之类的工具来确定谁占用了您的CUDA内存。看起来像这样:

enter image description here

在底部,您可以看到GPU内存和进程命令行。在上面的示例中,突出显示的绿色进程占用了GPU RAM的84%。您可以使用向上/向下箭头选择该过程,然后按F9键终止该过程。有时,当我运行训练脚本时,它们不会被终止,并且在此处显示它占用了CUDA内存。

注意:Ubuntu 18上涉及nvtop安装,但是您可以使用的其他工具是gpustat,仅显示pid。