cuDNN 초기화 오류가 발생하여 TensorFlowGPU를 배울 수 없지만 해결 된 이야기

Jupyter로 코드를 써서 기계 학습을 시도했을 때, 에러 토해도 빠져서 공유하고 싶은 것이 좋다고 생각한 이야기입니다.

환경



Anaconda+Jupyter와 CUDA+TensorFlowGPU+Keras로 딥 러닝하고 있다. CUDA는 10.0, cuDNN도 해당 버전을 인스톨 완료. CPU 버전은 제거했다. 제대로 움직일 것이다 환경. 라고 할까 지금까지 제대로 움직이고 있었다.

상황



Keras에서 학습을 시키려고 하면 에러를 토한다. 첫번째는 제대로 움직인다. 그렇지만 다른 코드를 실행하면 멈춘다. 경우에 따라서는 1회째에서도 멈춘다. PC 재기동시키면 1회는 낫다. 하지만 두 번째는 오류. 에라. error.
어제까지 제대로 움직이고 있었는데. 아무것도 하지 않았는데 부러졌다.

구체적으로는 이런 느낌의 에러 메시지가 나오고 움직이지 않는다.
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 conv2d_1/convolution}}]]
[[metrics/acc/Mean/_193]]

조사하다



에러를 읽으면, cuDNN의 초기화에 실패하고 있는 것 같다. 구그라고 보면 아무래도 cuDNN의 PATH가 다니지 않으면 이렇게 된다고 하는 것.
환경 변수 조사한다. 제대로 패스 다니는 것 같다. Anaconda마다 재설치해도 증상이 낫지 않습니다. 원래 1회는 제대로 움직이는 것이 최고로 의미불명으로 COOL.
넣어도 넣어도 우리 증상 치유.

ぢ 태스크 매니저 보기





Jupyter 종료시키고 있는데 Python 프로세스가 살아 있었다. 게다가 엄청난 양 메모리 확보하고 있다. 이 근처에서 뭔가 이상한 것을 깨닫는다. 혹시 Jupyter는 종료시켜도 메모리 해제하지 않겠습니까? 아니 아니 그런 설마…

다시 알아보기



작업하던 브라우저의 탭을 닫는 것만으로는 끝나지 않습니다.

그 설마였다. JupyterNotebook은 탭을 닫아도 프로그램은 종료하지 않는다는 것. 진짜? 지금까지 탭을 닫고 끝내고 있었다. 무지 무서워.
이 근처에서 Jupyter의 이 근처의 사양이 원인인 생각이 들고 TensorFlow의 GPU 확보 방법도 조사한다.

그리고 TensorFlow 사양



TensorFlow-GPU는, 디폴트라면 GPU의 빈 영역을 모두 확보하려고 한다. 모두입니다. ALL.
즉, TensorFlow-GPU를 사용한 기계 학습 프로그램을 복수 동시에 실행시키면 1번째는 보통으로 다니지만 2번째는 GPU를 확보할 수 없기 때문에 초기화에 실패한다. 이것이 cuDNN failed to initialize 의 정체.
그리고 Jupyter를 탭 닫기로 끝내면 GPU를 확보한 채 좀비화한다. 그 후 Jupyter를 다시 시작해도 GPU는 좀비화한 코드에 전유된 채이므로 이것도 초기화 실패한다. 이것이 1회째라도 학습 실패하는 증상의 정체.
시험에 1번째의 코드를 달린 뒤, Jupyter상에서 코드를 정지시키고 나서 2개째를 달리게 하면, 보통으로 움직였다. CUDA도 cuDNN도 Anaconda도 나쁘지 않다. 나쁜 것은 GPU를 혼자 차지하려고 하는 TensorFlow와 탭을 지우면 좀비화하는 Jupyter 했잖아.

결론



코드는 실행이 끝나면 제대로 정지합시다. Jupyter를 종료할 때는 제대로 Quite로 끝내자. TensorFlow가 확보하는 메모리 양을 제한하는 방법도 유효합니다. 방법은 다음 기사를 알기 쉽습니다. 끝.
  • tensorflow2.0 + keras에서 GPU 메모리 사용량을 줄이는 방법

  • 참고문헌


  • jupyter notebook에서 keras + tensorflow-gpu로 학습하면 GPU 메모리가 열리지 않아 곤란하다
  • JupyterNotebook에서 GPU 메모리를 해제하는 방법 - Windows
  • 좋은 웹페이지 즐겨찾기