【问题标题】:Tensorflow Check failed: status == CUDNN_STATUS_SUCCESS (7 vs. 0)Failed to set cuDNN streamTensorflow 检查失败:status == CUDNN_STATUS_SUCCESS (7 vs. 0)Failed to set cuDNN stream
【发布时间】:2020-06-27 15:54:24
【问题描述】:

当我运行我的 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 版本,直到大约 3 天前它开始给我这个错误时,它一直没有问题。我的模型中还有以下回调,以便它在本地保存检查点和时期。请注意,我使用的是 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.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

【问题讨论】:

  • 您能否提供更多详细信息?尤其是您的 TensorFlow 版本是什么,您运行的是哪个操作系统,您的 GPU 详细信息以及您正在运行的理想代码(可重现的示例)。
  • PC 规格:Windows 8.1 GTX 1060 6GB Intel i7-4770 软件规格:Nvidia Geforce Experience Driver 451.81 CudNN 10.1(Windows 7 版本)Cuda 10.1.243 Conda Python 3.6.10 Tensorflow 2.2.0跨度>
  • 感谢您的更新。您确定使用 cuDNN 版本吗?没有10.1 版本,您应该在当前版本的TF 中使用7.6.5。您是否使用 Cuda (developer.nvidia.com/cuda-10.1-download-archive-update2) 的更新 2?我建议使用 Windows 8.1 版本,因为这是您的操作系统。
  • 对不起,我的意思显然是我使用的是支持 10.1 版本的 cuda 的 7.6.5 版本的 CuDNN。我的错。关于 Cuda 的更新 2,我实际上不确定,我想说不,因为我记得它,但我的 nvcc --version 给了我以下信息:nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005 -2019 NVIDIA Corporation 基于 Sun_Jul_28_19:12:52_Pacific_Daylight_Time_ Cuda 编译工具,版本 10.1,V10.1.243
  • @Nerxis 我已经解决了这个问题,查看帖子上的答案。

标签: python pandas machine-learning keras gpu


【解决方案1】:

所以我找到了错误的原因,您需要将您的 Nvidia 驱动程序降级到版本 431.36。以上所有使张量流以上述方式崩溃的一切。

【讨论】:

  • 您是如何设法降级的?我有几乎相同的 GPU(GTX 2070),但在降级时遇到了麻烦(回滚不起作用,我在 nvidia 驱动程序页面上找不到驱动程序版本)..
  • 我用的是一个叫DDU的程序
  • 谢谢!你知道为什么需要降级吗?似乎它也适用于我。但不知道为什么。
  • 随着新版本的 nvidias 驱动程序,LSTM 基本上变得有点不稳定。至于它的技术细节,那我真的不知道。
  • 我降级了我的驱动程序,然后我在其他代码 sn-ps 上遇到了其他问题..不是一个完美的解决方案
【解决方案2】:

对于仍然遇到此错误的任何人:不需要降级。只有这些行是:

physical_devices = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0], True)

【讨论】:

    【解决方案3】:

    我有类似的问题,并意识到这是由于我的张量流版本。 试试这个 sn-p。

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2018-10-23
      • 2016-03-28
      相关资源
      最近更新 更多