목차
llama-cpp를 직접 사용하면 Ollama보다 1.5~1.8배 빠른 성능, IQ2~BF16 전 범위 양자화 지원, 신모델 즉시 사용이 가능하다. Ollama에서 하던 세 가지 작업을 llama.cpp로 대체하는 방법을 정리한다.
Ollama vs llama.cpp 치트시트
| Ollama | llama.cpp |
|---|---|
ollama run gemma4 | llama-cli -hf ...:Q4_K_M -cnv |
ollama serve | llama-server -hf ... |
| Ollama 데스크탑 앱 | localhost:8080 내장 웹 UI |
ollama list | ls ~/.cache/huggingface/hub/ |
ollama pull | 첫 실행 시 -hf 플래그로 자동 다운로드 |
| Modelfile 파라미터 | CLI 플래그 (--temp, --ctx-size 등) |
~/.ollama/models (해시) | ~/.cache/huggingface (읽기 가능 디렉터리) |
| TTL 자동 언로드 | llama-swap의 ttl 설정 |
설치
# macOS
brew install llama.cpp
# 소스 빌드
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp && cmake -B build && cmake --build build --config ReleaseApple Silicon에서는 Metal GPU 가속이 자동으로 활성화된다.
1. 인터랙티브 챗 (ollama run 대체)
llama-cli -hf unsloth/gemma-4-26B-A4B-it-GGUF:Q4_K_M -cnv- 모델이 없으면 Hugging Face에서 자동 다운로드
- Metal GPU 가속으로 로드
-cnv는 대화 모드- 종료 시 즉시 메모리 해제 — 백그라운드 데몬 없음
파라미터 조정:
llama-cli \
-hf unsloth/gemma-4-26B-A4B-it-GGUF:Q8_0 \
--ctx-size 0 \ # 모델 최대 컨텍스트 (256K)
--temp 0.7 \
-cnvOllama에서 온도 변경 시 Modelfile 작성 + ollama create + 수십 GB 복사가 필요했던 것과 대조적이다.
2. API 서버 (ollama serve 대체)
llama-server -hf unsloth/gemma-4-26B-A4B-it-GGUF:Q4_K_M --ctx-size 0
# localhost:8080 에서 OpenAI 호환 API 제공Continue, aider, Open WebUI 등 기존 Ollama 클라이언트를 그대로 연결할 수 있다.
# curl 테스트
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "gemma-4", "messages": [{"role": "user", "content": "hello"}]}'Python OpenAI SDK:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8080/v1", api_key="unused")3. 데스크탑 UI (Ollama 앱 대체)
llama-server 기동 후 브라우저에서 http://localhost:8080을 열면 내장 채팅 UI가 나온다. 별도 앱 설치 불필요.
양자화 선택 기준
Gemma 4 26B-A4B-it 예시 (M4 Max 64GB 기준):
| 양자화 | 크기 | 추천 |
|---|---|---|
| UD-IQ2_XXS | ~10 GB | RAM 절약 우선 |
| UD-Q4_K_M | ~17 GB | 품질·용량 최적 균형 |
| UD-Q5_K_M | ~21 GB | Q4보다 명확히 좋음 |
| Q8_0 | ~27 GB | 무손실에 가까움 |
| BF16 | ~50.5 GB | 풀프리시전 |
Ollama는 Q4_K_M과 Q8_0만 제공하지만 llama.cpp는 Hugging Face의 전 범위를 사용할 수 있다.
모델 관리
# 다운로드된 모델 목록
ls ~/.cache/huggingface/hub/
# models--unsloth--gemma-4-26B-A4B-it-GGUF
# models--mlx-community--Qwen3.5-9B-MLX-4bit
# hf CLI 설치 후 상세 조회
uv tool install huggingface_hub
hf cache ls
# 삭제
hf cache prune다중 모델 핫스왑: llama-swap
단일 엔드포인트에서 여러 모델을 자동 로드/언로드하려면 llama-swap을 사용한다.
brew tap mostlygeek/llama-swap
brew install llama-swapconfig.yaml 예시:
models:
gemma4:
cmd: llama-server --port ${PORT} -hf unsloth/gemma-4-26B-A4B-it-GGUF:Q4_K_M --ctx-size 0
ttl: 120 # 2분 유휴 후 자동 언로드
aliases:
- gemma-4-26b
qwen3:
cmd: llama-server --port ${PORT} -hf unsloth/Qwen3-30B-A3B-GGUF:Q4_K_M --ctx-size 0
ttl: 120llama-swap --config config.yaml --listen :8080model 필드로 모델을 선택하면 자동으로 교체된다. http://localhost:8080/ui에서 실행 상태 모니터링 가능.
전환 이유 요약
- 성능: 커뮤니티 벤치마크 기준 1.5~1.8배 빠름
- 신모델: Hugging Face GGUF는 릴리스 수 시간 내 등장
- 벤더 락인 없음: 평범한 GGUF 파일, 어떤 도구에서도 사용 가능
- 채팅 템플릿: GGUF 내장 Jinja 자동 사용, Modelfile 불필요
- 백그라운드 데몬 없음: 사용 안 할 때 리소스 점유 없음
참고 자료
- Migrating to llama.cpp — willschenk.com (2026-04-16)
- llama.cpp GitHub — GitHub 공식 저장소
- llama-swap — GitHub 공식 저장소