【问题标题】:"Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED" on a project that should work out of the box“无法在应该开箱即用的项目上创建 cudnn 句柄:CUDNN_STATUS_ALLOC_FAILED”
【发布时间】:2019-11-30 14:00:06
【问题描述】:

https://github.com/zzh8829/yolov3-tf2 是项目。我已经安装了所有我认为正确的版本。

谷歌告诉我这可能是一个低 VRAM 问题,但我仍在四处寻找其他原因。请帮忙。 我正在使用:

Windows 10(不要说“有你的问题”我需要它)

cuDNN 7.4.6

CUDA 10.0

张量流 2.0.0

python 3.6

我有一个 gtx1660 超级 6GB VRAM 和 16GB RAM 上的 ryzen 7 2700x。几天后我将得到一个 gt1080 8gig,我将添加到第二个 PCI 插槽。

错误如下:

2019-11-30 06:31:26.167368: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll                                
2019-11-30 06:31:27.843742: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED                                      
2019-11-30 06:31:27.853725: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED                                      
Traceback (most recent call last):                                                                                                                                           
  File ".\convert.py", line 34, in <module>                                                                                                                                  
    app.run(main)                                                                                                                                                            
  File "C:\Program Files\Python36\lib\site-packages\absl\app.py", line 299, in run                                                                                           
    _run_main(main, args)                                                                                                                                                    
  File "C:\Program Files\Python36\lib\site-packages\absl\app.py", line 250, in _run_main                                                                                     
    sys.exit(main(argv))                                                                                                                                                     
  File ".\convert.py", line 25, in main                                                                                                                                      
    output = yolo(img)                                                                                                                                                       
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py", line 891, in __call__                                                
    outputs = self.call(cast_inputs, *args, **kwargs)                                                                                                                        
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\keras\engine\network.py", line 708, in call                                                       
    convert_kwargs_to_constants=base_layer_utils.call_context().saving)                                                                                                      
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\keras\engine\network.py", line 860, in _run_internal_graph                                        
    output_tensors = layer(computed_tensors, **kwargs)                                                                                                                       
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py", line 891, in __call__                                                
    outputs = self.call(cast_inputs, *args, **kwargs)                                                                                                                        
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\keras\engine\network.py", line 708, in call                                                       
    convert_kwargs_to_constants=base_layer_utils.call_context().saving)                                                                                                      
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\keras\engine\network.py", line 860, in _run_internal_graph                                        
    output_tensors = layer(computed_tensors, **kwargs)                                                                                                                       
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py", line 891, in __call__                                                
    outputs = self.call(cast_inputs, *args, **kwargs)                                                                                                                        
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\keras\layers\convolutional.py", line 197, in call                                                 
    outputs = self._convolution_op(inputs, self.kernel)                                                                                                                      
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\ops\nn_ops.py", line 1134, in __call__                                                            
    return self.conv_op(inp, filter)                                                                                                                                         
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\ops\nn_ops.py", line 639, in __call__                                                             
    return self.call(inp, filter)                                                                                                                                            
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\ops\nn_ops.py", line 238, in __call__                                                             
    name=self.name)                                                                                                                                                          
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\ops\nn_ops.py", line 2010, in conv2d                                                              
    name=name)                                                                                                                                                               
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\ops\gen_nn_ops.py", line 1031, in conv2d                                                          
    data_format=data_format, dilations=dilations, name=name, ctx=_ctx)                                                                                                       
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\ops\gen_nn_ops.py", line 1130, in conv2d_eager_fallback                                           
    ctx=_ctx, name=name)                                                                                                                                                     
  File "C:\Program Files\Python36\lib\site-packages\tensorflow_core\python\eager\execute.py", line 67, in quick_execute                                                      
    six.raise_from(core._status_to_exception(e.code, message), None)                                                                                                         
  File "<string>", line 3, in raise_from                                                                                                                                     
tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a wa
rning log message was printed above. [Op:Conv2D]



【问题讨论】:

    标签: python-3.x tensorflow yolo


    【解决方案1】:

    我在同一个存储库中遇到了同样的问题。

    对我和我的团队有效的解决方案是将 cuDNN 升级到 7.5 或更高版本(而不是您的 7.4)。

    可在 Nvidia 的网站上找到更新说明:
    https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html

    【讨论】:

      【解决方案2】:

      这可能有几个原因。

      (1) 正如您所提到的,这可能是一个内存问题,您可以尝试通过为 GPU 分配更少的内存并查看该错误是否仍然存在来进行验证。您可以像这样在 TF 2.0 中执行此操作 (https://github.com/tensorflow/tensorflow/issues/25138#issuecomment-484428798):

      import tensorflow as tf
      tf.config.gpu.set_per_process_memory_fraction(0.75)
      tf.config.gpu.set_per_process_memory_growth(True)
      
      # your model creation, etc.
      model = MyModel(...)
      

      如果您有 > 1 个 GPU (https://github.com/zzh8829/yolov3-tf2/blob/master/train.py#L46-L47),我看到您正在运行的代码会设置动态内存增长,但由于您只有 1 个 GPU,那么它可能只是试图分配所有内存 (>90%)一开始。

      (2) 当您或其他用户同时使用其他 TensorFlow 或类似进程时,一些用户似乎在 Windows 上遇到过这种情况:https://stackoverflow.com/a/53707323/10993413

      (3) 与往常一样,请确保您的 PATH 变量是正确的。有时,如果您尝试了多次安装并且没有正确清理内容,则 PATH 可能会首先找到错误的版本并导致问题。如果在 PATH 开头添加新路径,则应首先找到它们:https://www.tensorflow.org/install/gpu#windows_setup

      (4) 正如@xenotecc 所述,您可以尝试升级到较新版本的 CUDNN,但我不确定这是否会有所帮助,因为您的配置在 TF 文档中被列为支持: https://www.tensorflow.org/install/source#gpu。如果这确实解决了它,那么它可能毕竟是 PATH 问题,因为您可能会在安装较新版本后更新 PATH。

      【讨论】:

      • 不幸的是... gpu.config 被取出并移至实验性但我找到了另一种方法,我还将代码转换为 pytorch... 我一直在使用此代码作为我学习的基础,现在几乎重写了所有内容。谢谢。
      【解决方案3】:

      遇到同样的错误并通过以下方式解决:

      gpus = tf.config.experimental.list_physical_devices('GPU')
      tf.config.experimental.set_virtual_device_configuration(
                gpus[0], [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=5000)])
      

      (带GTX 1660,6G内存,tensorflow 2.0.1)

      【讨论】:

        【解决方案4】:

        简单修复: 在“convert.py”的导入下插入这一行

        import os
        os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
        

        这将在加载权重时忽略您的 gpu。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-02-01
          • 1970-01-01
          • 2017-08-26
          • 2019-09-24
          • 2020-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多