TechFeedTechFeed
AI/LLM

로컬 LLM 실행 가이드 — Ollama, LM Studio, llama.cpp

프라이버시·비용·오프라인이 중요한 상황에서 로컬 LLM을 실행하는 방법. Ollama 설치부터 모델 추천, API 호출, 프롬프트 체이닝까지.

한 줄 결론: 로컬 LLM은 프라이버시 보호, 비용 절감, 오프라인 실행이 필요한 상황에서 실질적인 대안이다. Ollama는 CLI 기반으로 가장 빠르게 시작할 수 있고, LM Studio는 GUI가 필요한 경우에 적합하며, llama.cpp는 저사양 환경에서 직접 빌드해 최적화하고 싶은 개발자용이다.

이 글에서는 세 도구의 설치부터 실행, 모델 선택, API 호출까지 실무 기준으로 정리한다.

로컬 LLM을 쓰는 이유 — 프라이버시, 비용, 오프라인

클라우드 LLM API는 편리하지만 세 가지 제약이 존재한다.

  • 프라이버시: 입력 데이터가 외부 서버로 전송된다. 사내 코드베이스, 고객 정보, 미공개 문서 등을 프롬프트에 포함하는 순간 데이터 외부 유출 리스크가 생긴다. 기업 보안 정책이 엄격한 환경에서는 API 사용 자체가 금지되기도 한다.
  • 비용: 고빈도 추론(대규모 배치 처리, 에이전트 루프, 지속적 코드 리뷰 등)은 API 비용이 빠르게 누적된다. 로컬 실행은 초기 하드웨어 비용 이후 추가 과금이 없다.
  • 오프라인/레이턴시: 인터넷 연결이 불안정한 환경, 레이턴시가 중요한 엣지 시나리오, 또는 API 서버 장애 시에도 로컬 모델은 계속 동작한다.

단, 로컬 LLM은 최신 클라우드 모델 대비 성능 격차가 있고, 모델을 로컬 스토리지에 다운로드해야 하며(7B 모델 기준 약 4~8GB), 추론 속도는 VRAM/RAM 용량에 직접 의존한다.

도구 비교 — Ollama vs LM Studio vs llama.cpp

항목OllamaLM Studiollama.cpp
인터페이스CLI + REST APIGUI (데스크톱 앱)CLI (직접 빌드)
설치 난이도낮음 (패키지 설치)낮음 (앱 설치)높음 (컴파일 필요)
지원 OSmacOS, Linux, WindowsmacOS, Windows, LinuxmacOS, Linux, Windows
모델 허브ollama.com/libraryHugging Face 연동GGUF 파일 직접 로드
OpenAI 호환 API지원 (/v1/chat/completions)지원 (로컬 서버 모드)지원 (server 실행 시)
Apple Silicon 최적화Metal GPU 지원MLX 지원 (M1~M4)Metal 지원 (빌드 플래그 필요)
NVIDIA GPU 지원CUDA 자동 감지CUDA 지원CUDA 빌드 플래그 필요
라이선스MIT무료 (비공개 소스)MIT

※ 2026년 3월 기준. 각 프로젝트 공식 저장소 및 문서 기반.

Ollama 설치 — 모델 다운로드부터 실행까지

Ollama는 현재 로컬 LLM 실행 도구 중 가장 설치와 운용이 간단하다. macOS / Linux에서 단일 명령으로 설치할 수 있고, OpenAI 호환 REST API를 로컬에서 바로 제공한다.

Ollama 설치 (macOS / Linux)
# macOS — Homebrew brew install ollama # Linux — 공식 설치 스크립트 curl -fsSL https://ollama.com/install.sh | sh # Windows — winget winget install Ollama.Ollama
모델 다운로드 및 실행
# Ollama 서버 시작 (백그라운드 실행) ollama serve # 모델 다운로드 + 대화 시작 (새 터미널) ollama run llama3.2 # 다른 모델 예시 ollama run mistral ollama run phi3 ollama run codellama:13b # 다운로드된 모델 목록 확인 ollama list # 특정 모델 삭제 ollama rm phi3

Ollama는 ollama run 명령 실행 시 모델이 없으면 자동으로 다운로드한다. 모델 파일은 macOS 기준 ~/.ollama/models/에 저장된다.

Ollama REST API 호출 (curl)
# chat completions (OpenAI 호환 엔드포인트) curl http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "llama3.2", "messages": [ {"role": "user", "content": "Python으로 피보나치 함수를 작성해줘"} ] }' # 스트리밍 응답 (기본 Ollama API) curl http://localhost:11434/api/generate \ -d '{"model": "llama3.2", "prompt": "Hello", "stream": false}'

LM Studio — GUI 환경에서 모델 관리하기

LM Studio는 Hugging Face의 GGUF 형식 모델을 GUI로 검색·다운로드하고, 로컬 서버를 띄워 OpenAI 호환 API로 사용할 수 있는 데스크톱 앱이다. 코드를 작성하지 않고 모델을 탐색하거나, 여러 모델을 빠르게 전환해 비교할 때 유용하다.

설치: lmstudio.ai에서 macOS / Windows / Linux용 패키지를 다운로드해 설치한다.

주요 기능:

  • Hugging Face 모델 검색 및 GGUF 파일 직접 다운로드
  • Apple Silicon에서는 MLX 백엔드를 선택해 Metal GPU 가속 활용 가능
  • 로컬 서버 모드: http://localhost:1234/v1에서 OpenAI 호환 API 제공
  • Chat UI 내장 — API 연동 없이 브라우저 없이 바로 대화 가능
  • 모델별 컨텍스트 길이, 온도, 반복 패널티 등 파라미터 직접 조정 가능

LM Studio를 로컬 서버로 띄운 후에는 Ollama와 동일한 방식으로 OpenAI SDK나 LangChain에서 base_url만 바꿔 사용할 수 있다.

LM Studio 로컬 서버 API 호출 (Python openai SDK)
from openai import OpenAI # LM Studio 로컬 서버 연결 client = OpenAI( base_url="http://localhost:1234/v1", api_key="lm-studio" # 임의 값, 로컬이므로 검증 안 함 ) response = client.chat.completions.create( model="lmstudio-community/Meta-Llama-3-8B-Instruct-GGUF", messages=[ {"role": "system", "content": "당신은 Python 전문 개발자입니다."}, {"role": "user", "content": "비동기 HTTP 클라이언트 예시를 작성해줘"} ], temperature=0.7 ) print(response.choices[0].message.content)

llama.cpp — 저사양 환경에서 직접 빌드하기

llama.cpp는 순수 C/C++로 구현된 LLM 추론 엔진이다. GPU 없이 CPU만으로도 실행 가능하고, Metal/CUDA/Vulkan 등 다양한 가속 백엔드를 지원한다. Ollama 자체도 내부적으로 llama.cpp를 사용한다. 직접 빌드하면 특정 하드웨어에 맞게 컴파일 플래그를 튜닝할 수 있다.

llama.cpp 빌드 및 실행 (macOS Apple Silicon 기준)
# 저장소 클론 git clone https://github.com/ggerganov/llama.cpp cd llama.cpp # macOS Metal 가속 빌드 cmake -B build -DLLAMA_METAL=ON cmake --build build --config Release -j$(sysctl -n hw.logicalcpu) # GGUF 모델 파일 다운로드 (Hugging Face CLI) pip install huggingface_hub huggingface-cli download \ bartowski/Meta-Llama-3.1-8B-Instruct-GGUF \ Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \ --local-dir ./models # 추론 실행 ./build/bin/llama-cli \ -m ./models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \ -p "Python으로 퀵소트 구현해줘" \ -n 512 # HTTP 서버 모드 (OpenAI 호환) ./build/bin/llama-server \ -m ./models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \ --host 0.0.0.0 --port 8080
GGUF 양자화 수준 선택 기준: Q4_K_M은 품질과 속도의 균형점으로 가장 많이 쓰인다. Q8_0은 품질이 높지만 파일이 크고 VRAM을 많이 사용한다. Q2_K는 가장 작지만 품질 저하가 눈에 띈다. 처음에는 Q4_K_M으로 시작하고, VRAM이 충분하다면 Q6_K 또는 Q8_0으로 올리는 것이 일반적이다.

모델 추천 및 VRAM 요구사항

모델파라미터Q4_K_M 크기최소 VRAM/RAM적합한 용도
Llama 3.2 3B3B~2GB4GB RAM간단한 요약, 분류, 빠른 응답
Llama 3.1 8B8B~5GB8GB VRAM / 16GB RAM범용 코딩, 문서 생성, Q&A
Mistral 7B v0.37B~4.4GB8GB VRAM / 16GB RAM유럽어 지원, 지시 따르기 성능 우수
Phi-3 Mini3.8B~2.4GB4GB VRAM / 8GB RAM코딩, 수학, 저사양 환경
Phi-3 Medium14B~8.5GB12GB VRAM / 32GB RAM복잡한 코드 생성, 긴 컨텍스트
CodeLlama 13B13B~7.9GB10GB VRAM / 32GB RAM코드 전용 (Python, JS, C++ 특화)
Llama 3.1 70B70B~42GB48GB VRAM / 64GB RAM고성능 추론 — M2 Ultra / NVIDIA A100급 필요

※ VRAM 수치는 Q4_K_M 양자화 기준. CPU 전용 실행은 RAM이 VRAM 역할을 대신하며 속도가 크게 느려진다.

Apple Silicon 사용자: M1/M2/M3/M4 맥은 통합 메모리(Unified Memory) 구조상 RAM이 곧 VRAM이다. M2 Pro 16GB는 Llama 3.1 8B를 VRAM 부족 없이 실행할 수 있다. M3 Max 48GB라면 Llama 3.1 70B도 느리지만 실행 가능하다.

NVIDIA GPU 사용자: RTX 3090(24GB VRAM)이면 Llama 3.1 70B Q4_K_M을 빠르게 실행할 수 있다. RTX 3060(12GB)은 13B 이하 모델이 현실적이다.

API 호출 예시 및 프롬프트 체이닝

Ollama Python SDK로 프롬프트 체이닝
import ollama def review_and_fix_code(raw_code: str) -> dict: """코드 리뷰 후 개선안 생성 — 2단계 프롬프트 체이닝""" # 1단계: 코드 리뷰 review = ollama.chat( model="llama3.2", messages=[ { "role": "system", "content": "당신은 Python 시니어 개발자입니다. 코드를 리뷰하고 문제점을 JSON으로 반환하세요." }, { "role": "user", "content": f"다음 코드를 리뷰해줘:\n\n{raw_code}" } ] ) review_result = review["message"]["content"] # 2단계: 개선된 코드 생성 fixed = ollama.chat( model="llama3.2", messages=[ { "role": "system", "content": "당신은 Python 시니어 개발자입니다. 리뷰 결과를 바탕으로 개선된 코드를 작성하세요." }, { "role": "user", "content": f"원본 코드:\n{raw_code}\n\n리뷰 결과:\n{review_result}\n\n개선된 코드를 작성해줘." } ] ) return { "review": review_result, "fixed_code": fixed["message"]["content"] } # 사용 예시 result = review_and_fix_code(""" def get_user(id): users = db.query('SELECT * FROM users') for u in users: if u.id == id: return u """) print(result["fixed_code"])
Ollama Python 패키지 설치: pip install ollama로 설치한다. OpenAI SDK를 그대로 쓰려면 pip install openaibase_url="http://localhost:11434/v1"로 설정하면 Ollama API를 OpenAI 호환 방식으로 사용할 수 있다.
한국어 성능: 7B~8B 모델은 한국어 지시 따르기 기본 성능은 갖추고 있지만, 긴 한국어 텍스트 생성에서 품질이 불안정할 수 있다. 한국어 특화 모델이 필요하다면 EXAONE 3.0 (LG AI Research), EEVE-Korean (Upstage) 같은 GGUF 변환 버전을 Hugging Face에서 찾아볼 수 있다.

자주 겪는 문제와 해결법

케이스 1 — Ollama 서버 포트 충돌 (EADDRINUSE)
원인: 11434 포트가 이미 다른 프로세스에서 사용 중이다.
해결: OLLAMA_HOST=0.0.0.0:11435 ollama serve처럼 환경변수로 포트를 변경하거나, lsof -i :11434로 점유 프로세스를 확인 후 종료한다.

케이스 2 — 모델 로드 후 OOM (Out of Memory)
원인: 모델 크기가 사용 가능한 VRAM/RAM을 초과한다.
해결: 더 낮은 양자화 수준의 모델로 교체한다 (Q4_K_M → Q3_K_S). 또는 ollama run llama3.2:1b처럼 더 작은 파라미터 모델을 선택한다.

케이스 3 — llama.cpp Metal 빌드 후 GPU가 사용되지 않음
원인: -DLLAMA_METAL=ON 플래그 없이 빌드했거나, 모델 레이어가 CPU에 고정돼 있다.
해결: cmake -B build -DLLAMA_METAL=ON으로 다시 빌드하고, 실행 시 -ngl 35 (GPU에 오프로드할 레이어 수)를 지정한다. -ngl 99는 가능한 모든 레이어를 GPU로 보낸다.

로컬LLMOllamaLM Studiollama.cppAI개인정보

관련 포스트

AI 코드 자동완성 도구 비교 2026 — Copilot vs Codeium vs Supermaven vs Tabnine2026-03-15Claude 4 모델 완벽 가이드 — Opus vs Sonnet, 어떤 모델을 써야 하나2026-03-16AI 코딩 에이전트 아키텍처 해부 — 내부 동작 원리와 설계 패턴2026-03-16