Python

리눅스(CentOS) GPU 사용 시 메모리 오류

교 향 2022. 11. 18. 11:40

Tensorflow-GPU 를 리눅스 GPU 서버 주피터 노트북에서 돌리는데,

최근 지속적으로 GPU 메모리 오류가 발생하였음.

 

오류 내용

ResourceExhaustedError:  SameWorkerRecvDone unable to allocate output tensor. Key: /job:localhost/replica:0/task:0/device:CPU:0;d7ea78dfeeeffe7a;/job:localhost/replica:0/task:0/device:GPU:0;edge_615_IteratorGetNext;0:0
 [[{{node IteratorGetNext/_2}}]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info. This isn't available when running in Eager mode.
 [Op:__inference_test_function_27688]

https://iambeginnerdeveloper.tistory.com/69

 

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

SRGAN을 활용하여 고해상도 이미지를 생성하는 프로젝트를 진행하다가 GPU 메모리 오류를 마주했다. ( 해당 프로젝트 노트북 파일 : https://github.com/YOOHYOJEONG/AIFFEL_LMS_project/blob/master/ex16/ex16_SRGAN.ipynb

iambeginnerdeveloper.tistory.com

위 글쓴이님을 참고하여 배치사이즈, 이미지 사이즈를 줄여보았으나 소용이 없었고

 

아래와 같은 오류가 발생하였음

ResourceExhaustedError: failed to allocate memory [Op:Mul]

 

어찌 되었든 요지는 GPU 메모리가 점유중이라는 뜻이기에 아래 글을 참조함

 

출처:

https://pulsar-kkaturi.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%EC%84%9C-%EB%94%A5%EB%9F%AC%EB%8B%9D-%ED%95%99%EC%8A%B5-%EA%B0%95%EC%A0%9C-%EC%A4%91%EB%8B%A8%ED%96%88%EC%9D%84%EB%95%8C-GPU%EC%97%90-%EB%82%A8%EC%9D%80-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%A0%95%EB%A6%AC%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

리눅스 터미널에서 딥러닝 학습 강제 중단했을때 GPU에 남은 메모리 정리하는 방법

# 세줄요약 # ps aux | grep python 명령어를 사용하여 딥러닝 학습을 실행시킨 python 파일의 실행 ID를 찾는다. 찾은 아이디가 예를 들어 '1234' 라면, sudo kill -9 1234 명령어를 사용하여 Kill 명령어를 내린

pulsar-kkaturi.tistory.com

를 참조하여 할당된 메모리를 종료해 주었다

 

1. ps aux | grep python  명령어를 사용하여 딥러닝 학습을 실행시킨 python 파일의 실행 ID를 찾는다.
>>> ps aux | grep python

jovyan    4894 63.6 18.5 136732984 48807976 pts/2 Tl Apr06 565:54 python main.py

- 터미널에 명령어를 치면 위와 같이 나온다. python이 실행 중인 프로세스를 찾는 것.
- 실행 ID는 위의 예시의 경우에는 '4894'이다.

 

2. 찾은 아이디가 예를 들어 '1234' 라면,  sudo kill -9 1234  명령어를 사용하여 Kill 명령어를 내린다.
>>> sudo kill -9 4894
 

3. nvidia-smi 명령어로 GPU 메모리가 정리되었는지 확인한다. 
>>> nividia-smi