티스토리 뷰

이전엔 돌아가던 모델을 그대로 돌렸는데 CUDA에서 GPU메모리 에러가 뜨길래 terminal에서 nvidia-smi로 상태를 확인해보았습니다. 

 

위의 Processes를 보시면 아무것도 돌아가는 것이 없지만 중간에 Memory-Usage를 보시면 이미 전체 메모리 중 2/3이상이 사용되고 있음을 알 수 있습니다.

 

가장 먼저 알아본 방법은 아래와 같습니다.

$ sudo kill -9 {process id}

https://jerrys-ai-lab.tistory.com/19

 

[ Linux ] GPU 메모리 할당 에러 해결 - Ubuntu 20.04

최근 Object Detection 관련 연구를 하기 위해 yolov4-keras 버전 github를 발견하여 돌려보다가 처음 보는 에러를 발견하였다. UnknownError: Failed to get convolution algorithm. This is probably because c..

jerrys-ai-lab.tistory.com

 

하지만 프로세스 자체가 표시되지 않는 지금과 같은 상황에는 이 방법을 사용할 수 없습니다.

 

 

이러한 상황에서 사용할 수 있는 방법은 다음과 같습니다.

for i in $(sudo lsof /dev/nvidia0 | grep python | awk '{print $2}' | sort -u); do kill -9 $i; done

https://honeyjamtech.tistory.com/63

 

[CUDA] GPU 메모리는 할당되어 있는데 프로세스가 안 나올때

사진은 없긴 한데 또 생기면 캡쳐해서 올리겠습니다. nvidia-smi 는 GPU의 사용량을 모니터링하기 위해 사용합니다. 여기에는 GPU가 몇 개인지 어떤 GPU인지, 메모리는 얼마나 사용하고 있는지, 파워

honeyjamtech.tistory.com

아예 반복문으로 GPU 메모리를 차지하는 프로세스들을 모두 찾고 지워버리는 코드.

이 코드를 적용하면 아래와 같이 GPU 메모리가 깔끔하게 청소됩니다.

 

 

다만, 제경우엔 원격 서버에 sudo와 lsof가 설치되어있지 않아 오류가 발생하여, 아래와 같은 두 코드로 설치를 진행한 후 다시 위의 코드를 적용했습니다.

apt-get update && \
      apt-get -y install sudo

useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo

출처 : https://stackoverflow.com/questions/25845538/how-to-use-sudo-inside-a-docker-container

apt install lsof

 

 

요약

1. nvidia-smi에 process가 뜰때는

$ sudo kill -9 {process id}

2. nvidia-smi에 process가 아예 보이지 않을때는

for i in $(sudo lsof /dev/nvidia0 | grep python | awk '{print $2}' | sort -u); do kill -9 $i; done

2.1 그런데 sudo나 lsof가 없어서 오류가 뜰경우

# sudo install
apt-get update && \
      apt-get -y install sudo
useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo

# lsof install
apt install lsof

2.2 한 후 다시

for i in $(sudo lsof /dev/nvidia0 | grep python | awk '{print $2}' | sort -u); do kill -9 $i; done

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크