해결된 질문
작성
·
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 은 뭔가 잘 안돤걸로 조심스레 의심해 봅니다
어렵지만 아래 링크로 다시 설치 시도해 보시는건 어떨지요
그리고 코랩 환경이 있으니 너무 윈도우에서 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
1
안녕하십니까,
Successfully opened dynamic library cudnn64_7.dll 메시지로 봐서는 cudnn 라이브러리와 연동이 되는 것 같습니다만,
SSD, Yolo 다 되었는데, Keras Retinanet 패키지를 사용하여 Retinanet 만 안되시는 건지요?
그리고 오류 메시지를 캡처하지 마시고 일단 다 텍스트 형식으로 여기에 올려 주시겠습니까?
nvidia-smi 결과는 캡쳐로 부탁드립니다.
감사합니다.
0
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
===================================================
제가 검색하면서 이것 저것 한 것 같습니다.
한번 더 답변을 부탁드립니다.