우당탕탕~!
구축한 GPU 서버를 함께 사용하기 위해 계정을 추가해보자. 지난 번의 설치 이후로 발생한 문제는
1. GPU 누수 현상: 다른 서버에서는 14GB로 작동하는 코드가 현재 서버의 모든 vram을 다 사용함
2. Driver 인식 불가: root 계정과 새로운 계정에서는 nvidia-smi 명령어가 작동하지 않음
이다.
그래픽 드라이버를 지우고 새로 깔아야하나 심란하게 지내다가 간단하게 2번을 해결해서, 이 글에서는 2번의 해결과정에 대해 기록을 남기고자 한다
WSL2를 이용한 Ubuntu는 기본적으로 사용자 계정으로 로그인이 된다. 그리고 이 초기 사용자 계정은 sudo 권한을 사용할 수 있다. 그렇다... 나같은 알못은 자연스럽게 root 계정으로 로그인 할 일이 없어 존재를 잊고 사는 거였다...
먼저 root 계정의 비밀번호를 초기화해준다
sudo passwd root
이후 해당 비밀번호를 이용해 root 계정으로 전환한다.
su root
이제 root 계정에서 nvidia-smi
명령어를 입력하면, Command 'nvidia-smi' not found, but can be installed with: ...
오류가 발생한다.
하하하 초기 사용자 계정에서는 정상적으로 열리는 드라이버가 왜 root 계정에서는 안 되는가? 열심히 구글링을 해봤지만 이유를 알 수 없었는데, 놀랍게도 GPT o1이 해결해주었다. ...GPT가 이렇게 똑똑한데 감히 내가 코딩을 공부하는게 맞을까?
root 계정에서 nvidia-smi
명령어가 정상적으로 작동하지 않았던 이유는 PATH 환경변수의 문제이다. 초기 기본 계정에는 PATH 환경변수에 nvidia-smi
의 경로가 포함되어있지만, 다른 계정에서는 포함되어 있지 않기에 발생한다.
따라서 PATH 환경변수를 확인하고 추가해주자!
먼저 nvidia-smi
의 경로를 확인하자.
which nvidia-smi
내 경우에는 /usr/lib/wsl/lib/nvidia-smi
으로 나타났다.
그리고 이제 각 계정의 PATH 환경변수를 확인해보자
# 각 계정에서 실행
echo $PATH
초기 사용자 계정에는 nvidia-smi
를 포함한 많은 경로가 잡히지만, root 계정는 아니었다. 따라서 root 계정에서도 경로를 잡을 수 있도록, /etc/profile
파일을 수정해주자!
vi /etc/profile
# profile
...
export PATH=$PATH:/usr/lib/wsl/lib
# :wq!로 빠져나오기
source /etc/profile
이제 nvidia-smi
이 정상적으로 작동한다! 감격...
각 계정별로 ~/.bashrc
을 수정해도 되지만, 나는 계정을 새로 만들 때마다 수정하는 것은 번거로울 것 같아서 root 계정에서 일괄 적용을 하기로 결정했다.
이전 글을 참고해 다음 명령어를 실행한다
ls /usr/local/ | grep cuda
다행히도 CUDA-12.0이 잘 잡힌다. root 계정으로 가서 다음 명령어를 입력해주자.
vi /etc/profile
# profile
...
export PATH=$PATH:/usr/lib/wsl/lib
# :wq!로 빠져나오기
source /etc/profile
이전 글을 참고해 다음 명령어를 실행한다
nvcc --version
안 잡힌다. 하지만 항목 1을 생각해보면 안 잡히는 이유는 간단하다. 여기도 PATH 설정이 필요하기 때문이다~
vi /etc/profile
# profile
...
export PATH=/usr/local/cuda-12.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH
# :wq!로 빠져나오기
source /etc/profile
이제 cuDNN도 잘 잡힌다.
혹시몰라 conda 가상환경까지 설정하고 Pytorch까지 설치해 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
까지 실행해보았는데, 일단 cuda
를 잘 찾는 거 같다.
새 계정을 추가하는 방법은 useradd
와 adduser
가 있다. 가장 큰 차이는 useradd
는 사용자의 홈디렉토리를 자동 생성하지 않아 별도로 설정해주어야 한다는 점, adduser
는 자동으로 생성해준다는 점이다.
따라서 간단하게 adduser
명령어로 새 계정을 추가했다
sudo adduser {계정명}
새 계정에 sudo 권한을 추가하는 방법은 다음과 같다
# sudo 그룹으로 추가
usermod -aG sudo {계정명}
# sudoers 파일의 root ALL... 아래에 추가
vi /etc/sudoers
{계정명} ALL=(ALL:ALL) ALL