본문 바로가기
SEO's Study/프로페셔널한 이야기

RuntimeERROR: Out of Memory (CUDA)

by 신SEO세오 2022. 2. 3.
반응형

 

 

RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 2.00 GiB total capacity; 682.56 MiB already allocated; 6.34 MiB free; 684.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF...

 

이미지 분류기를 만들면서 마주했던 RuntimeError에 대한 해결방안을 소개하려고 한다. 

이런 에러는 코드상에서 메모리 누수가 발생했거나, batch size가 수용 용량을 감당하지 못했을 때 발생하는 건으로

아래 두 가지 방법을 통해 해결할 수 있다. 

 

1. batch size의 크기를 줄여가며 테스트해본다.

2. GPU cache를 비워주는 코드를 추가한다.

 

다만, GPU Cache를 비워주는 코드를 수행하는 것은 gc memory를 정리하는 것으로 메모리를 기반으로 수행된 과거의 데이터가 사라질 수 있으며, 공용 인프라의 경우 타 유저의 메모리 사용 유무 확인 과정이 필요함을 참고하자.

 

[GPU cache Clear 명령어]

import torch
import gc
gc.collect()
torch.cuda.empty_cache()

 

나는 노트북 로컬에서 돌렸던지라 용량이 부족하여 gc memory 정리 후 batch size를 줄였습니다.

(2GB 용량으로 열심히 투닥투닥하고있다..)

반응형

댓글