로컬 LLM 서빙 비교: Ollama·llama.cpp·vLLM을 용도별로 고르는 기준

설치 난도, 하드웨어, OpenAI 호환 API, 동시 요청 처리 방식으로 비교하고 실행 명령과 공통 클라이언트 코드까지

로컬 LLM 서빙 비교 썸네일

핵심 요약

  1. 세 도구 모두 OpenAI 호환 엔드포인트를 제공하므로 클라이언트는 base_url·키·모델명만 환경 변수로 분리한다.
  2. Ollama는 기본 127.0.0.1에만 바인딩되고 동시 처리 기본값이 1이며, 문맥 길이 기본 4,096토큰이다.
  3. llama.cpp 서버는 -c, -ngl, -np로 문맥·GPU 오프로드·동시 슬롯을 직접 지정하며 CPU 위주 서버에 맞다.
  4. vLLM은 Linux·GPU 환경에서 다수 사용자 동시 서빙에 맞지만 초기 환경 구성이 가장 까다롭다.
  5. 성능은 같은 모델·질문 세트로 직접 측정하고, 도구 호출·JSON 모드 등 기능 지원을 전환 전에 확인한다.

외부 API로 보낼 수 없는 데이터를 다루거나, 사내에서 오픈 웨이트 모델을 API처럼 쓰고 싶을 때 가장 먼저 고르는 것이 서빙 도구다. 이 글은 많이 쓰이는 세 가지, Ollama·llama.cpp 서버(llama-server)·vLLM을 공식 문서 기준으로 비교한다. 읽고 나면 "내 노트북에서 개발용", "팀 10명이 쓰는 사내 API", "수십 명 이상이 동시에 쓰는 서비스" 중 어디에 무엇을 둘지 정하고, 바꿀 때 코드를 거의 고치지 않는 구조로 시작할 수 있다.

비교 기준 네 가지

  • 설치·운영 난도 — 설치 명령 하나로 끝나는지, GPU 드라이버·파이썬 환경을 맞춰야 하는지
  • 하드웨어 — CPU만으로 가능한지, 어떤 GPU·OS를 지원하는지
  • API 호환성 — OpenAI 형식 엔드포인트를 제공해 기존 SDK를 그대로 쓸 수 있는지
  • 동시 요청 처리 — 여러 사용자가 동시에 보낼 때 큐에 쌓이는지, 묶어서 처리하는지

한눈에 보는 비교표

항목Ollamallama.cpp 서버vLLM
모델 형식Ollama 레지스트리 모델(내부적으로 GGUF 등)GGUF(양자화·F16)Hugging Face 형식 등
실행 환경macOS·Windows·Linux, CPU·GPUCPU·GPU, 경량 C/C++ 바이너리, Docker 이미지 제공Linux 중심, Python 3.11~3.14, NVIDIA·AMD 등 가속기(Apple Silicon은 vLLM-Metal)
OpenAI 호환 APIhttp://localhost:11434/v1//v1/chat/completions 등http://localhost:8000/v1
동시 처리OLLAMA_NUM_PARALLEL(기본 1), 초과분은 큐(OLLAMA_MAX_QUEUE 기본 512)슬롯 수 -np, 연속 배칭 기본 켜짐연속 배칭 기반의 고처리량 서빙
인증로컬은 키 무시(필드는 필요)--api-key--api-key(여러 키로 교체 가능)
맞는 상황개인 개발, 빠른 모델 교체자원이 적은 서버, CPU 위주, 세밀한 실행 옵션GPU 서버에서 다수 사용자 동시 서빙

값은 Ollama FAQ, Ollama OpenAI 호환 문서, llama.cpp 서버 README, vLLM 빠른 시작을 2026-10-13에 대조했다. 성능 수치는 모델·양자화·하드웨어에 따라 크게 달라 이 글에서는 비교하지 않는다. 같은 모델과 같은 질문 세트로 직접 측정해야 의미가 있다.

기준별 해설

설치와 운영: Ollama가 가장 가볍다

Ollama는 설치 후 모델 이름으로 내려받아 바로 실행한다. 기본으로 127.0.0.1:11434에만 바인딩되므로 다른 PC에서 쓰려면 OLLAMA_HOST를 바꿔야 한다. 이때 인증이 없는 상태로 네트워크에 열리므로 사내망이라도 리버스 프록시나 방화벽으로 접근을 제한한다. 모델은 기본 5분간 메모리에 머무른 뒤 내려가며(OLLAMA_KEEP_ALIVE), 문맥 길이 기본값은 4,096토큰이다. 긴 문서를 넣는 용도라면 OLLAMA_CONTEXT_LENGTH를 올려야 하는데, 문서는 병렬 수 × 문맥 길이만큼 메모리가 늘어난다고 설명한다.

자원이 제한된 서버: llama.cpp

llama-server는 의존성이 적은 C/C++ 서버라 GPU가 없거나 작은 서버에 맞다. 문맥 크기(-c), GPU로 올릴 레이어 수(-ngl), 동시 처리 슬롯 수(-np)를 직접 지정한다. 웹 UI가 기본 포함돼 있어 API를 붙이기 전에 브라우저로 모델 응답을 확인할 수 있다.

다수 사용자: vLLM

vLLM은 GPU 서버에서 여러 요청을 묶어 처리하는 데 초점을 둔다. 설치는 파이썬 환경에 패키지를 넣는 방식이고, OS·파이썬·가속기 조합을 맞춰야 해서 처음 구성은 셋 중 가장 손이 많이 간다. 대신 사용자가 늘어도 같은 GPU에서 처리량을 확보하기 쉽다.

실행 명령

# Ollama: 다른 PC에서 접속 허용 + 동시 2건 처리
OLLAMA_HOST=0.0.0.0:11434 OLLAMA_NUM_PARALLEL=2 ollama serve
ollama pull gpt-oss:20b

# llama.cpp: 문맥 8192, GPU 레이어 전부, 동시 4슬롯, 키 인증
./llama-server -m models/model.gguf -c 8192 -ngl 99 -np 4 \
  --api-key "$LLM_KEY" --host 0.0.0.0 --port 8080

# vLLM: 설치 후 OpenAI 호환 서버 실행
uv pip install vllm --torch-backend=auto
vllm serve Qwen/Qwen2.5-1.5B-Instruct --api-key "$LLM_KEY"

위 모델 이름은 각 문서의 예시를 그대로 쓴 것이다. 실제로는 라이선스와 한국어 성능을 확인해 고른다.

세 도구를 바꿔 끼울 수 있게 클라이언트 짜기

세 도구 모두 OpenAI 형식 엔드포인트를 제공하므로, 애플리케이션은 공식 OpenAI SDK를 쓰고 주소·키·모델 이름만 환경 변수로 뺀다. 이렇게 하면 개발은 Ollama로, 운영은 vLLM으로 바꿔도 코드 수정이 없다.

import os
from openai import OpenAI

client = OpenAI(
    base_url=os.environ.get('LLM_BASE_URL', 'http://localhost:11434/v1/'),
    api_key=os.environ.get('LLM_KEY', 'ollama'),   # Ollama 로컬은 값이 무시됨
)
res = client.chat.completions.create(
    model=os.environ['LLM_MODEL'],
    messages=[{'role': 'user', 'content': '연차 규정을 세 줄로 요약해 줘'}],
)
print(res.choices[0].message.content)

전환할 때 달라지는 부분은 기능 지원 범위다. 도구 호출, JSON 모드, 이미지 입력, 임베딩 엔드포인트 지원 여부가 도구와 모델에 따라 다르므로, 애플리케이션이 쓰는 기능 목록을 정해 두고 새 서버에서 하나씩 호출해 확인한다. 응답 형식을 스키마로 강제하는 방법은 LLM 구조화 출력에서 다뤘다.

상황별 선택

상황권장이유
개인 노트북에서 코딩 보조·실험Ollama설치와 모델 교체가 가장 간단
망분리 환경의 개발자 PCOllama 또는 llama.cpp오프라인 설치 파일과 모델 파일만 반입하면 동작
GPU 없는 사내 서버, 소수 사용자llama.cppCPU 실행과 슬롯 수 제어가 명확
GPU 서버, 다수 동시 사용자vLLM배칭 기반 처리량

망분리 PC에서 Ollama와 편집기 확장을 연결하는 전체 과정은 망분리 환경에서 Ollama와 Continue로 로컬 AI 코딩 환경 만들기에, 서버를 컨테이너로 배포하며 GPU를 설정하는 방법은 Docker로 AI 애플리케이션 개발·배포 환경 만들기에 정리했다. 로컬 모델이라도 로그에 개인정보가 남는 문제는 그대로이므로 LLM 호출 전 개인정보 마스킹도 함께 검토한다.

초보자가 자주 실수하는 포인트

  • OLLAMA_HOST를 0.0.0.0으로 열면서 인증·접근 제한을 두지 않는 경우
  • 문맥 길이를 올리면서 병렬 수에 비례해 메모리가 늘어나는 점을 계산하지 않는 경우
  • 다른 서버로 바꾸면서 도구 호출·JSON 모드 지원 여부를 확인하지 않는 경우

체크리스트

  • 예상 동시 사용자 수와 GPU 유무를 정했는가
  • 서버를 네트워크에 열 때 API 키나 프록시 인증을 설정했는가
  • 애플리케이션이 쓰는 기능(도구 호출, JSON, 임베딩)을 새 서버에서 확인했는가
  • base_url·키·모델명이 코드가 아니라 환경 변수에 있는가
  • 같은 질문 세트로 응답 시간과 품질을 측정했는가

자주 묻는 질문

LM Studio는 어디에 해당하나요?

데스크톱 앱 형태로 모델 내려받기와 로컬 서버 실행을 제공하는 도구라 용도상 Ollama와 가깝습니다. 이 글은 서버 운영 문서를 기준으로 비교했기 때문에 포함하지 않았으며, OpenAI 호환 서버 기능과 동시 처리 설정은 해당 문서에서 확인해야 합니다.

양자화 모델을 쓰면 품질이 얼마나 떨어지나요?

모델과 양자화 방식, 작업 유형에 따라 차이가 커서 일반화하기 어렵습니다. 서비스에서 쓰는 질문 세트로 원본(또는 높은 비트)과 양자화 모델의 답변을 나란히 비교해 허용 범위인지 판단하는 방법이 확실합니다.

참고 자료 · 검증 기준

위 자료와 내용을 대조한 날짜: . 도구·서비스 정책은 이후 바뀔 수 있으므로 적용 전 공식 문서를 다시 확인하세요.

이 글은 실제 실무 환경 테스트 및 검증된 기술 자료를 바탕으로 작성되었으며, 환경 변화에 따라 지속적으로 갱신됩니다.