티스토리 뷰

모델 학습을 하다가 중간에 멈추는 경우 모델은 중단되었는데 전용 GPU 메모리는 할당된 채로 남아있는 경우가 있다.

자연스레 out of memory error가 발생하고 모델을 돌릴 수 없는데 torch.cuda.empty_cache() 함수를 사용해도 GPU 메모리가 지워지지 않는 경우가 종종 발생하더라.

  1. pip install numba를 입력해서 필요한 패키지를 설치해주고
  2. 다시 작성하던 노트북 파일이나 VS Code등으로 돌아와서 다음 코드를 입력하고 실행하자.

 

!pip install numba

from numba import cuda

device = cuda.get_current_device(); device.reset()

 

아래와 같이 GPU 할당 메모리가 초기화 되는 것을 볼 수 있을 것이다.

 

이제 실행중이던 VS나 편집툴을 한번 껐다 켜준 뒤, 처음 코드부터 다시 모델을 돌려보자. 자세히는 모르겠지만 GPU내부 무언가를 완전히 리셋하는 방법이라 편집툴을 한번 다시 켜주지 않으면 OOM에러는 아니지만 다른 유형의 GPU 메모리 에러가 난다.

 

만약 이 방법으로도 메모리 초기화가 완전히 되지 않는다면 경험상

  1. 여러가지 파일로부터 GPU 메모리를 나눠서 할당/사용하였거나 (주피터 노트북을 여러개 사용해서 실행했거나)
  2. 할당된 GPU 메모리 location이 복잡하게 꼬여있는 경우 (하나의 파일을 실행, 중지를 반복한 경우)

이므로, 그냥 실행하던 모든 것들을 저장하고, 한번 컴퓨터를 재부팅해 주는 것이 정신 건강에 이롭다.

 

해당 내용은 다음 블로그 포스팅으로부터 거의 복사 붙여넣기 하다시피 한 글입니다. 큰 도움이 되어 출처 남깁니다. https://gilforce.com/gpu-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%82%AC%EC%9A%A9%EB%9F%89-%EC%B4%88%EA%B8%B0%ED%99%94-%EB%B0%A9%EB%B2%95/

 

GPU 메모리 사용량 초기화 방법 - Gil-IT

GPU 메모리 사용량 초기화에 대한 포스팅입니다. 안녕하세요, Gil-It입니다. 오늘은 GPU 메모리 사용량 초기화에 대한 방법에 대하여 알아보도록 하겠습니다. 자연어 처리, Tensorflow(텐서플로우) 등

gilforce.com

 

 

↓ 내용이 혹시나 도움되셨다면 눌러주세요 꾸준한 포스팅에 큰 원동력이 됩니다 🥰

댓글