SOFTMOA TECHNOLOGY

로컬 LLM 운영 가이드: Ollama와 vLLM

소프트모아가 정리한 기술 기록입니다.

Contents
작성일 2026. 02. 11.

개요

클라우드 LLM API는 편리하지만 비용, 데이터 프라이버시, 지연 시간 면에서 한계가 있습니다. 특히 기업 환경에서는 민감한 데이터를 외부 서버로 전송할 수 없는 경우가 많습니다. 이런 요구를 충족하는 것이 로컬 LLM 운영입니다.

2025년 현재, Llama 3.3, Mistral, Qwen 2.5 등 오픈 모델의 성능이 크게 향상되었고, Ollama와 vLLM 같은 도구로 쉽게 배포할 수 있게 되었습니다. 이 글에서는 로컬 LLM을 설치하고 프로덕션 수준으로 운영하는 방법을 안내합니다.

핵심 개념: Ollama vs vLLM

  • Ollama: 개인 개발자와 소규모 팀을 위한 간편 LLM 실행 도구. Docker처럼 모델을 pull하고 바로 실행. macOS/Linux/Windows 지원. 개발 및 프로토타이핑에 최적.
  • vLLM: 프로덕션급 고성능 LLM 서빙 엔진. PagedAttention으로 메모리 효율 극대화. OpenAI 호환 API 제공. 배치 처리와 높은 동시성 지원.

간단히 말해, Ollama는 개발 편의성, vLLM은 프로덕션 성능에 초점을 맞춥니다.

실전 예제: 설치부터 API 서빙까지

1. Ollama로 빠르게 시작하기

# macOS 설치
brew install ollama

# 또는 Linux
curl -fsSL https://ollama.ai/install.sh | sh

# 모델 다운로드 및 실행
ollama pull llama3.3:70b
ollama pull mistral:7b
ollama pull codellama:13b

# 대화형 실행
ollama run llama3.3:70b

# API 서버로 실행 (기본 포트 11434)
ollama serve

# API 호출 예시
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.3:70b",
  "prompt": "Python으로 퀵소트를 구현해줘",
  "stream": false
}'

2. Python에서 Ollama 사용

import ollama

# 기본 대화
response = ollama.chat(
    model='llama3.3:70b',
    messages=[
        {"role": "system", "content": "당신은 시니어 개발자입니다."},
        {"role": "user", "content": "FastAPI에서 미들웨어 구현 방법을 알려줘"}
    ]
)
print(response['message']['content'])

# 스트리밍 응답
stream = ollama.chat(
    model='llama3.3:70b',
    messages=[{"role": "user", "content": "Docker 컨테이너 최적화 방법"}],
    stream=True
)
for chunk in stream:
    print(chunk['message']['content'], end='', flush=True)

# 임베딩 생성 (RAG용)
embedding = ollama.embeddings(
    model='nomic-embed-text',
    prompt='로컬 LLM의 장점'
)
print(f"벡터 차원: {len(embedding['embedding'])}")

3. vLLM으로 프로덕션 서빙

# vLLM 설치
pip install vllm

# OpenAI 호환 API 서버 실행
python -m vllm.entrypoints.openai.api_server \
  --model meta-llama/Llama-3.3-70B-Instruct \
  --tensor-parallel-size 2 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.9 \
  --port 8000

# 기존 OpenAI SDK로 그대로 사용 가능
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")
response = client.chat.completions.create(
    model="meta-llama/Llama-3.3-70B-Instruct",
    messages=[{"role": "user", "content": "쿠버네티스 배포 전략을 설명해줘"}],
    temperature=0.7
)

활용 팁

  • GPU 메모리 계산: 7B 모델은 약 14GB(FP16), 70B 모델은 약 140GB 필요. 양자화(Q4)를 사용하면 약 1/4로 줄일 수 있습니다.
  • 양자화 활용: GGUF(Ollama)나 AWQ/GPTQ(vLLM) 양자화 모델을 사용하면 성능 손실은 5% 이내로 메모리를 크게 절약합니다.
  • 모델 선택 기준: 코딩은 CodeLlama/DeepSeek Coder, 한국어는 SOLAR/KULLM, 범용은 Llama 3.3이 추천됩니다.
  • 캐싱 전략: vLLM의 prefix caching을 활성화하면 동일한 시스템 프롬프트를 사용하는 요청의 처리 속도가 크게 향상됩니다.
  • 모니터링: Prometheus + Grafana로 토큰 처리량, 지연 시간, GPU 활용률을 모니터링하세요.

마무리

로컬 LLM은 비용 절감과 데이터 보안의 두 마리 토끼를 잡을 수 있는 현실적 선택지입니다. Ollama로 빠르게 프로토타이핑하고, 검증된 모델을 vLLM으로 프로덕션 배포하는 것이 가장 효율적인 워크플로우입니다. 오픈 모델의 발전 속도를 고려하면, 로컬 LLM은 앞으로 더욱 강력한 선택지가 될 것입니다.

Share this

AI

Have a questions?

견적 및 기술문의

mobile : 010-7931-4813

Contact Form