Py学习  »  Python

CUDA错误:内存不足-Python解释器使用所有GPU内存

arturkuchynski • 6 年前 • 1910 次点击  

即使在重新启动计算机后,仍有95%的已用GPU内存 python3 . 请注意,即使没有运行的训练脚本,内存消耗也会保持不变,而且我从未使用过 keras/tensorflow 在系统环境中,只有 venv

更新时间: 最后一个活动是使用以下配置执行NN测试脚本:

tensorflow==1.14.0 Keras==2.0.3

tf.autograph.set_verbosity(1)
session_conf = tf.ConfigProto(intra_op_parallelism_threads=8, inter_op_parallelism_threads=8)
tf.set_random_seed(1)
session_conf.gpu_options.allow_growth = True
sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)
K.set_session(sess)

$ nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.26       Driver Version: 440.26       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  GeForce GTX 105...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   53C    P3    N/A /  N/A |   3981MiB /  4042MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      4105      G   /usr/lib/xorg/Xorg                           145MiB |
|    0      4762      C   /usr/bin/python3                            3631MiB |
|    0      4764      G   /usr/bin/gnome-shell                          88MiB |
|    0      5344      G   ...quest-channel-token=8947774662807822104    61MiB |
|    0      6470      G   ...Charm-P/ch-0/191.6605.12/jre64/bin/java     5MiB |
|    0      7200      C   python                                        45MiB |
+-----------------------------------------------------------------------------+


nvidia-smi -r 但这并不能解决问题。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53320
文章 [ 1 ]  |  最新文章 6 年前
d_kennetz
Reply   •   1 楼
d_kennetz    6 年前

默认情况下,Tf为进程的生存期分配GPU内存,而不是为会话对象的生存期分配内存(因此内存可以比对象长得多)。这就是为什么在你停止程序后,记忆依然挥之不去。在很多情况下,使用 gpu_options.allow_growth = True

防止 tf.Session gpu_options.allow_growth=True 允许在运行时使用定义的内存部分(使用50%,因为您的程序似乎可以使用大量内存),如下所示:

session_conf.gpu_options.per_process_gpu_memory_fraction = 0.5