최근 발표된 DeepSeek-R1을 로컬 환경에서 실행한다면, Open WebUI 기반의 웹 인터페이스를 사용하면 더욱 편리하게 활용 가능하다. 이 글에서는 Ubuntu에서 Docker를 활용하여 Open WebUI를 설치하고, DeepSeek-R1 모델을 실행하는 방법을 정리한다.
들어가기 앞서,
DeepSeek-R1은 크게 두 가지 버전으로 제공된다.
원본 모델(DeepSeek-R1 671B): 671B(6,710억) 개의 파라미터를 가진 대형 모델로, 실행하려면 최소 400GB 이상의 VRAM이 필요하며, 현실적으로 로컬 환경에서 실행하는 것은 어렵다.
Distilled Models: 원본 모델의 학습된 추론 능력을 비교적으로 파라미터가 적은 Qwen, Llama 모델에 전이시켜 성능을 최적화한 버전이다. VRAM 요구량이 낮아 로컬에서도 실행할 수 있다. deepseek의 경우 아래의 distilled model들을 제공한다.
Qwen 2.5 기반
DeepSeek-R1-Distill-Qwen-1.5B (ollama run deepseek-r1:1.5b)
DeepSeek-R1-Distill-Qwen-7B (ollama run deepseek-r1:7b)
DeepSeek-R1-Distill-Qwen-14B (ollama run deepseek-r1:14b)
DeepSeek-R1-Distill-Qwen-32B (ollama run deepseek-r1:32b)
Llama 3.1 기반
DeepSeek-R1-Distill-Llama-8B (ollama run deepseek-r1:8b)
Llama 3.3 기반
DeepSeek-R1-Distill-Llama-70B (ollama run deepseek-r1:70b)

distilled model들은 DeepSeek-R1의 추론 능력을 더 작은 모델로 전달하기 위해 만들어졌으며, Qwen-32B 버전은 크기 대비 벤치마크에서 뛰어난 성능을 보여준다.
필자 역시 vram이 48GB에 제한이 있어 70B 모델까지 활용해보았다.
0. open-webui 없이 Ollama 설치, 실행하기
open-webui를 활용하고자 하는 경우 0번의 과정은 전혀 필요없으며 바로 1번 Docker 설치하기로 넘어가면 된다.
(오히려 모델 파라미터를 중복으로 다운로드하게 됨)
curl -fsSL https://ollama.ai/install.sh | sh
# 설치 후 버전확인
ollama --version
# deepseek-r1 다운로드 후 실행
ollama run deepseek-r1:70b

open-webui 없이도 간단히 Ollama만 설치하여 CLI환경에서 deepseek-r1과 같은 모델을 사용할 수 있다.
하지만 사용편의성을 위해 아래에서 open-webui를 활용한 deepseek-r1 설치방법을 정리한다.
1. Docker 설치하기
Docker는 컨테이너 기술을 활용하여 애플리케이션을 실행할 수 있도록 도와주는 도구이다. Open WebUI 역시 Docker 환경에서 간단히 실행할 수 있기 때문에 먼저 Docker를 설치해야 한다.
(선택) 기존 Docker 제거
깔끔하게 최신버전의 Docker를 설치하기 위해 기존에 설치된 Docker를 제거해준다.
Docker 패키지만 제거되며 컨테이너 데이터는 /var/lib/docker 디렉터리에 그대로 남아 있기 때문에 기존에 실행 중인 컨테이너들은 영향을 받지 않고 그대로 유지된다.
sudo apt remove docker docker-engine docker.io containerd runc
필수 패키지 설치
Docker 설치에 필요한 필수 패키지를 먼저 설치한다. 이 패키지들은 HTTPS를 통한 다운로드 및 GPG 키 관리를 돕는다.
sudo apt update
sudo apt install -y ca-certificates curl gnupg
Docker 공식 GPG 키 추가
Docker 저장소에서 제공하는 패키지를 신뢰할 수 있도록 GPG 키를 추가해야 한다. GPG 키는 패키지의 서명을 확인하여 악의적인 변조나 위변조된 소프트웨어가 설치되는 것을 방지하는 역할을 한다. Docker의 공식 저장소에서 제공하는 패키지가 올바르게 서명되었는지 검증하는 과정이다.
GPG 키를 추가하지 않으면, APT 패키지 관리자가 Docker 패키지를 신뢰할 수 없다고 판단하여 설치를 거부할 수 있다. 따라서, 보안과 패키지 무결성을 보장하기 위해 GPG 키를 반드시 추가한다.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
Docker 저장소 추가
Docker 패키지를 설치할 수 있도록 공식 Docker 저장소를 APT 소스 목록에 추가한다. Ubuntu 패키지 관리 시스템(APT)이 Docker의 최신 버전을 공식 저장소에서 다운로드하고 업데이트할 수 있도록 설정한다. 저장소를 추가하지 않을 경우 Ubuntu의 기본 저장소에서 제공하는 오래된 버전의 Docker가 설치될 수도 있다.
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker 최신 버전 설치
최신 버전의 Docker를 설치한다.
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker Compose 설치
Docker Compose는 여러 컨테이너를 함께 관리할 수 있는 도구이다. 기본적으로 Docker는 단일 컨테이너를 실행하는 데 초점을 맞추지만, 실제 환경에서는 여러 개의 컨테이너가 협력하여 하나의 서비스를 구성하는 경우가 많다. Docker Compose를 사용하면 여러 개의 컨테이너를 하나의 구성 파일(docker-compose.yml)로 정의하고, 한 번의 명령어로 실행 및 관리할 수 있다.
Open WebUI도 여러 컨테이너를 함께 실행해야 하므로 설치해야 한다.
sudo apt install -y docker-compose-plugin
설치 확인
docker compose version
Docker 서비스 실행 및 자동 시작 설정
설치 후 Docker를 실행하고, 시스템 부팅 시 자동으로 시작되도록 설정한다.
sudo systemctl start docker
sudo systemctl enable docker
Docker 설치 확인
Docker가 정상적으로 설치되었는지 확인한다.
docker --version
(선택) sudo 없이 Docker 사용하기
기본적으로 Docker 명령어를 실행하려면 sudo 권한이 필요하다. 하지만 아래 설정을 하면 sudo 없이 Docker를 실행할 수 있다.
재부팅 하거나 CLI창을 새로고친 이후부터 적용된다.
sudo usermod -aG docker $USER
NVIDIA Container Toolkit 설치
Docker 컨테이너에서 GPU를 활용하려면 nvidia-container-toolkit를 설치해야 한다.
(사전에 우분투 서버에 엔비디아 그래픽 드라이버는 설치되어 있어야한다.)
패키지 저장소 설정
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.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
NVIDIA Container Toolkit 설치 및 설정
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
설치 확인
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi
NVIDIA Container Toolkit가 정상 설치되면 위 명령어로 GPU에 접근할 수 있는지 확인할 수 있다.

위와 같이 정상적으로 GPU 정보가 출력되어야 한다.
2. Open WebUI 설치하기
Open WebUI는 로컬에서 LLM을 실행하고 관리할 수 있는 GUI 환경을 제공하는 도구로, ChatGPT와 유사한 환경을 제공한다. Docker를 활용하여 Open WebUI를 실행한다.
Open WebUI 다운로드
git clone https://github.com/open-webui/open-webui.git
cd open-webui
우선 레파지토리를 복사해온다.
Open WebUI 실행코드(오류 발생)
docker compose up -d
docker run \
-d \
-p 3000:8080 \
--gpus all \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:cuda
Docker Compose 명령어로 실행했을 때와, readme에 적혀있던 docker run의 명령으로 실행하였을 때 각각 오류가 발생했다.
Docker Compose 명령어로 실행했을 경우 GPU가 아닌 CPU로 추론되는 문제가 있었고, docker run 명령어의 경우에는 server connection error가 발생하는 문제가 있었다. 전자는 docker-compose.yml파일에 GPU관련 설정이 되어있지 않은 문제이고, 후자는 Ollama 컨테이너가 별도로 실행되지 않는 문제이다.
Open WebUI 실행코드(오류 수정)
docker compose 파일을 수정하기는 귀찮아서 파일을 수정할 경우 추후 업데이트시 충돌되거나 설정이 풀리는 문제가 발생할 수 있으므로 아래의 실행으로 같은 네트워크에서 ollama와 open webui가 실행되도록 한다.
docker network create openwebui_network
위 코드를 사용하여 동일하게 사용할 네트워크를 만들어준다.
docker run -d --gpus all --name ollama --network openwebui_network ollama/ollama:latest
Ollama를 실행해준다.
docker run -d -p 3000:8080 --gpus all --network openwebui_network \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
-e OLLAMA_BASE_URL=http://ollama:11434 \
ghcr.io/open-webui/open-webui:cuda
그 후 위 명령어를 실행하면 open webui 컨테이너가 백그라운드에서 실행되며, 3000번 포트로 접속가능하다.
Open WebUI 접속
웹 브라우저에서 아래 주소로 접속하여 Open WebUI 인터페이스를 확인할 수 있다.
http:///<Ubuntu접속 주소>:3000/
http://localhost:3000
Open WebUI가 정상적으로 실행되었다면, 사용자 계정 추가 후 아래와 같은 창을 볼 수 있다.



상단 모델 선택에서 검색 후 다운로드 하거나

관리자 설정 -> 모델에서 모델을 다운로드 할 수 있다. 모델은 ollama 공식사이트에서 검색해서 찾으면 된다.

Open WebUI는 deepseek-r1뿐만 아니라 다른 여러 모델들도 채팅 인터페이스를 통해 LLM과 대화할 수 있다.
Open WebUI 종료
docker 환경에서 실행했으므로 docker stop 명령어를 쓰거나, compose로 실행했을 경우 docker compose stop을 통해 종료할 수 있다.

'DATA, AI' 카테고리의 다른 글
| [발표요약]what is transformer? (0) | 2025.04.08 |
|---|---|
| Reinforcement Learning : Understanding Fundamentals – From Key Concepts to Policy Gradient Methods (0) | 2025.03.01 |
| GPU의 제한된 vram 환경에서 효율적으로 모델을 학습하는 방법 (1) | 2024.11.20 |
| huggingface로 협업하기 (2) | 2024.10.29 |
| 입출력 형태에 따른 자연어 처리 Task의 이해 (2) | 2024.10.02 |
개발새발라이프
hi there🙌