Jupyter Lab에서 PyTorch를 이용하여 Deep Learning Model을 학습시키던 중 아래와 같은 에러가 발생하였다.

 

1. CuDNN Ccudnn error: cudnn_status_success

 

   Error를 쭉 따라 읽어 내려가다 보면 F.Conv2d 쪽에서 문제가 발생하였는데 단순히 해당 Cell을 한번 더 실행했을 때 사라지고 정상적으로 실행이 되는 듯하여 넘어갔던 문제이다.

 

   그러다 아래와 같은 문제가 복합적으로 발생하기 시작했다.

 

2. Cublas cublas runtime error : the GPU program failed to execute at C:/ProgramData/Miniconda3/conda-bld/pytorch_1533094653504/work/aten/src/THC/THCBlas.cu:411

 

   해당 Error 또한 해당 Cell을 다시 실행했을 경우에는 발생하지 않았고, Kernel을 Restart 하거나 컴퓨터를 재부팅했을 경우에는 지속적으로 발생했다.

 

   물론 그냥 다시 실행해서 학습을 진행시킬 수 있었지만, 갑자기 학습이 느려지고 Gpu Load가 일정 Percent 이상 올라가지 않고 GPU가 놀기 시작했다. 특히 Ram 사용량이 급격히 높아지며 결국에는 컴퓨터가 먹통이 돼버리는 문제가 발생했다.

 

  기존의 Code를 수정 없이 다시 실행했을 때 갑자기 발생한 문제여서 처음엔 여기저기서 말썽이 많다는 Rtx 2080 ti 가 사망하였거나 Freeze 가 걸린 게 아닌가 의심하기 시작했다. 해외 포럼이나 Google에 검색해봤을 때 많은 사람들이 비슷한 문제를 겪고 있었는데, Rtx 2080 또는 ti를 사용한다는 말이 많았고, 단순히 Cell을 재실행해서 해결했다는 사람들이 많았다.

 

  하지만, 여러 글을 읽던 중 가뭄에 단비와 같은 한줄짜리 Comment를 발견했다.

 

https://discuss.pytorch.org/t/runtimeerror-cudnn-error-cudnn-status-success/28045/3

 

RuntimeError: CuDNN error: CUDNN_STATUS_SUCCESS

No… I just know about the issue is occurred when I use RNN base model. For example, from torchvision import models vgg = models.vgg19(pretrained = True) vgg.cuda() These lines are not problem. They work clearly. However, from torch import nn gru = nn.gru(3

discuss.pytorch.org

 

   다른 Comment를 읽어보면 9.0, 9.2, 10.0을 사용하고 있는 사람들에게서도 빈번하게 나타나는 문제여서 처음엔 가볍게 무시하고 넘어갔었지만, 연구실 형의 말을 듣다 보니 사용하고 있는 PyTorch와 Cuda version에 문제가 있을 수 있다는 생각이 들었다. 

 

   conda install pytorch cuda92 -c pytorch

 

   win10과 Anaconda를 사용하는 User의 경우 단순히 Conda prompt를 켜 위의 명령어를 실행하면 간단하게 version이 호환된 pytorch와 cuda92를 다운로드할 수 있다. 나와 같은 경우 10.0을 사용하다 호환의 문제로 9.0으로 Downgrade 해서 사용하고 있었는데 다시 9.2로 Upgrade 했다.

 

   설치가 완료되고 다시 Jupyter Lab을 실행하여 처음부터 실행해본 결과!! 아무런 에러 없이, 또 정상적인 GPU Load와 함께 학습이 진행되었다.

 

 

   만약 나와 같은 문제가 발생하였다면, 사용하고 있는 Framework와 Cuda 간 Version이 호환되지 않는 문제가 있는 게 아닐까 한번 의심해보길 바란다.

 

 

++ 추가사항 ++

 

   CuDNN , Cublas Error는 위와 같은 방법으로 해결하였다. 하지만 Gpu Load가 떨어지는 것은 다른 문제였는데, CPU로 하는 연산이 오래 걸리거나, 또는 코드 상 반복문에서 빠져나오는 게 오래 걸렸기 때문이었다. 코드를 수정하여 CPU 연산을 최소화하고 반복문에 갇히는 문제를 해결하니 정상적으로 동작하였다.

+ Recent posts