haven-jeon / PyKoSpacing

Automatic Korean word spacing with Python
GNU General Public License v3.0
397 stars 118 forks source link

[PyKoSpacing=0.5] cuDNN 초기화 에러 #28

Closed dhkim2810 closed 2 years ago

dhkim2810 commented 2 years ago

안녕하세요, 구글 코랩에서 실행하는데 어려움이 있습니다. [ [LINK ]

`--------------------------------------------------------------------------- UnknownError Traceback (most recent call last)

in () 1 from pykospacing import Spacing 2 spacing = Spacing() ----> 3 spacing("김형호영화시장분석가는'1987'의네이버영화정보네티즌10점평에서언급된단어들을지난해12월27일부터올해1월10일까지통계프로그램R과KoNLP패키지로텍스트마이닝하여분석했다.") 7 frames /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name) 58 ctx.ensure_initialized() 59 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, ---> 60 inputs, attrs, num_outputs) 61 except core._NotOkStatusException as e: 62 if name is not None: 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 model_1/conv1d_1/conv1d (defined at /usr/local/lib/python3.7/dist-packages/pykospacing/kospacing.py:40) ]] [Op:__inference_predict_function_1340] Function call stack: predict_function` 조금 찾아보니 cuDNN gpu가 정상적으로 초기화되지 않았을때 발생하는 문제라고 해서 다음과 같이 초기화를 진행했습니다. `gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: try: # Currently, memory growth needs to be the same across GPUs for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) logical_gpus = tf.config.experimental.list_logical_devices('GPU') print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") except RuntimeError as e: # Memory growth must be set before GPUs have been initialized print(e)` 그래도 같은 에러가 발생합니다.
haven-jeon commented 2 years ago

혹시 아래 warning이 단초가 되지 않을까요?

image

dhkim2810 commented 2 years ago

세션은 다시 시작한 상태에서 실험했습니다. 세션 문제는 아닌것 같습니다.

haven-jeon commented 2 years ago

코드 제일 상단에 아래와 같은 부분을 실행 시키면 정상적으로 동작하는걸 확인 했습니다. 모델이 작고 배치로 돌리는 기능을 제공하지도 않아서 GPU용으로 돌려도 큰 이득이 없는데, CPU만으로 돌리시는건 어떤지요?

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

코랩의 cudnn이나 드라이버가 설치된 환경은 tensorflow-2.6.0 기준인거 같은데, pykospacing은 2.5.1에서 동작이 보장되어 있습니다. 아무래도 GPU 버전으로 돌리려면 큰 이득도 없을 뿐더러, 환경(cudnn, cuda)에 따른 패키지 수정/유지 공수가 너무 많이 소요 됩니다. 물론 적당한 방안을 제안해서 PR 주신다면 환영하구요.

dhkim2810 commented 2 years ago

이해했습니다. 코랩은 CPU로 실행하고 후에 로컬 세팅을 맞춰서 돌려봐야겠습니다. 좋은 패키지 만들어주셔서 감사합니다!