Не удалось создать дескриптор cudnn: CUDNN_STATUS_ALLOC_FAILED в проекте, который должен работать "из коробки".

https://github.com/zzh8829/yolov3-tf2 — это проект. Я установил все правильные версии вещей, которые я думаю.

Google говорит мне, что это, вероятно, проблема с низким объемом VRAM, но я все еще ищу другие причины. пожалуйста помоги. Я использую :

Windows 10 (не говори "вот твоя проблема", мне это нужно)

cuDNN 7.4.6

КУДА 10.0

тензорный поток 2.0.0

питон 3.6

У меня gtx1660 super 6GB VRAM с ryzen 7 2700x на 16GB RAM. Получаю gt1080 8гиг на днях собираюсь добавить во второй слот 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]




person moop    schedule 30.11.2019    source источник


Ответы (4)


У меня была такая же проблема в том же репозитории.

Решение, которое сработало для меня и моей команды, состояло в том, чтобы обновить cuDNN до версии 7.5 или выше (в отличие от вашей версии 7.4).

Инструкции по обновлению можно найти на сайте Nvidia:
https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html

person sebastian-sz    schedule 01.12.2019

Это может произойти по нескольким причинам.

(1) Как вы упомянули, это может быть проблема с памятью, которую вы можете попытаться проверить, выделив меньше памяти для графического процессора и посмотрев, возникает ли эта ошибка по-прежнему. Вы можете сделать это в 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) Некоторые пользователи, похоже, сталкивались с этим в Windows, когда другие TensorFlow или аналогичные процессы одновременно использовали графический процессор, либо вами, либо другими пользователями: 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 после установки более новой версии.

person Ryan McCormick    schedule 02.12.2019
comment
к сожалению... gpu.config был удален и перемещен в экспериментальный, но я нашел другой способ, и я также собираюсь преобразовать код в pytorch... Я использовал этот код в качестве основы для своих исследований и довольно сильно переписал все это сейчас. Спасибо. - person moop; 05.12.2019

Получил ту же ошибку и решил ее ниже:

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, тензорный поток 2.0.1)

person Leon    schedule 05.02.2020

Простое исправление: вставьте эту строку под импортом в «convert.py».

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

это будет игнорировать ваш графический процессор при загрузке весов.

person LC117    schedule 19.02.2020