Windows에서 Ollama + Open WebUI 이용하기 (Docker 이용)

    목차
반응형

Ollama

Ollama는 GPT-4o나 Gemini와 같은 LLM을 로컬 컴퓨터에서 돌릴 수 있도록 돕는 도구이다. 물론 오픈 소스로 풀린 LLM만 사용할 수 있긴 하지만 요즘엔 Llama나 Gemma 같은 성능이 좋은 오픈 소스 모델도 많이 등장했기 때문에 더욱 떠오르고 있는 툴이다.

근데 왜 로컬 컴퓨터에서 굳이 LLM을 실행시켜야 할까? 크게 두 가지 장점이 있을 것이다.

1. 보안 강화

딥시크 사태에서 알 수 있듯, 웹을 통해 사용하는 LLM은 내 데이터가 유출될 가능성이 있다. 딥시크 뿐만 아니라 OpenAI의 ChatGPT도 별도 설정을 하지 않을 경우 대화 내용을 모델 학습에 사용하게 되며, 임시 채팅을 하더라도 최대 30일동안 채팅 내용을 보관하게 된다. 혹시라도 OpenAI가 해킹을 당한다면 대화 내용이 유출될 가능성도 있다는 의미다.

ChatGPT의 내 데이터 사용

특히나 기업의 경우 내부 기밀이나 코드가 유출될 가능성이 있어 ChatGPT와 같은 LLM 사이트에 접근 자체를 막았다는 뉴스도 나왔다.

 

2. 비용 절감

게임을 위해 성능 좋은 GPU를 사놓고 게임을 안 하게 될 때, 이런 LLM을 돌리면 좋은 선택이 될 것이다. ChatGPT도 GPT-4o와 같은 수준의 모델을 사용하려면 구독을 해야 하고, API를 통해서 사용하려고 해도 어쨌든 비용이 발생한다. 이럴 때 남는 GPU로 GPT-4o에 버금가는 오픈 소스 모델을 사용하면 전기료만 지불하면 된다! 물론 이런 상황은 매우 제한적일 것이다.

 

 

Ollama 설치

본격적으로 Ollama 설치를 해보자. 

https://ollama.com/

다운로드! 해도 괜찮지만 우리는 Ubuntu 내에서 Ollama를 사용할 것이다. (이후 Open WebUI를 위해서이다.)

Ubuntu 설치 방법은 다음 링크를 참고하자. 만약 Ubuntu를 이미 사용하고 있다면, 22.04 버전인지를 확인해주자.

2025.02.28 - [데이터 분석] - Windows에서 WSL2와 Ubuntu 설치 및 Docker 사용하기

 

공식 github에 들어가보면 Linux 설치 방법이 있다.

`curl -fsSL https://ollama.com/install.sh | sh`

`ollama` 명령어를 실행하여 아래와 같은 내용이 나온다면 정상적으로 설치된 것이다.

 

 

Ollama 사용 (Ubuntu)

사용법은 매우 간단하다. `ollama run 모델명`을 입력하면 된다. 여기서 사용할 수 있는 모델 목록은 Ollama 홈페이지 좌측 상단의 Models을 클릭해보면 된다.

그 유명한 딥시크부터 llama 등 다양한 모델이 지원되고 있다.

 

둘러보니 LG에서 제작한 exaone이 제공되고 있었다. 크게 2.4b, 7.8b, 32b 세 종류가 있는데 실험을 위해 가장 작은 모델을 써보기로 했다.

 

`ollama run exaone3.5:2.4b` 명령어를 실행하면 모델을 우선 다운받고, 완료되면 모델이 실행이 된다.

 

위와 같이 Ubuntu 내에서 대화를 이어가게 된다. 생각보다 잘 대답하는 것으로 보인다.

 

`/bye` 명령어를 입력하면 대화를 종료한다.

 

Open WebUI

Ollama의 단점은 "이쁘지 않다"는 것이다. LLM에게 코드를 작성해달라고 시키거나, 문서 작성 등을 시켰을 때 가독성이 좋지 않다.

이 Ollama를 GUI를 통해 제공하는 툴이 바로 Open WebUI이다.

https://github.com/open-webui/open-webui

 

Open WebUI 설치

공식 github에 다양한 설치 방법이 제공되고 있는데, 본인 입맛에 맞게 선택하면 될 것 같다.

 

Ollama까지 하나의 컨테이너로 감싸서 사용하고 싶다면 CPU/GPU에 따라 아래 명령어로 설치하면 된다.

(CPU)

docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

(GPU)

docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

 

 

나 같은 경우 Ubuntu에 Ollama를 이미 설치했고 Nvidia GPU를 사용하고 있기 때문에 아래 명령어를 통해 open-webui를 사용할 것이다. 

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

open webui에서 Ollama가 응답하지 않는 오류가 있어, Ollama까지 컨테이너로 감싸는 버전으로 설치했다. 이 경우 용량을 위해 설치했던 Exaone 모델과 Ollama를 삭제해주자.

`ollama rm exaone3.5:2.4b`

sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
sudo rm $(which ollama)

 

 

실행 중 GPU 오류 해결

이 때 GPU가 있음에도 `docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]` 오류가 발생한다면 `nvidia-container-toolkit`을 설치하자.

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

 

또 다시 `E: Unable to locate package nvidia-container-toolkit` 오류가 발생한다면 툴킷 리포지토리를 추가하자.

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL 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

이런 결과가 나왔다면 툴킷이 잘 추가된 것이다.

만약 이런 결과가 아니라 html 내용이 등장한다면 Ubuntu 24.04의 문제이다. (Nvidia에서 아직 지원을 안 한다는 것 같다?) 나는 첫 설치 시도 때 실패하여 Ubuntu 22.04를 사용하는 것으로 해결하였다.

 

그럼 다시 툴킷을 설치하고 docker를 재시작해주자.

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

 

Open WebUI 사용

이미 docker는 만들어졌기 때문에 `docker ps -a`를 해보면 Open WebUI가 생성되었을 것이다. (STATUS: Created)

`docker start open-webui`로 깨워주자. STATUS가 health: starting에서 healthy가 될 때까지 기다려주자.

그럼 http://localhost:3000/ 를 열어 잘 실행되는지 확인해주자.

 

이런 페이지가 나오면 잘 된 것이다.

 

이름, 이메일, 비밀번호는 대충 작성하고 넘어가자.

 

좌측 상단 모델 선택에서 Ollama의 모델들을 다운받을 수 있다. 다만 검색 기능은 없으니 직접 모델명을 입력해주어야 한다.

사실 Ollama의 모델 뿐만 아니라 Hugging Face에 등록되어있는 gguf 모델들도 사용할 수 있다.

 

난 deepseek-r1과 llama3.2 두 개를 다운받았다.

 

좌: llama3.2, 우: deepseek-r1

llama나 deepseek나 경량화 모델은 한국어가 참 아쉽다.

 

그와중에 나의 1660s GPU는 혹사당하고 있다.

 

 

Open WebUI로 웹 기반 답변 생성하기

1. 직접 페이지 연결하기

`#url주소`를 입력하면 해당 URL 페이지의 내용을 Open WebUI가 긁어와서 RAG 기반 답변을 생성해준다.

여기서 이 '웹'을 눌러주면

이렇게 문서로 추가된다.

 

`[source_id>0]`과 같은 약간의 찐빠가 있긴 하지만 내용적으로는 문제없이 해당 문서 기반으로 답변을 잘 해준다.

 

2. 검색 기반 답변하기

serpapi나 google_pse 같은 검색  API가 있다면 ChatGPT나 Perplexity와 같은 서비스처럼 검색기능을 활성화하여 사용할 수도 있다. (우상단 프로필 - 관리자패널 - 설정 - 웹검색)

나는 serpapi의 API 키를 연결시켜주었다. (한 달 100건 무료)

 

"Ollama에 대해 알려줘"라는 질문에, Exaone은 모른다고 대답한다.

 

 

하지만 웹 검색 기능을 켠 후 답변을 생성하면 Ollama에 대해 잘 설명해준다.

 

 

 

Ollama와 Open WebUI를 잘 이용하면 남는 PC와 GPU를 이용하여 서버를 만들고, 나만의 봇을 만들어서 지인들에게 공유해볼 수도 있을 것 같다.

Open WebUI를 사용하지 않더라도 Ollama를 이용하여 API를 만들어볼 수도 있을 것 같다.

728x90
반응형