OpenWebUI와 llama.cpp로 자체 로컬 AI 채팅 실행 - Windows
Source: Dev.to
아래에 제공된 텍스트를 한국어로 번역해 주세요. (코드 블록, URL, 그리고 기술 용어는 그대로 두고, 마크다운 형식과 원본 레이아웃을 유지해 주세요.)
※ 번역이 필요한 실제 본문을 제공해 주시면 바로 작업을 진행하겠습니다.
TL;DR
OpenWebUI를 UI로, llama.cpp를 추론 서버로 사용하고 Hugging Face의 GGUF 모델을 이용한 로컬 ChatGPT‑유사 스택입니다. 모든 통신은 OpenAI 호환 API를 통해 이루어지므로 API 비용이 발생하지 않으며 데이터가 머신을 떠나지 않습니다.
- 프라이버시: 프롬프트와 응답이 머신에 머무릅니다.
- API 비용 없음: 사용량 기반 요금이나 할당량이 없습니다.
- 제어: 모델, 양자화, 컨텍스트 크기를 선택할 수 있습니다.
- 오픈 소스: OpenWebUI와 llama.cpp는 무료이며 감시 가능합니다.
System requirements
| Component | Minimum | Recommended |
|---|---|---|
| OS | Windows 11 | – |
| RAM | 16 GB | 32 GB (대형 모델에 도움이 됩니다) |
| GPU | optional (recommended for speed) | 8 GB VRAM or more |
| Disk | Enough for multi‑GB model files (4–8 GB per model) | – |
Q4 양자화된 7 B 모델은 많은 머신에서 실행됩니다; 대형 모델은 더 많은 메모리가 필요합니다.
스택의 세 구성 요소
- OpenWebUI – 브라우저 UI (채팅, 히스토리, 모델 선택).
- llama.cpp server – OpenAI와 호환되는 HTTP API를 사용한 로컬 추론.
- GGUF 모델 – 한 번 다운로드하고 디스크에 보관하는 가중치.
OpenWebUI는 HTTP를 통해 llama‑server와 통신합니다. 클라우드는 전혀 사용되지 않습니다.
Source:
Install llama.cpp (pre‑built binaries)
-
PowerShell을 열고
nvidia-smi를 실행하여 CUDA 버전(예: 12.x)을 확인합니다. -
llama.cpp releases 페이지로 이동하여 자신의 CUDA 버전에 맞는 빌드를 다운로드합니다.
-
Assets에서 CUDA runtime DLL bundle을 다운로드합니다(예:
cudart-llama-bin-win-cuda-12). -
메인 아카이브를 안정적인 폴더에 압축 해제합니다. 예:
C:\Program Files\llama.cpp\ -
해당 폴더를 시스템 PATH에 추가합니다
(Windows Search → Environment Variables → Path → Edit → New). -
CUDA 런타임 번들을 압축 해제하고 모든
.dll파일을llama-server.exe와 같은 폴더에 복사합니다. -
새 터미널을 열어(업데이트된 PATH가 로드되도록) 설치를 확인합니다:
llama-server --help도움말 출력이 보이면 설치가 성공한 것입니다.
OpenWebUI 설치 (Python 가상 환경)
venv 사용
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install open-webui
대안: Conda
conda create -n local_chat python=3.11 -y
conda activate local_chat
pip install open-webui
UI 시작:
open-webui serve
브라우저에서 http://localhost:8080(또는 터미널에 표시된 포트)로 이동합니다. UI가 표시되며, 모델 연결은 다음 단계에서 설정됩니다.
GGUF 모델 다운로드
이 가이드에서는 Qwen2.5‑Coder‑7B‑Instruct‑GGUF (Q4_K_M 양자화)를 사용합니다. Hugging Face 저장소에서 여러 양자화(Q2–Q8)를 찾을 수 있으며, Q4는 크기와 품질의 균형이 좋습니다.
-
Qwen2.5-Coder-7B-Instruct-Q4_K_M.gguf파일을 다운로드합니다. -
영구 폴더에 저장합니다, 예시:
C:\Users\<your_username>\.llm_models\<your_username>을 Windows 사용자 이름으로 교체하세요.
Run the llama.cpp server
OpenWebUI(8080 사용)와 충돌하지 않는 포트를 선택하세요. 여기서는 10000 포트를 사용합니다:
llama-server -m "C:\Users\<your_username>\.llm_models\Qwen2.5-Coder-7B-Instruct-Q4_K_M.gguf" --port 10000
이 터미널을 열어 두세요. 이제 서버는 다음 주소에서 OpenAI 호환 API를 제공합니다:
http://localhost:10000
OpenWebUI를 llama.cpp 서버에 연결하기
-
브라우저에서 OpenWebUI(
http://localhost:8080)를 엽니다. -
Settings → Connections(또는 버전에 따라 Admin → Connections) 로 이동합니다.
-
새로운 OpenAI‑compatible 연결을 추가합니다:
- Base URL:
http://localhost:10000/v1 - API key: 비워 두거나 필요하면
local과 같은 플레이스홀더를 사용합니다.
- Base URL:
-
연결을 저장하고, 해당 연결을 활성 모델로 선택한 뒤 테스트 메시지를 보냅니다. 모델이 응답하면 설정이 정상적으로 작동하는 것입니다.
문제 해결
| 문제 | 제안된 해결책 |
|---|---|
| OpenWebUI가 로드되지만 모델이 표시되지 않음 | llama-server가 실행 중인지, http://localhost:10000이 응답하는지 확인하세요 (브라우저나 curl로 시도해 보세요). |
| 연결 실패 | http://localhost:10000 대신 http://127.0.0.1:10000을 사용하세요. Windows 방화벽 설정을 확인하세요. |
| 성능이 느림 | 더 작은 모델이나 낮은 정밀도의 양자화(예: Q4)를 시도해 보세요. 컨텍스트 길이를 늘렸다면 줄이세요. NVIDIA GPU를 사용하는 경우 CUDA 빌드를 사용하고 런타임 DLL이 실행 파일과 같은 폴더에 있는지 확인하세요. |
얻는 것
- 완전 로컬 채팅 스택: UI는 OpenWebUI, 추론은 llama.cpp, 그리고 Hugging Face에서 제공하는 GGUF 모델.
- 외부 API 호출 없음, 유료 구독도 필요 없음.
- 유일한 제한은 RAM/VRAM 및 디스크 공간이며(모델은 보통 몇 GB씩 차지합니다).
다음 단계
- 다양한 모델(일반‑목적 vs. 코더)을 실험해 보세요.
- 속도와 품질의 균형을 맞추기 위해 다른 양자화(Q2, Q5, Q8)를 시도해 보세요.
- 작업량에 맞게 컨텍스트 길이를 조정하세요.