본문 바로가기
AI/LLM

[LLM] Linux nvidia gpu 메모리 초기화

by didi0di 2024. 10. 22.
728x90

vLLM으로 LLM 모델을 하나 띄웠는데, 중단했는데 자꾸 GPU에 메모리가 잡혀 있는 현상 발생...

 

다른 모델 하나 더 띄우려고 하니까 OOM(Out of Memory) 에러나서 

gpu를 점유하고 있는 프로세스를 종료하려고 했으나,

nvidia-smi로 조회해도 PID가 조회가 안된다...ㅎㅎ

 

내 gpu 내놔 ㅜㅜ

 

보통은 아래와 같이 내가 돌린 커맨드에 따라 실행중인 프로세스의  PID를 조회하고 해당 프로세스를 종료하면 되는데..

ps -elf | grep [nohup, python, vllm 등 찾고자 하는 커맨드 키워드]
kill -9 [PID]

 

 

아무리 찾아도 안나옴.

심지어 학습을 돌린게 아니라서 torch.cuda.empty_cache(): 전혀 작동 안됨. 애초에 학습 혹은 테스트 코드 프로세스가 잡혀있지 않음. 

 

그래서 특정 gpu를 강제로 메모리 초기화 시켜주려고 하다가 아래 방법을 찾았다.

 

 

sudo fuser -v /dev/nvidia*

 

nvidia-smi말고 GPU에서 실행되는 프로세스를 확인할 수 있다고 한다.

 

우선 fuser를 설치해야 하는데, 설치 명령어는 아래와 같다.

 

apt-get install psmisc # fuser 설치

 

 

이 명령어로 확인했더니 정말 nvidia-smi에 잡히지 않았던 프로세스가 존재했다.

 

 

6번째 gpu에 있는 프로세스 중 main_thread로 적힌 저 2놈!

 

 

뭔가 의심스러워서 해당 프로세스를 조회해봤는데,, 잘 모르겠다. 뭔가 부모 프로세스를 물고 도는 애 같은데

그냥 일단 둘다 죽였더니 메모리가 초기화 되긴 했다!

 

 

 

 

PID가 조회해도 안나올때!

특정 gpu를 물고 있는 프로세스 확인하거나 gpu 메모리 초기화 하고 싶을 때 유용한 방법인듯 ㅎㅎ

728x90

댓글