본문 바로가기
카테고리 없음

(수정 중) GPU 서버 초기 설정 과정을 기록해봅니다

by 재ㅐㅐ원 2025. 8. 15.

안녕하세요, 주인장입니다.

2학기 개강 전에 모든 GPU서버를 재설정하게 되었는데, 이 과정을 공유해보려 합니다.

 

우선, 저희는 우분투 데스크톱을 호스트 운영체제로 사용하며 nvidia/cuda 이미지를 입맛에 따라 빌드해 각 도커 컨테이너에 GPU를 할당하여 사용하고 있습니다.

 

대략적인 과정은 다음과 같습니다.

우분투 설치 -> 엔비디아 드라이버 설치 -> 엔비디아 컨테이너 툴킷 설치 -> 컨테이너 실행

+ GPU 죽는 문제 해결 (docker-cgroupfs)

+ IPMI(BMC) 적용 (호스트 운영체제가 죽더라도 문제 해결 가능)

+ BMC에서 화면이 나오지 않는 문제 해결 (nvidia-drm 비활성화)

 

하나의 서버를 세팅한 후 파티션을 복사해 모든 서버에 동일한 환경을 가지도록 할 생각입니다.

 


(1) 우분투 데스크톱 설치

 

* nouveau 비활성화

/etc/modprobe.d/blacklist-nouveau.conf

아래 내용 입력

"

blacklist nouveau

options nouveau modeset=0

"

sudo update-initramfs -u

<재부팅 필요>

 

 

(2) 엔비디아 드라이버 설치

https://www.nvidia.com/ko-kr/drivers/unix/

 

Unix 드라이버 | NVIDIA

Linux x86_64/AMD64/EM64T 최신 프로덕션 브랜치 버전: 570.153.02 최신 신규 기능 브랜치 버전: 575.57.08 최신 베타 버전: 575.51.02 415.18 --> 최신Legacy GPU 버전(470.xx 시리즈): 470.256.02 최신Legacy GPU 버전(390.xx 시

www.nvidia.com

위 페이지에서 최신 프로덕션 브랜치로 다운로드 하여 실행할 거다.

그 전에 dkms를 설치해야 하는데, .run 파일로 드라이버를 설치할 경우 커널 업데이트가 발생할 때마다 드라이버를 새로 설치해야 하는 문제가 있다.

nvidia-smi를 입력하면 아래 둘 중 하나의 오류가 나오는 것을 경험했다.

* NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

* No devices were found

자동 업데이트로 새로운 커널이 다운로드되고 재부팅으로 적용되니 미리미리 적용해두자.

(nvidia-driver-*을 설치하면 dkms를 자동으로 설치해주는 것 같지만 확인하지 않았다.)

nvidia-dkms는 커널이 업데이트될 때마다 이에 맞게 새로 빌드하여 적용시켜주는 녀석이다!

 

sudo apt-get install dkms

# dkms 설치

sudo sh <filename>.run --no-drm --disable-nouveau

# IPMI에서 화면이 안 나오는 문제 해결(no-drm) 및 설치 과정에서의 nouveau 충돌 예방(disable-nouveau)


(3) 도커 설치

도커 설치 후

sudo groupadd docker

sudo usermod -aG docker $USER

newgrp docker

 

(4) nvidia container toolkit 설치

컨테이너에 엔비디아 GPU를 할당해주기 위해 필요하다!

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

 

Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit

Note There is a known issue on systems where systemd cgroup drivers are used that cause containers to lose access to requested GPUs when systemctl daemon reload is run. Please see the troubleshooting documentation for more information.

docs.nvidia.com

위 페이지에서 하라는 대로 하면 댐미다

 

sudo nvidia-ctk runtime configure --runtime=docker

sudo systemctl restart docker

 

(5) GPU 죽는 문제 해결

일정 시간동안 미사용시 GPU가 언로드되는 문제가 있었습니다.

아래의 과정으로 이를 해결했습니다.

https://stackoverflow.com/a/76646962

 

Failed to initialize NVML: Unknown Error in Docker after Few hours

I am having interesting and weird issue. When I start docker container with gpu it works fine and I see all the gpus in docker. However, few hours or few days later, I can't use gpus in docker. Whe...

stackoverflow.com

 

** 수정 적용 전 터미널 입력 기록 삭제 **

cat /dev/null > ~/.bash_history

history -c

 

** 추가

호스트OS에 도커 사용이 가능한 유저를 생성했다.

sudo adduser <username>

groups <username> # check if user has sudo

sudo usermod -aG docker <username>

 

** 추가

--no-drm 옵션으로 설치시 nvidia-smi 명령어 입력시 terminate 불가능한 문제가 종종 발생하여 그러지 않는 것으로 했다.

sudo sh ./NVIDIA-Linux-x86_64-570.153.02.run -s

sudo reboot now

repeat 2 times,, 재설치 귀찮아서

 

이 결과, 부팅시 그래픽카드 출력을 사용시 IPMI 신호 없음 | 미사용시 IPMI로 화면 출력됨

 

다시 정리해보겠습니다.