当我运行我的 Tensorflow Keras 模型时,有时会在一个周期后停止并抛出以下错误:
tensorflow/stream_executor/dnn.cc:613] CUDNN_STATUS_EXECUTION_FAILEDin 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 Specs:Windows 8.1GTX 1060 6GBIntel i7-4770Software Specs:Nvidia Geforce Experience Driver 451.81CuDNN 7.6.5 (windows 7 version)Cuda 10.1.243Conda Python 3.6.10Tensorflow 2.2.0
回答:
所以我找到了错误的原因,你需要将 Nvidia 驱动程序降级到版本 431.36。高于该版本的驱动程序会导致 Tensorflow 以上述方式崩溃。