각종 에러들을 해결 해 보자

tensorflow GPU 메모리 오류 해결 | ResourceExhaustedError : OOM when allocating tensor with shape

토오오끼 2021. 9. 8. 23:37
728x90
반응형

 

SRGAN을 활용하여 고해상도 이미지를 생성하는 프로젝트를 진행하다가 GPU 메모리 오류를 마주했다.

( 해당 프로젝트 노트북 파일 :

https://github.com/YOOHYOJEONG/AIFFEL_LMS_project/blob/master/ex16/ex16_SRGAN.ipynb

)

 

GitHub - YOOHYOJEONG/AIFFEL_LMS_project

Contribute to YOOHYOJEONG/AIFFEL_LMS_project development by creating an account on GitHub.

github.com

 

아이펠 클라우드 환경에서 모델을 돌리면 GPU 메모리 걱정은 할 필요 없다고 생각했는데, 종종 메모리 오류를 마주한 적이 있었다. 그럴 때 마다 배치 사이즈를 줄이거나 동시에 가동 중인 파일을 모두 중단시키거나, 아니면 아예 새로운 노트북 파일을 만들면 해결이 됐었다.

 

하지만 이번에 마주한 GPU 메모리 에러는 이때까지 해 본 방법이 모두 통하지 않았다.

 

메모리 오류가 난 부분은

기존에 학습이 된 srgan 모델을 불러와서 이미지를 넣고 srgan을 이용해 고해상도 이미지를 생성하는 부분이었다.

위의 코드에서 apply_srgan에서 오류가 난 것을 볼 수 있다.

 

오류 메세지는 아래와 같다.

ResourceExhaustedError : OOM when allocating tensor with shape[1,3024,4032,64] and type float on /job:localhost/replica:0/task:0/device:gpu:0 by allocator gpu_0_bfc %09 [[{{node model_3/p_re_lu_26/relu_1-0-0-transposenchwtonhwc-layoutoptimizer}}]]

 

기존에 해 봤던 시도들로 해결이 되지 않아 주변에 도움을 요쳥했고

이미지의 사이즈가 너무 큰 경우에도 GPU 메모리 오류가 날 수도 있다는 말을 들었다.

 

그 말을 듣고 생각 해 보니 프로젝트를 진행하기 전, 실습을 할 땐 오류가 나지 않고 제대로 작동했었는데

프로젝트를 진행할 때 실습 환경과 달라진 거라곤 초고화질 사진(3024, 4032)을 인풋으로 넣은 것이었다. 

 

이미지의 사이즈가 너무 크지 않은 사진(1866, 2449)으로 변경하여 모델에 적용했더니 GPU 메모리 오류없이 잘 작동했다!!!

 

 

앞으로 tensorflow GPU 메모리 오류가 나는 경우에는

1. 배치 사이즈를 줄이거나

2. 입력 데이터의 사이즈를 줄이는

방법 이 두가지로 기억하고 있어야겠다.

 

혹시나 또 다른 이유로 GPU 메모리 오류가 발생한다면 해당 게시물에 내용을 추가 해 놓을 것이다.

728x90
반응형