6

我在 Windows 10 上的 GTX 1070 上运行 keras 神经网络训练和预测。大多数时候它都在工作,但有时它会抱怨

E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:359] could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:366] error retrieving driver version: Unimplemented: kernel reported driver version not implemented on Windows
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:326] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
F c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\kernels\conv_ops.cc:659] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)

它既不能用字面的错误含义来解释,也不能用 OOM 错误来解释。

怎么修?

4

6 回答 6

6

尝试使用 set gpu option per_process_gpu_memory_fraction 限制您的 gpu 使用。

摆弄它,看看什么有效,什么无效。

我建议使用 0.7 作为起始基线。

于 2017-08-01T20:46:09.840 回答
3

我有时在 Windows10 和 Keras 上遇到了这个问题。重启解决了很短时间的问题,但再次发生。

我参考https://github.com/fchollet/keras/issues/1538

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3
set_session(tf.Session(config=config))

设置解决了停机问题。

于 2017-08-10T13:05:06.483 回答
3

与其他人所说的类似,为 GPU 启用内存增长可以解决此问题。

通过添加到训练脚本的开头,以下内容对我有用:

# Using Tensorflow-2.4.x
import tensorflow as tf
try:
    tf_gpus = tf.config.list_physical_devices('GPU')
    for gpu in tf_gpus:
        tf.config.experimental.set_memory_growth(gpu, True)
except:
    pass 
于 2021-02-18T22:45:54.193 回答
3

得到了这个问题的解决方案。我在使用 Nvidia GEforce 920M 的 Windows 10 上遇到了同样的问题。搜索正确版本的 cudnn 库。如果版本与 CUDA 版本不兼容,则在安装 tensorflow 时不会抛出错误,但会在 GPU 中分配内存时产生干扰。请检查您的 CUDA 和 CUDNN 版本。还请按照上述有关创建会话的说明进行操作。

于 2018-03-24T18:50:20.737 回答
3

终于,这个问题现在已经为我解决了,我花了很多时间来解决这个问题。

我建议按照链接中提到的正确执行所有安装步骤

TensorFlow- https://www.tensorflow.org/install/install_windows

对于 CuDNN -

https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-windows

对我来说这还不够,我尝试从 GeForce Experience 窗口更新我的 GeForce Game Ready 驱动程序,重新启动后它开始为我工作。

GeForce 体验

该驱动程序也可以从链接下载https://www.geforce.com/drivers

于 2018-09-08T20:44:33.443 回答
0

tf doku 帮了我很多允许 GPU 内存增长

第一个是 allow_growth 选项,它尝试根据运行时分配只分配尽可能多的 GPU 内存:它开始分配非常少的内存,随着会话开始运行并且需要更多 GPU 内存,我们扩展了所需的 GPU 内存区域TensorFlow 过程。请注意,我们不会释放内存,因为这会导致更严重的内存碎片。要打开此选项,请通过以下方式在 ConfigProto 中设置该选项:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

或者

with tf.Session(graph=graph_node, config=config) as sess:
     ...

第二种方法是 per_process_gpu_memory_fraction 选项,它决定了每个可见 GPU 应该分配的内存总量的比例。例如,您可以通过以下方式告诉 TensorFlow 仅分配每个 GPU 总内存的 40%:

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, ...)
于 2017-10-21T15:48:10.780 回答