인프런 커뮤니티 질문&답변

안준우님의 프로필 이미지
안준우

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

cuDNN 초기화 실패

해결된 질문

작성

·

4K

0

안녕하십니까! 

강의 너무 잘 듣고 있습니다. 감사드립니다.

Keras-Retinanet 을 실습하고 있습니다.

* 개발환경은 노트북이며 윈도우10 입니다.(GPU 2개)

먼저 그래픽카드는 Nvidia GeForce GTX 1660 Ti 이며 드라이버를 설치하였습니다.

cuda는 10.0을 설치하고 cudnn은 7.4를 설치하였습니다.

(검색하니 tensorfolw 1.15에 가장 적합한 버전이라고 해서)

그리고 anaconda를 설치하고 tf115의 가상환경을 설정하였습니다.

jupyter notebook을 통해 소스를 실행하며 GPU 사용하는 곳(예측)에서 아래와 같이 오류가 발생합니다.

jupyter notebook console에서는 아래와 같은 메세지가 출력됩니다.

===================

질문 올리기 전에 몇가지 시도를 해 봤습니다.

- nvidia, cuda, cudnn 모두 삭제 하고 다시 설치

- window 포맷하고 다시 설치

- cuda/cudnn 버전 변경해 보기

- anaconda 삭제 하고 python, pip 로 구동해 보기

- gpu가 2개 여서 문제인가 싶어서 아래 코드 적용

os.environ["CUDA_VISIBLE_DEVICES"]='1' 

참고로 아래 코드를 실행하면

import os

import tensorflow as tf

import keras

print(tf.__version__)

print(keras.__version__)

아래와 같이 console에 출력되는데

잘은 모르겠지만 'Successfully opened dynamic library cudnn64_7.dll'와 같은 메세지는 나옵니다.

질문이 두서가 없어 죄송합니다.

답변 부탁드립니다.

답변 9

1

권 철민님의 프로필 이미지
권 철민
지식공유자

일단 anaconda로 cudnn 은 뭔가 잘 안돤걸로 조심스레 의심해 봅니다

어렵지만 아래 링크로 다시 설치 시도해 보시는건 어떨지요

https://medium.com/@sunnydhoke22/how-to-install-cuda-10-and-cudnn-for-tensorflow-gpu-on-windows-10-414c10eabc96

그리고 코랩 환경이 있으니 너무 윈도우에서 gpu cuda cudnn 설치하느라 시간을 소비하지 않으셨으면 합니다  윈도우 cuda cudnn 은 원래 설치가 악명높습니다

1

권 철민님의 프로필 이미지
권 철민
지식공유자

음, 그럼, cuda와 cudnn 문제인것 같습니다.

원래 nvidia-smi의 cuda 버전과 nvcc -V 버전이 그렇게 크게 차이가 나지는 않습니다만, 실제로는 CUDA 10이 깔려있는데, 이를 잘 인식하지 못하거나, 다른 버전으로 인식하는것 같습니다.

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 으로 CUDNN 버전도 다시 확인 부탁드립니다.

그리고 CUDA는 Anaconda로 설치하신 건가요? 아님 다른 방식으로 설치하신 건가요?

 

1

권 철민님의 프로필 이미지
권 철민
지식공유자

conda로 cuda driver 설치가 제대로 안된것 같습니다만,  nvcc -V 로 수행해서 cuda version 다시한번 부탁드립니다.

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

Successfully opened dynamic library cudnn64_7.dll 메시지로 봐서는 cudnn 라이브러리와 연동이 되는 것 같습니다만,

SSD, Yolo 다 되었는데, Keras Retinanet 패키지를 사용하여 Retinanet 만 안되시는 건지요?

그리고 오류 메시지를 캡처하지 마시고 일단 다 텍스트 형식으로 여기에 올려 주시겠습니까?

nvidia-smi 결과는 캡쳐로 부탁드립니다.

감사합니다.

0

안준우님의 프로필 이미지
안준우
질문자

여러번 시도했으나 노트북(윈도우10)은 실패 했습니다.

도와 주셔서 감사합니다.

0

안준우님의 프로필 이미지
안준우
질문자

답변주셔서 감사합니다.

Retinanet 기준으로 코랩으로 구현(예측, 학습)하였고 다른 Dataset으로 학습과 예측도 성공하였습니다.

학습Dataset의 양을 늘리니 코랩에서 GPU 사용을 제한을 해서 윈도우로 재시도해 보았습니다.

위의 링크로 재설치해서 결과를 올리도록 하겠습니다.

0

안준우님의 프로필 이미지
안준우
질문자

윈도우라서 위의 명령은 불가 합니다.

탐색기에서 파일을 찾아보았습니다.

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include\cudnn.h

grep의 -A 2 의 정확한 의미를 몰라 파일 내의 CUDNN_MAJOR를 검색 했습니다.

57라인 : #define CUDNN_MAJOR 7

61라인 : #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

2개가 검색되었습니다.

=========================================

cuda는 아래 링크에서 다운 받아서 설치하였습니다.

https://developer.nvidia.com/cuda-toolkit-archive

=> cuda_10.0.130_411.31_win10.exe

cudnn은 아래 링크에서 다운 받고 압축 풀고 파일을 복사-붙여넣기 하였습니다.

https://developer.nvidia.com/rdp/cudnn-archive

cudnn-10.0-windows10-x64-v7.4.2.24.zip

경로 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\

그리고 anaconda 설치 하고

소스 실행 후 어떤 오류가 발생했는데(정확히 기억나지 않고 기록대 두지 않았습니다) 검색을 한 후

아래의 명령어를 anaconda prompt에서 실행했습니다.

conda install -c anaconda cudatoolkit

conda install -c anaconda cudnn

0

안준우님의 프로필 이미지
안준우
질문자

(base) C:\Users\dev_u>nvcc -V

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2018 NVIDIA Corporation

Built on Sat_Aug_25_21:08:04_Central_Daylight_Time_2018

Cuda compilation tools, release 10.0, V10.0.130

================================

위와 같이 나옵니다.

yolo3도 급히 환경 설정(tf113)해서 실행해 보았습니다. 

동일한 현상인 것 같습니다.

---------------------------------------------------------------------------
UnknownError                              Traceback (most recent call last)
D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
   1333     try:
-> 1334       return fn(*args)
   1335     except errors.OpError as e:

D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\client\session.py in _run_fn(feed_dict, fetch_list, target_list, options, run_metadata)
   1318       return self._call_tf_sessionrun(
-> 1319           options, feed_dict, fetch_list, target_list, run_metadata)
   1320 

D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\client\session.py in _call_tf_sessionrun(self, options, feed_dict, fetch_list, target_list, run_metadata)
   1406         self._session, options, feed_dict, fetch_list, target_list,
-> 1407         run_metadata)
   1408 

UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
	 [[{{node conv2d_1/convolution}}]]
	 [[{{node boolean_mask_120/GatherV2}}]]

During handling of the above exception, another exception occurred:

UnknownError                              Traceback (most recent call last)
<ipython-input-7-e27120990c5d> in <module>
      1 img = Image.open(os.path.join('../data/image/beatles01.jpg'))
----> 2 detected_img = yolo.detect_image(img)
      3 
      4 plt.figure(figsize=(12, 12))
      5 plt.imshow(detected_img)

D:\01.dev\jupyter\tf113\yolo3\keras-yolo3\yolo.py in detect_image(self, image)
    122                 self.yolo_model.input: image_data,
    123                 self.input_image_shape: [image.size[1], image.size[0]],
--> 124                 K.learning_phase(): 0
    125             })
    126 

D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata)
    927     try:
    928       result = self._run(None, fetches, feed_dict, options_ptr,
--> 929                          run_metadata_ptr)
    930       if run_metadata:
    931         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
   1150     if final_fetches or final_targets or (handle and feed_dict_tensor):
   1151       results = self._do_run(handle, final_targets, final_fetches,
-> 1152                              feed_dict_tensor, options, run_metadata)
   1153     else:
   1154       results = []

D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\client\session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
   1326     if handle is None:
   1327       return self._do_call(_run_fn, feeds, fetches, targets, options,
-> 1328                            run_metadata)
   1329     else:
   1330       return self._do_call(_prun_fn, handle, feeds, fetches)

D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
   1346           pass
   1347       message = error_interpolation.interpolate(message, self._graph)
-> 1348       raise type(e)(node_def, op, message)
   1349 
   1350   def _extend_graph(self):

UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
	 [[node conv2d_1/convolution (defined at D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\backend\tensorflow_backend.py:3565) ]]
	 [[node boolean_mask_120/GatherV2 (defined at D:\01.dev\jupyter\tf113\yolo3\keras-yolo3\yolo3\model.py:215) ]]

Caused by op 'conv2d_1/convolution', defined at:
  File "D:\01.dev\anaconda3\envs\tf113\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "D:\01.dev\anaconda3\envs\tf113\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\ipykernel_launcher.py", line 16, in <module>
    app.launch_new_instance()
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\traitlets\config\application.py", line 664, in launch_instance
    app.start()
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\ipykernel\kernelapp.py", line 612, in start
    self.io_loop.start()
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\platform\asyncio.py", line 199, in start
    self.asyncio_loop.run_forever()
  File "D:\01.dev\anaconda3\envs\tf113\lib\asyncio\base_events.py", line 442, in run_forever
    self._run_once()
  File "D:\01.dev\anaconda3\envs\tf113\lib\asyncio\base_events.py", line 1462, in _run_once
    handle._run()
  File "D:\01.dev\anaconda3\envs\tf113\lib\asyncio\events.py", line 145, in _run
    self._callback(*self._args)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\ioloop.py", line 688, in <lambda>
    lambda f: self._run_callback(functools.partial(callback, future))
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\ioloop.py", line 741, in _run_callback
    ret = callback()
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 814, in inner
    self.ctx_run(self.run)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 162, in _fake_ctx_run
    return f(*args, **kw)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 775, in run
    yielded = self.gen.send(value)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\ipykernel\kernelbase.py", line 365, in process_one
    yield gen.maybe_future(dispatch(*args))
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 234, in wrapper
    yielded = ctx_run(next, result)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 162, in _fake_ctx_run
    return f(*args, **kw)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\ipykernel\kernelbase.py", line 268, in dispatch_shell
    yield gen.maybe_future(handler(stream, idents, msg))
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 234, in wrapper
    yielded = ctx_run(next, result)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 162, in _fake_ctx_run
    return f(*args, **kw)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\ipykernel\kernelbase.py", line 545, in execute_request
    user_expressions, allow_stdin,
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 234, in wrapper
    yielded = ctx_run(next, result)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tornado\gen.py", line 162, in _fake_ctx_run
    return f(*args, **kw)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\ipykernel\ipkernel.py", line 306, in do_execute
    res = shell.run_cell(code, store_history=store_history, silent=silent)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\ipykernel\zmqshell.py", line 536, in run_cell
    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\IPython\core\interactiveshell.py", line 2867, in run_cell
    raw_cell, store_history, silent, shell_futures)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\IPython\core\interactiveshell.py", line 2895, in _run_cell
    return runner(coro)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\IPython\core\async_helpers.py", line 68, in _pseudo_sync_runner
    coro.send(None)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\IPython\core\interactiveshell.py", line 3072, in run_cell_async
    interactivity=interactivity, compiler=compiler, result=result)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\IPython\core\interactiveshell.py", line 3263, in run_ast_nodes
    if (await self.run_code(code, result,  async_=asy)):
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\IPython\core\interactiveshell.py", line 3343, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-4-2190752deb3b>", line 11, in <module>
    classes_path='D:/01.dev/jupyter/tf113/yolo3/keras-yolo3/model_data/coco_classes.txt')
  File "D:\01.dev\jupyter\tf113\yolo3\keras-yolo3\yolo.py", line 45, in __init__
    self.boxes, self.scores, self.classes = self.generate()
  File "D:\01.dev\jupyter\tf113\yolo3\keras-yolo3\yolo.py", line 70, in generate
    self.yolo_model = load_model(model_path, compile=False)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\engine\saving.py", line 260, in load_model
    model = model_from_config(model_config, custom_objects=custom_objects)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\engine\saving.py", line 334, in model_from_config
    return deserialize(config, custom_objects=custom_objects)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\layers\__init__.py", line 55, in deserialize
    printable_module_name='layer')
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\utils\generic_utils.py", line 145, in deserialize_keras_object
    list(custom_objects.items())))
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\engine\network.py", line 1027, in from_config
    process_node(layer, node_data)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\engine\network.py", line 986, in process_node
    layer(unpack_singleton(input_tensors), **kwargs)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\engine\base_layer.py", line 457, in __call__
    output = self.call(inputs, **kwargs)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\layers\convolutional.py", line 168, in call
    dilation_rate=self.dilation_rate)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\backend\tensorflow_backend.py", line 3565, in conv2d
    data_format=tf_data_format)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 851, in convolution
    return op(input, filter)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 966, in __call__
    return self.conv_op(inp, filter)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 591, in __call__
    return self.call(inp, filter)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 208, in __call__
    name=self.name)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py", line 1113, in conv2d
    data_format=data_format, dilations=dilations, name=name)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 788, in _apply_op_helper
    op_def=op_def)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\util\deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\framework\ops.py", line 3300, in create_op
    op_def=op_def)
  File "D:\01.dev\anaconda3\envs\tf113\lib\site-packages\tensorflow\python\framework\ops.py", line 1801, in __init__
    self._traceback = tf_stack.extract_stack()

UnknownError (see above for traceback): Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
	 [[node conv2d_1/convolution (defined at D:\01.dev\anaconda3\envs\tf113\lib\site-packages\keras\backend\tensorflow_backend.py:3565) ]]
	 [[node boolean_mask_120/GatherV2 (defined at D:\01.dev\jupyter\tf113\yolo3\keras-yolo3\yolo3\model.py:215) ]]

2020-12-22 20:06:09.452864: E tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED

2020-12-22 20:06:09.459517: E tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED

부탁드립니다.

0

안준우님의 프로필 이미지
안준우
질문자

먼저 빠르게 답변 주셔서 감사합니다.

SSD, Yolo는 다른 PC에서 작업했습니다.

python과 pip로 개발환경 잡았고 SSD와 Yolo 예측까지는 성공했으나 학습에서 오류가 났습니다.

GPU memory 문제인것 같았고(좀 오래 된 데스크탑 입니다.) 그래서 지금 노트북으로 변경하고 예측율이 높은 Retinanet을 시도했습니다.

SSD와 Yolo도 개발 환경 잡고 결과 나오는대로 올리도록 하겠습니다.

================================================================

---------------------------------------------------------------------------
UnknownError                              Traceback (most recent call last)
<ipython-input-9-6b5be39e958c> in <module>
     15 # 이미지에 대해 Object Detection 수행.
     16 start = time.time()
---> 17 boxes, scores, labels = retina_model.predict_on_batch(np.expand_dims(image, axis=0))
     18 print(boxes.shape, scores.shape, labels.shape)
     19 print("processing time: ", time.time() - start)

D:\01.dev\anaconda3\envs\tf115\lib\site-packages\keras\engine\training.py in predict_on_batch(self, x)
   1578             ins = x
   1579         self._make_predict_function()
-> 1580         outputs = self.predict_function(ins)
   1581         return unpack_singleton(outputs)
   1582 

D:\01.dev\anaconda3\envs\tf115\lib\site-packages\tensorflow_core\python\keras\backend.py in __call__(self, inputs)
   3474 
   3475     fetched = self._callable_fn(*array_vals,
-> 3476                                 run_metadata=self.run_metadata)
   3477     self._call_fetch_callbacks(fetched[-len(self._fetches):])
   3478     output_structure = nest.pack_sequence_as(

D:\01.dev\anaconda3\envs\tf115\lib\site-packages\tensorflow_core\python\client\session.py in __call__(self, *args, **kwargs)
   1470         ret = tf_session.TF_SessionRunCallable(self._session._session,
   1471                                                self._handle, args,
-> 1472                                                run_metadata_ptr)
   1473         if run_metadata:
   1474           proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

UnknownError: 2 root error(s) found.
  (0) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
	 [[{{node conv1/convolution}}]]
	 [[filtered_detections/map/while/Switch_4/_1879]]
  (1) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
	 [[{{node conv1/convolution}}]]
0 successful operations.
0 derived errors ignored.

===========================================================================================

2020-12-22 19:11:15.063791: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED 2020-12-22 19:11:15.069983: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED

==============================================================================================


CUDA Version이 11.2로 나오네요..

=============================================================================

from tensorflow.python.platform import build_info as tf_build_info print(tf_build_info.cuda_version_number) print(tf_build_info.cudnn_version_number) 10.0 7

=> 이건 10.0으로 나옵니다.

============================================================================

음.. 이건 10.2.89로 나오네요.

=============================

제가 nvidia 드라이버 설치하고
cuda는 10.0을 설치하고 cudnn은 7.4를 설치했습니다.

그리고 anaconda를 설치하고 ... 실행했는데 오류가 발생해서 검색을 좀 한후
아래의 명령어를 anaconda prompt에서 실행했습니다.

conda install -c anaconda cudatoolkit
conda install -c anaconda cudnn

===================================================
제가 검색하면서 이것 저것 한 것 같습니다.

한번 더 답변을 부탁드립니다.
안준우님의 프로필 이미지
안준우

작성한 질문수

질문하기