llama-server로 Qwen3 27B GGUF 로컬 서빙 — Ollama 대신 쓰는 이유
Ollama 말고 llama.cpp의 llama-server로 GGUF 모델을 직접 서빙하는 방법. API 호환성과 속도 차이.
Ollama가 있는데 왜 llama-server를 쓰나
Ollama는 편합니다. 모델 관리도 자동이고 API도 간단합니다.
근데 GGUF 파일을 직접 가져다 쓸 때 llama-server가 더 유연합니다.
- Ollama: 모델을 Ollama 형식으로
import해야 함 - llama-server: GGUF 파일 경로만 지정하면 바로 서빙
Qwen3 27B GGUF를 HuggingFace에서 받아서 바로 돌릴 때 llama-server가 편했습니다.
llama-server가 뭔가
llama.cpp 프로젝트에 포함된 HTTP 서버입니다. GGUF 모델을 OpenAI API 호환 형식으로 서빙합니다.
OpenAI API 호환이라 openai Python 패키지를 그대로 쓸 수 있습니다.
설치
Windows에서:
# 사전 설치: Visual Studio Build Tools (C++ 컴파일러 필요)
# llama.cpp 빌드
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake .. -DLLAMA_CUDA=ON # GPU 사용
cmake --build . --config Release
빌드 후 build/bin/llama-server.exe 생성됩니다.
또는 GitHub Releases에서 미리 빌드된 바이너리를 받을 수 있습니다 (CUDA 버전 선택).
모델 다운로드
HuggingFace에서 GGUF 파일을 받습니다.
# huggingface-cli 사용
pip install huggingface-hub
huggingface-cli download unsloth/Qwen3.6-27B-GGUF \
--local-dir D:/models/qwen3-27b \
--include "*.Q4_K_M.gguf"
Q4_K_M: 4비트 양자화. 16GB VRAM에서 27B 모델 돌릴 수 있는 수준.
서버 실행
llama-server.exe `
--model D:/models/qwen3-27b/Qwen3.6-27B-Q4_K_M.gguf `
--port 11440 `
--ctx-size 8192 `
--n-gpu-layers 999 `
--host 0.0.0.0
파라미터:
--n-gpu-layers 999: GPU VRAM에 최대한 올림 (숫자가 크면 전부 GPU)--ctx-size 8192: 컨텍스트 길이 (길수록 VRAM 더 씀)--port 11440: Ollama(11434)와 포트 구분
Python에서 호출
OpenAI 호환이라 openai 패키지 그대로 씁니다:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11440/v1",
api_key="dummy" # 로컬이라 아무 값이나
)
response = client.chat.completions.create(
model="qwen3-27b", # 모델명은 아무거나
messages=[{"role": "user", "content": "안녕"}],
max_tokens=500
)
print(response.choices[0].message.content)
Ollama API와 비교
| Ollama | llama-server | |
|---|---|---|
| GGUF 직접 사용 | import 필요 | 파일 경로만 |
| API 형식 | Ollama 전용 + OpenAI 호환 | OpenAI 호환 |
| 모델 관리 | ollama pull/list | 직접 파일 관리 |
| GPU 설정 | 자동 | —n-gpu-layers 조정 필요 |
| 속도 | 비슷 | 비슷 |
겪었던 문제
CUDA 버전 불일치
미리 빌드된 바이너리를 받았는데 CUDA 버전이 드라이버와 안 맞았습니다.
CUDA error: no kernel image is available
해결: 직접 소스 빌드 또는 드라이버에 맞는 CUDA 버전의 바이너리 선택.
VRAM 부족
27B Q4_K_M 모델이 약 15GB VRAM 씁니다. 16GB가 빡빡합니다.
컨텍스트 길이 줄이거나 더 작은 양자화 사용:
Q4_K_M → Q3_K_M (VRAM 덜 씀, 품질 조금 떨어짐)
JARVIS에서 사용
코딩봇이 이 서버를 씁니다. CoT 코딩 작업용.
포트 11440으로 서빙, OpenAI 호환 API로 호출. Ollama(11434)와 별도로 돌아갑니다.
큰 모델이라 느립니다. 빠른 응답이 필요한 작업은 Ollama의 작은 모델을 씁니다.