ENVI Deep Learning을 랩탑에서 실행하기

게임용 랩탑을 쓰지만, 실제 게임을 잘 하지 못하니 제 랩탑의 성능을 제대로 뽑아내지 못하고 있었던 것 같습니다. 시연을 위해 ENVI Deep Learning을 제 랩탑에서 돌리다 겪은 문제들을 돌아보니, 어쩌면 많은 분들이 겪을 수 있는 상황인 듯 하여, 공유하고자 합니다.

제가 겪은 문제들은 다행히, 아래 Harris Geospatial Solutions 의 Help 문서에 해결책들이 있었습니다.

https://www.harrisgeospatial.com/Support/Self-Help-Tools/Help-Articles/Help-Articles-Detail/ArtMID/10220/ArticleID/23721/ENVI-Deep-Learning-training-error-CUDNN-STATUS-ALLOC-FAILED

제 랩탑은 이제 3년쯤 되었고, GPU로는 NVIDIA GeForce GTX 960M 이 설치되어 있습니다. 지금 기준으로는 좋은 사양은 아니네요. ENVI Deep Learning을 본격적으로 실행하기 위해서는 GPU 사양이 가장 중요합니다. 일반적으로 랩탑 컴퓨터로 본격적인 작업을 하는 것이 효율적이지 않을 수 있으나, 저의 상황과 같이 시연 등의 목적으로라도 랩탑 실행이 필요할 수 있습니다(요즘 랩탑용 GPU 성능이 많이 좋아진 면도 있습니다).

전제조건이 있습니다.
CPU만 가지고도 돌릴 수는 있다고 합니다. 하지만 Deep Learning에서 GPU 사용으로 얻는 속도 향상은, 단순히 속도향상이라고 얘기할 수 없는 큰 차이를 보이기
때문에 CPU만 사용하는 컴퓨터는 비추천이라고 할 수 있습니다. ENVI Deep Learning은 NVIDIA의 CUDA® 기술을 활용합니다. 그러므로 NVIDIA의 그래픽카드만을 지원하고, 그 중에서도 CUDA 계산 성능(CUDA Compute Capability) 3.5 이상인 모델만 지원합니다. CUDA 계산 성능은 아래 링크에서 확인하실 수 있습니다.

https://developer.nvidia.com/cuda-gpus

아주 오래된 모델이 아니면 웬만하면 5점대 이상인 것 같습니다. 요즘 나오는 랩탑중에 NVIDIA GeForce가 장착된 모델이면 된다고 보아도 될 듯합니다. 데스크탑 역시 요즘 NVIDIA 모델이면 다 되는 것으로 생각해도 될 것 같구요.

제가 겪은 문제는 다음과 같습니다.
1) Deep Learning 을 위한 대화창들이 진행되는 중에, GPU를 사용하는 프로세스가 시작하면 무슨무슨 라이브러리가 없다느니 하면서 멈춥니다.
제 컴퓨터의 NVIDIA 드라이버가 오래된 것이어서 ENVI Deep Learning에서 인식을 못한 것인데요, NVIDIA 드라이버 384.X 버전 이상이 필요합니다. 저는 2017년 4월인가에 설치한 드라이버 349.X 버전이었구요, 오늘 설치한 버전을 보니 430.86 입니다. 아주 오랜동안 드라이버 업데이트도 안하고 썼네요. 어쩌면 그동안 SARscape에서 다른 분들 다 잘되는 데 저 혼자 다운된 것도 이 문제일지 모르겠다는 생각을 했습니다.
2) 모델 초기화 (Initializing a new model)를 수행할 때 메모리 할당 에러가 나면서 멈춥니다.
ENVI Deep Learning 개발 팀은 GPU의 메모리로 8GB 정도가 되어야 한다고 추천 사양을 얘기합니다. 팔자좋은 소리고요, 데스크탑용 GPU에서도 VRAM 8GB는 꽤 고사양에 속합니다(100만원 정도 하네요, 그래픽 카드만). 랩탑용으로는 게임용이라고 해도 4GB 정도가 일반적입니다. 물론 업무용, 연구용 데스크탑에 고사양의 GPU를 설치할 필요가 있다면 설치 해야 되겠죠. 제 GeForce960M 모델은 2GB네요. 경험이 많지 않으니, VRAM이 부족해서 그렇다고 확언할 수는 없지만, 다음과 같은 에러를 만났습니다.

앞의 Harris 사의 Help 링크에 이 부분에 대한 대처 방법이 나와 있어서 거기에 소개된 방법으로 몇가지 조합을 시도해 보니 일단 실행은 되는군요.

  • 모델 초기화 과정에서 설정하는 파라메터인 Patch_Size를 작게 설정해 봅니다. 디폴트 값은 572인데, 작은 값으로 한번 시도해 보고 이 방법으로 진행이 되는지 확인해 봅니다.
Patch Size 300으로 낮추어 시도
  • Train 태스크에서 Patch per Batch 값을 조정해 봅니다. 기본적으로는 ENVI가 처음 제시한 값을 사용하는 것이 최상이지만, 메모리 에러가 지속된다면, 이 값을 2로 설정해서 시도해 보고, 진행이 될 경우, 그 값을 증가해 봅니다(이 값이 높을 수록 훈련 속도는 빨라집니다).
Mumber of Patches per Batch를 2로 조정하여 시도

Training을 하는 동안, 랩탑 컴퓨터 팬이 오랜만에 요란하게 돌아가네요. 괜히 일 좀 하는 것 같은 기분이 들었습니다. 그리고 그냥, 데스크탑을 하나 장만해야겠습니다.