[학습 에러] OOM (Out Of Memory) error
OOM (Out Of Memory) error
mask-rcnn 코드로 커스텀데이터셋을 학습 시키고 있는데 전에는 멀쩡히 실행되던 코드가 다음과 같은 에러를 뿜어냈다. 🤛🤛
열심히 찾아보니 해결방법은 뭐.. Batch size 줄이기, sudo kill 해서 process 죽이기.. 이미 해본 방법들이라 당황하고 있는데.. 다시 nvidia-smi 로 살펴본 결과
아래 process gpu 부분에는 실행중인 프로세스가 뜨지 않아서 다 프로세스가 죽었다고 생각했는데 GPU의 Memory-Usage 부분을 보니 상당량의 메모리가 차지되고 있었다.
이런 경우가 처음이라 당황하였지만, 다시 열심히 memory-usage를 없애는 방법을 찾으니 나왔다.. 구글링 만세! 블로거들 만세!
알아보니, 머신러닝 학습 프로세스를 중간에 강제로 종료를 해버리면 간혹 프로세스가 완전히 종료되지 않고 GPU 메모리에 데이터가 남아있는 경우가 있다고 한다.
ps aux | grep python
위의 명령어로 실행중인 프로세스를 확인할 수 있다. 아래 참고
정리하자면,
### 10148 0.0 3.3 30865304 2761524 pts/0 Sl 17:59 0:01 /home/실행중인 파일의 python 디렉토리 /home/실행중인 파일의 디렉토리와 명령어
여기서 가장 앞에 나온 10148 이 PID 이다.
KILL 하는 명령어
sudo kill -9 PID
나의 경우,
sudo kill -9 10148
오늘도 에러 해결~
+) 만약, 프로세스가 엄청나게 많이 쌓였다면..
특정 프로세스 이름으로 지우면 한번에 지울 수 있다.
특정 이름 프로세스 지우기
ps -ef | grep {특정프로세스이름/프로젝트이름} | awk '{print $2}' | xargs kill -9
# 나의 경우 프로젝트 이름에 toothbrush가 들어가서 toothbrush로 해줌
ps -ef | grep toothbrush | awk '{print $2}' | xargs kill -9
요약본
ps aux | grep python
sudo kill -9 PID
————-20220306 수정함
댓글남기기