[Ubnutu] RuntimeError: CUDA out of memory. Tried to allocate 374.00 MiB (GPU 0; 10.91 GiB total capacity; 5.96 GiB already allocated; 232.94 MiB free; 6.00 GiB reserved in total by PyTorch)
-
반응형
문제 상황
모델 학습을 시도하였는데 다음과 같은 에러 코드가 발생했다.
RuntimeError: CUDA out of memory. Tried to allocate 374.00 MiB (GPU 0; 10.91 GiB total capacity; 5.96 GiB already allocated; 232.94 MiB free; 6.00 GiB reserved in total by PyTorch)
해결 방안
nvidia-smi로 GPU 메모리 점유 상황을 확인해봤다.
앞서 돌렸던 모델이 GPU 메모리를 여전히 점유하고 있어서 발생한 문제 상황이었다.
해당 프로세서를 PID를 보고 정리한다.
sudo kill -9 <PID number>
ex)
sudo kill -9 26200
예를 들어 위 프로세서들 중 PID 26200이 GPU 메모리의 3164 MiB를 먹고 있다.
프로세서명을 보면 /opt/conda/bin/python 로 작성되어 있다.
이는 높은 확률로 이전에 파이썬으로 실행한 딥러닝 모델이 남아있던 것이다.
이를 kill 명령어로 죽인뒤 다시 확인해본다.
7437 MiB만큼 점유하고 있다가 6927 MiB로 떨어진 것을 확인할 수 있다.
뿐만 아니라 비슷하게 6055 역시 많은 GPU 메모리를 점유하고 있고 이것도 죽이면 메모리가 깔끔하게 정리가 되고
다시 모델을 학습 시도하면 해결된다.
그리고 nvidia-smi를 매번 번거롭게 입력해서 확인하기 보다 watch 명령어를 이용해서 실시간으로 보는 것도 하나의 방법이다.