【发布时间】:2019-04-05 06:17:02
【问题描述】:
我正在使用 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 GB之前时钟速度会下降到 0 MHz(低功耗状态)。
【问题讨论】:
-
您的笔记本电脑可能具有内置的英特尔图形适配器以及 NVidia。我猜 Windows 在看到很少活动时会错误地禁用/切换到英特尔。您可以尝试进入 NVidia 控制面板并告诉它始终在 960M 下运行您的应用程序。
-
@bivouac0 我尝试通过 NVIDIA 控制面板将我的环境的“python.exe”文件设置为仅在专用 GPU 上运行,但我的 GPU 仍然死机。
-
您可以尝试在 BIOS 中禁用板载 GPU(如果有选项)或在设备管理器中卸载 Intel 驱动程序。对于您可以尝试的所有程序,还有“高性能状态”。这些可能不是正确的长期解决方案,但它们会告诉您问题是否在于 Windows 切换 GPU。
-
@bivouac0 我尝试禁用英特尔驱动程序,但没有成功。如何尝试高性能状态?
-
在 NVidia 控制面板中,第一个选项卡用于“所有”程序。下拉菜单可能设置为“自动”,但您可以将其设置为 NVidia/高性能。无论如何,应该有一种方法可以将您的笔记本电脑设置为仅使用 NVidia。我自己没有这样做,但你应该可以用谷歌搜索它。
标签: python tensorflow keras nvidia