Tensorflow检查失败:状态== CUDNN_STATUS_SUCCESS(7 vs.0)无法设置cuDNN流

时间:2020-06-27 15:54:24

标签: python pandas machine-learning keras gpu

当我运行我的tensorflow keras模型时,有时会在一段时间后停止并引发以下错误:

tensorflow/stream_executor/dnn.cc:613] CUDNN_STATUS_EXECUTION_FAILED
in tensorflow/stream_executor/cuda/cuda_dnn.cc(1867): 'cudnnRNNForwardTraining( cudnn.handle(), rnn_desc.handle(), model_dims.max_seq_length, input_desc.handles(), input_data.opaque(), input_h_desc.handle(), input_h_data.opaque(), input_c_desc.handle(), input_c_data.opaque(), rnn_desc.params_handle(), params.opaque(), output_desc.handles(), output_data->opaque(), output_h_desc.handle(), output_h_data->opaque(), output_c_desc.handle(), output_c_data->opaque(), workspace.opaque(), workspace.size(), reserve_space.opaque(), reserve_space.size())'
2020-06-27 17:19:45.741256: F tensorflow/stream_executor/cuda/cuda_dnn.cc:189] Check failed: status == CUDNN_STATUS_SUCCESS (7 vs. 0)Failed to set cuDNN stream.

我使用的是Tensorflow的GPU版本,直到大约三天前它开始给我这个错误时,它一直没有出现问题。我的模型中还包含以下回调,以便它在本地保存检查点和纪元。请注意,我正在使用Autokeras,因此为什么节点具有ak。库前缀。但是,它的作用与keras一样,只是在运行.fit函数时自动尝试查找最佳的超参数集。

input_node = ak.Input()
#output_node1 = ak.Normalization()(input_node)
output_node1 = ak.RNNBlock(return_sequences=True,
                           layer_type='lstm')(input_node)
output_node2 = ak.RNNBlock(return_sequences=True,
                           layer_type='lstm')(output_node1)
output_node3 = ak.RNNBlock(return_sequences=True,
                           layer_type='lstm')(output_node2)
output_node4 = ak.RNNBlock(layer_type='lstm')(output_node3)
output_node5 = ak.DenseBlock()(output_node4)
output_node = ak.Merge()(
    [output_node1, output_node2, output_node3, output_node4, output_node5])
output_nodefinal = ak.ClassificationHead()(output_node)

my_callbacks = [tf.keras.callbacks.EarlyStopping(patience=15, restore_best_weights=True, monitor="val_accuracy", mode="auto"),
                tf.keras.callbacks.ModelCheckpoint(filepath="D:\AutoKerasProject\TimeseriesCallbackModel\TimeseriesCallbackModel", save_weights_only=True, monitor='val_accuracy', mode='auto', save_best_only=True)]

classifier = ak.AutoModel(
    inputs=input_node, outputs=output_nodefinal, max_trials=500, directory="D:\AutoKerasProject\TimeseriesModel", overwrite=True)

我的PC和软件规格如下

PC Specs:
Windows 8.1
GTX 1060 6GB
Intel i7-4770

Software Specs:
Nvidia Geforce Experience Driver 451.81
CuDNN 7.6.5 (windows 7 version)
Cuda 10.1.243
Conda Python 3.6.10
Tensorflow 2.2.0

2 个答案:

答案 0 :(得分:1)

因此,我找到了导致错误的原因,您需要将Nvidia驱动程序降级到431.36版。以上所有使tensorflow崩溃的原因。

答案 1 :(得分:0)

我有类似的问题,并且意识到这是由于我的张量流版本引起的。 试试这个代码段。

import tensorflow.compat.v1 as tf

tf.disable_v2_behavior()  #disable for tensorFlow V2
physical_devices = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0], True)