1
votes

"Impossible de créer un descripteur de cudnn: CUDNN_STATUS_ALLOC_FAILED" sur un projet qui devrait fonctionner immédiatement

https://github.com/zzh8829/yolov3-tf2 est le projet. J'ai installé toutes les versions correctes de ce qui me semble.

Google me dit qu'il s'agit probablement d'un problème de faible VRAM, mais je cherche toujours pour d'autres raisons. veuillez aider. J'utilise:

Windows 10 (ne dites pas "il y a votre problème" J'en ai besoin)

cuDNN 7.4.6

CUDA 10.0 p >

tensorflow 2.0.0

python 3.6

J'ai un gtx1660 super 6 Go de VRAM avec un ryzen 7 2700x sur 16 Go de RAM. Je reçois un gt1080 8gig dans quelques jours, je vais ajouter au deuxième slot PCI.

l'erreur est la suivante:

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]



p>


0 commentaires

4 Réponses :


1
votes

J'ai eu le même problème dans le même référentiel.

La solution qui a fonctionné pour moi et mon équipe a été de mettre à niveau cuDNN vers la version 7.5 ou supérieure (par opposition à votre 7.4).

Les instructions de mise à jour se trouvent sur le site de Nvidia:
https://docs.nvidia.com/deeplearning/sdk/cudnn- install / index.html


0 commentaires

1
votes

Cela peut se produire pour plusieurs raisons.

(1) Comme vous l'avez mentionné, il peut s'agir d'un problème de mémoire, que vous pouvez essayer de vérifier en allouant moins de mémoire au GPU et en voyant si cette erreur se produit toujours. Vous pouvez le faire dans TF 2.0 comme ceci ( 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(...)

Je vois que le code que vous exécutez définit la croissance dynamique de la mémoire si vous avez> 1 GPU ( https://github.com/zzh8829/yolov3 -tf2 / blob / master / train.py # L46-L47 ), mais comme vous n'avez qu'un seul GPU, il essaie probablement d'allouer toute la mémoire (> 90%) au début. p >

(2) Certains utilisateurs semblent en avoir fait l'expérience sous Windows alors que d'autres processus TensorFlow ou similaires utilisaient simultanément le GPU, soit par vous, soit par d'autres utilisateurs: https://stackoverflow.com/a/53707323/10993413

(3) Comme toujours , assurez-vous que vos variables PATH sont correctes. Parfois, si vous avez essayé plusieurs installations et que vous n'avez pas nettoyé les choses correctement, les PATH peuvent d'abord trouver la mauvaise version et causer un problème. Si vous ajoutez de nouveaux chemins au début de PATH, ils doivent être trouvés en premier: https: // www .tensorflow.org / install / gpu # windows_setup

(4) Comme mentionné par @xenotecc, vous pouvez essayer de passer à une version plus récente de CUDNN, bien que je Je ne suis pas sûr que cela vous aidera car votre configuration est répertoriée comme prise en charge sur les documents TF: https: // www.tensorflow.org/install/source#gpu . Si cela résout le problème, il peut s'agir d'un problème de PATH après tout, car vous allez probablement mettre à jour les PATH après l'installation de la nouvelle version.


1 commentaires

malheureusement ... gpu.config a été retiré et déplacé vers expérimental mais j'ai trouvé un autre moyen et je vais également convertir le code en pytorch ... J'ai utilisé ce code comme base pour mes apprentissages et joli beaucoup réécrit tout cela maintenant. Merci.



0
votes

J'ai eu la même erreur et résolu par ci-dessous:

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

(avec GTX 1660, mémoire 6G, tensorflow 2.0.1)


0 commentaires

0
votes

Solution simple: insérez cette ligne sous les importations dans "convert.py"

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

cela ignorera votre GPU lors du chargement des poids.


0 commentaires