python - 运行 Keras/tensorflow-gpu 时 GPU 崩溃,特别是当时钟速度以 0 MHz 空闲时

标签 python tensorflow keras nvidia

我正在使用 Jupyter Notebook 和 Tensorflow GPU 后端运行 Keras。我使用各种虚拟模型进行了一些测试,同时使用 MSI Afterburner、GPU-Z、nvidia-smi 和任务管理器监控我的 GPU 使用情况。我的 GPU 是 GeForce GTX 960M,运行游戏没有问题。运行 Keras 时温度也很低。

我注意到 Keras 一开始运行良好(例如加载或训练模型),但每当 Keras 不运行任何东西时,GPU 自然会想要从 1097 MHz 空闲到 0 MHz,并且一旦它是不是GPU崩溃了。我可以在 NVSMI 上看到“GPU 丢失”。然后,我必须在设备管理器中禁用并重新启用 GPU 才能使其正常工作。

有人知道为什么会发生这种情况吗?

编辑:我可以通过使用“allow_growth”功能暂时防止非常小的程序发生这种情况,如下所示:

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
set_session(sess)

但是,这仅在操作非常小(例如加载模型或运行非常小的模型)仅使用大约 0.1 GB 的 GPU 内存的情况下才有效。但是,如果程序使用的内存甚至是 0.3 GB,我的 GPU 就会崩溃,因为在时钟速度降至 0 MHz(较低功耗状态)之前内存不会达到 0 GB。

最佳答案

感谢另一个论坛的某人,我终于能够解决这个问题。这是一个驱动程序问题。与我的笔记本电脑制造商提供的旧驱动程序不同,Nvidia 提供的最新驱动程序导致了该问题。

由于我无法使用旧驱动程序运行 TensorFlow 并进行更多故障排除,因此我所做的就是下载 eDrawings Viewer 并打开我在网上找到的一些随机装配图。首先,我尝试使用最新的 Nvidia 驱动程序,我发现当我操作模型时,我的卡处于 P0 状态,但如果我不执行任何操作并让软件空闲,我的卡就会进入较低功耗状态并导致我的卡崩溃。图形处理器。但是,当我使用华硕制造商认证的驱动程序进行相同的练习时(因为该软件甚至与 TF 不同的旧驱动程序兼容),我的 GPU 没有崩溃。

我还发现,如果我进入 Nvidia 控制面板并在电源管理模式下选择“首选最高性能”,即使使用最新的 Nvidia 驱动程序,eDrawings Viewer 也不会崩溃。每当我打开软件时,即使闲置了几分钟,卡也会保持在 P0 状态。不幸的是,由于 python.exe 没有图形界面,因此此选项不适用于我的情况。作为解决方法,我仍然可以通过在后台运行 eDrawings Viewer(或者任何使用图形界面的程序)来运行 TensorFlow,而不会使其崩溃,这使我的卡保持在 P0 状态。

关于python - 运行 Keras/tensorflow-gpu 时 GPU 崩溃,特别是当时钟速度以 0 MHz 空闲时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53094238/

相关文章:

python - OpenCV DNN因keras DenseNet121而失败

python - 使用 pytables 构造巨大的 numpy 数组

python - 可以简化或更好地编写此 Python 程序吗?

python - 如何对相邻元组/列表求和

python - Flask-RESTful 项目结构

python - 如何将列表转换为 numpy 数组

tensorflow - Keras:为什么显示所有批处理都已完成时,整个 epoch 需要更长的时间?

python - U-net 低对比度测试图像,预测输出为灰框

python - 为什么tensorflow.decode_base64会因无效字符而失败,但base64.b64decode(image_base64)却成功

python - Keras模型训练内存泄漏