Ubuntu + NVIDIA T4로 개인 GPU 서버 만들기
LLM 모델(Ollama)을 돌리고 모니터링은 Prometheus/Grafana로 구성Ubuntu - Ubuntu 24.04.3 LTS로 진행하였습니다.# apt update# apt -y upgrade를 입력해 패키지 저장소에서 최신 패키지 목록을 받아오고, 설치되어 있는 패키지들을 최신 버전으로 업그레이드 진행# lspci | grep -i nvidia
LLM 모델(Ollama)을 돌리고 모니터링은 Prometheus/Grafana로 구성
Ubuntu - Ubuntu 24.04.3 LTS로 진행하였습니다.
# apt update# apt -y upgrade를 입력해 패키지 저장소에서 최신 패키지 목록을 받아오고, 설치되어 있는 패키지들을 최신 버전으로 업그레이드 진행
# lspci | grep -i nvidia를 입력하여 GPU가 인식되는지 확인
-결과값
00:06.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
# apt install ubuntu-drivers-commonUbuntu에서 하드웨어 드라이버를 자동으로 감지, 추천 및 설치를 할 수 있게 도와주는 도구 패키지 설치
# ubuntu-drivers devices설치한 도구의 명령어를 입력하여 Ubuntu에서 추천하는 드라이버 확인
-결과값
vendor : NVIDIA Corporation
model : TU104GL [Tesla T4]
driver : nvidia-driver-580-server-open - distro non-free
driver : nvidia-driver-580-server - distro non-free
driver : nvidia-driver-580 - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-535 - distro non-free
driver : nvidia-driver-570-server - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-580-open - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
위와 같이 설치 가능한 드라이버 목록들이 뜨고 추천하는 드라이버 버전에 recommended 가 뜬 버전인
nvidia-driver-580버전 다운로드
# apt -y install nvidia-driver-580https://ollama.com/download Download Ollama on macOS Download Ollama for macOS
ollama.com
# curl -fsSL https://ollama.com/install.sh | shOllama 공식 사이트에서 제공하는 설치 스크립트를 crul 명령어를 통해 다운로드하고 즉시 실행
# ollama pull llama3.1:8b현재 구성되어있는 GPU 서버가 NVIDIA Tesla T4 모델(16GB GDDR6)이기 때문에 16GB 메모리에 적합한
llama3.1:8b 버전을 선택하여 설치
# apt install -y docker.ioOpen WebUI, Prometheus, Grafana를 컨테이너로 쓸 수 있도록 Doker를 설치
# docker run -d --name open-webui --network=host -v open-webui:/app/backend/data \-e OLLAMA_BASE_URL= http://127.0.0.1:11434 --restart=always ghcr.io/open-webui/open-webui:main
Open WebUI를 Docker 컨테이너로 실행하는 명령어
-옵션 설명
-d: 백그라운드에서 실행
--name open-webui: 컨테이너 이름을 open-webui로 지정
--network=host: 호스트 네트워크를 별도 포트 매핑 필요 없이 그대로 사용할 수 있도록 설정(8080포트)
-v open-webui:/app/backend/data: Open WebUI 설정·데이터를 로컬 볼륨에 저장
-e OLLAMA_BASE_URL=http://127.0.0.1:11434: Open WebUI가 Ollama 서버로 요청을 보내는 주소 설정
(11434포트는 Ollama가 기본으로 사용하는 API포트)
--restart=always: 서버가 재부팅되거나 컨테이너가 죽어도 자동 재시작
ghcr.io/open-webui/open-webui:main: 최신 Open WebUI 이미지를 가져옴
이후 http://서버IP:8080 로 접속
관리자 ID 생성 후 우측 상단 프로필 클릭 -> 관리자 패널 -> 설정 -> 모델 -> 톱니바퀴 옆 모델관리(다운로드 표시)
-> Ollama.com에서 모델 가져오기(pull) 옆 버튼 클릭
Ollama 모델이 가져와지면서
Ollama 모델이 정상 연결된 상태의 대화 UI
# apt install -y prometheus prometheus-node-exporterGPU 서버의 상태 모니터링을 위해 Prometheus 설치
Prometheus는 모니터링 데이터를 저장·조회하는 역할을 하고,
Node Exporter는 시스템 정보를 Prometheus에 보내는 역할
# systemctl restart prometheus prometheus-node-exporter# systemctl enable prometheus prometheus-node-exporter설치한 서비스들을 즉시 재시작 및 활성화로 설치한 설정을 반영하고 서버가 재부팅 되더라도
자동으로 시작되도록 설정
http://서버IP:9090로 접속해 Prometheus 화면이 정상적으로 뜨는지 확인
# apt-get install -y adduser libfontconfig1 muslGrafana.deb 패키지를 설치하기 전에 필요한 의존성 패키지 설치
Grafana 서비스용 계정 생성과 폰트 랜더링, 실행 바이너리가 의존하는 C 라이브러리(musl)를 제공
# wget https://dl.grafana.com/grafana-enterprise/release/12.3.0/grafana-enterprise_12.3.0_19497075765_linux_amd64.debwget을 통해 Grafana Enterprise 12.3.0 버전의 Debian/Ubuntu용 설치 패키지를 다운
# dpkg -l | grep grafana-결과값
ii grafana-enterprise 12.3.0 amd64 "Grafana Enterprise"
# grafana-server -v-결과값
Version 12.3.0
두 명령어를 통해 설치한 Grafana가 정상적인 설치 유무와 버전 확인
# systemctl daemon-reload# systemctl enable grafana-server# systemctl start grafana-serverGrafana 설치 후 systemd에 서비스 정보를 새로 반영, 부팅 시 자동 시작을 등록, 서비스를 즉시 실행
http://서버IP:3000으로 접속
초기 ID/비밀번호는 admin/admin 로그인 후 비밀번호 재설정
로그인 후 좌측 상단 그라파나 로고 클릭 -> connections -> Data Sources -> add datasource
prometheus 검색 후 커넥션 탭에서 http://localhost:9090으로 설정
그라파나에서 우측 상단 +버튼 옆 화살표 클릭 후 Import dashboard로 진입
ID 넣는 칸에 1860 입력 후 Load 버튼 클릭 import 버튼 클릭
대쉬보드에 해당 상태 정보들이 뜨는지 확인
GPU 상태 정보를 확인하기 위해 NVIDIA Container toolkit 설치
# apt-get install -y --no-install-recommends gnupg2GPG 키(저장소 서명 키)를 처리하기 위한 패키지
NVIDIA Container Toolkit 레포지토리 추가
# curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg-GPG 키를 키링에 저장
# curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list > /dev/null-APT 레포지토리를 추가
# apt-get update# apt-get install -y nvidia-container-toolkit패키지 목록 최신화 후 NVIDIA Container Toolkit 설치
# nvidia-ctk runtime configure --runtime=docker --config=/etc/docker/daemon.jsonDocker가 GPU를 사용할 수 있도록 NVIDA 런타임을 자동으로 설정
# systemctl restart docker설정 적용
# docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi도커 내부에서 GPU가 인식되는지 확인
# docker run -d --name dcgm-exporter --gpus all --restart unless-stopped \-p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:latest
NVIDIA DCGM Exporter를 Docker 컨테이너로 실행해서, GPU 상태 정보를 Prometheus가 수집할 수 있도록 메트릭을 제공
# curl http://localhost:9400/metrics | head메트릭이 나오는지 확인
# vim /etc/prometheus/prometheus.yml파일 최하단에
- job_name: gpu
static_configs:
- targets: ['localhost:9400']
추가
Prometheus가 기본 설정 파일이 아닌, 수정한 prometheus.yml을 읽어오도록하기 위해 ARGS 값을 지정
# vim /etc/default/prometheusARGS="--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries"
내용 수정
http://서버IP:9090 에 접속해 Targets에서 상태가 up 되었는지 확인
Grafana에 접속하여
대쉬보드를 추가하고 12239 입력 후 확인
대화 UI에 질의를 하고 Grafana에서 서버 상태 값의 변화가 있는지 확인
질의를 했을 때 그래픽카드의 온도 변화와 파워 사용량에 차이가 발생하는 것을 확인