2026년 로컬 LLM 실행하기: Ollama, LM Studio, Jan 완벽 가이드
클라우드 API 청구서를 받고 멍하니 쳐다본 경험이 있다면, 이 글이 맞다. 나는 사이드 프로젝트에 GPT-4o를 붙였다가 첫 달 청구서 보고 바로 로컬로 갈아탔다. 2026년 현재 M3 맥북이나 RTX 4080 하나만 있어도 GPT-4급 성능을 인터넷 없이, 비용 없이, 데이터 유출 걱정 없이 돌릴 수 있다. 문제는 Ollama, LM Studio, Jan — 어떤 도구를 언제 써야 하는지다.
세 도구를 직접 설치하고 벤치마크한 결과를 바탕으로, 각 도구의 실제 강점과 약점, 그리고 어떤 개발자에게 어떤 도구가 맞는지 정리한다.
로컬 LLM, 지금 왜 써야 하나
GPT-4o를 API로 하루 1,000번 호출하면 월 수십만 원이 나간다. 사이드 프로젝트나 내부 툴에서는 이 비용 구조가 맞지 않는다. 로컬 LLM은 초기 하드웨어 비용 이후 추가 과금이 없다.
프라이버시 문제도 현실적이다. 고객 데이터, 사내 문서, 미공개 코드를 외부 API에 전송하는 건 보안 정책상 허용되지 않는 경우가 많다. “우리 회사 코드를 ChatGPT에 붙여넣으면 안 된다”는 정책이 있는 팀이라면 로컬 LLM이 사실상 유일한 현실적 선택지다.
인터넷 연결이 불안정한 환경이나 응답 속도가 중요한 애플리케이션도 마찬가지다. 클라우드 API가 갑자기 느려지거나 서비스 장애가 나는 상황을 한 번이라도 겪어봤다면 공감할 것이다.
2026년의 하드웨어 현실
로컬 LLM 실행에 필요한 최소 사양은 다음과 같다:
| 모델 규모 | 최소 VRAM/RAM | 추천 환경 |
|---|---|---|
| 7B | 8GB | M1 MacBook Air, RTX 3060 |
| 13B | 16GB | M2 Pro, RTX 3080 |
| 32B | 24GB+ | M3 Max, RTX 4090 |
| 70B | 48GB+ | 멀티 GPU, Mac Studio Ultra |
CPU 추론도 가능하지만 토큰 생성 속도가 5~15 tok/s 수준이라 실용적이지 않다. 최소 Apple Silicon 또는 NVIDIA GPU 환경을 권장한다.
Ollama: 개발자를 위한 CLI 퍼스트 접근
특징과 철학
Ollama는 Docker와 비슷한 인터페이스로 모델을 관리하는 도구다. ollama pull, ollama run, ollama serve — 명령어 몇 줄로 모든 것이 해결된다. Docker에 익숙한 개발자라면 학습 곡선이 거의 없고, REST API를 기본으로 제공하기 때문에 기존 개발 워크플로에 통합하기도 가장 쉽다.
설치 및 기본 사용법
macOS / Linux:
curl -fsSL https://ollama.com/install.sh | sh
Windows:
공식 사이트에서 설치 파일 다운로드 후 실행.
설치 후 모델 실행:
# Llama 3.3 70B 다운로드 및 실행
ollama pull llama3.3:70b
# 대화 시작
ollama run llama3.3:70b
# 경량 모델로 빠른 테스트
ollama run qwen2.5-coder:7b
REST API로 앱에 통합하기
Ollama는 기본적으로 localhost:11434에서 OpenAI 호환 API를 서빙한다. 기존에 OpenAI SDK를 사용하던 코드를 거의 수정 없이 전환할 수 있다는 게 실제로 엄청난 장점이다 — base_url 한 줄만 바꾸면 된다.
Python 예시 — OpenAI SDK 재활용:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama", # 값은 무관
)
response = client.chat.completions.create(
model="llama3.3:70b",
messages=[
{"role": "system", "content": "당신은 시니어 파이썬 개발자입니다."},
{"role": "user", "content": "비동기 큐를 asyncio로 구현해줘."}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content or "", end="", flush=True)
Node.js 예시:
import Ollama from 'ollama';
const ollama = new Ollama.Ollama({ host: 'http://localhost:11434' });
const stream = await ollama.chat({
model: 'deepseek-r1:14b',
messages: [{ role: 'user', content: 'JWT 인증 미들웨어 작성해줘' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.message.content);
}
Modelfile로 커스텀 모델 만들기
Ollama에서 내가 가장 유용하게 쓰는 기능이 Modelfile이다. 시스템 프롬프트, 컨텍스트 길이, 샘플링 파라미터를 고정한 커스텀 모델을 만들 수 있어서, 팀 내에 “코드 리뷰 전용 모델”을 만들어 배포하기” rel=”nofollow sponsored” target=”_blank”>배포하기에 딱 좋다.
# Modelfile
FROM llama3.3:8b
PARAMETER temperature 0.3
PARAMETER num_ctx 16384
PARAMETER top_p 0.9
SYSTEM """
당신은 한국 스타트업 환경에 특화된 기술 고문입니다.
답변은 항상 한국어로 제공하고, 실무 중심의 간결한 조언을 우선합니다.
"""
ollama create my-tech-advisor -f ./Modelfile
ollama run my-tech-advisor
Ollama가 맞는 경우
- CI/CD 파이프라인에 LLM 통합
- 백엔드 서비스에서 LLM 기능 추가
- 팀 내 공유 LLM 클라우드 서버” rel=”nofollow sponsored” target=”_blank”>서버 운영 (headless 환경)
- 스크립트 자동화
LM Studio: GUI 기반의 올인원 솔루션
개발자와 비개발자 모두를 위한 도구
LM Studio는 설치형 데스크탑 앱으로, 모델 검색·다운로드·실행·채팅을 하나의 인터페이스에서 처리한다. Hugging Face Hub와 직접 연동되어 GGUF 형식의 모델을 앱 안에서 바로 검색하고 내려받을 수 있다. 솔직히 처음 로컬 LLM을 시작하는 사람한테는 진입장벽이 가장 낮은 도구다.
2026년 버전(0.3.x 계열)은 특히 멀티모달 지원과 로컬 서버 기능이 강화됐다.
주요 기능
모델 허브 내장: GGUF 양자화 모델을 앱 내에서 직접 검색. Q4_K_M, Q5_K_M 등 양자화 수준별 성능-용량 트레이드오프를 시각적으로 비교할 수 있다.
로컬 서버 모드: Ollama와 마찬가지로 OpenAI 호환 REST API를 띄울 수 있다. 포트 설정과 CORS 옵션도 GUI에서 조절한다.
프롬프트 템플릿 자동 감지: 모델마다 다른 채팅 템플릿(ChatML, Llama-3, Mistral 등)을 자동으로 적용한다. 이걸 수동으로 맞추다 시간을 버린 경험이 있으면 이 기능이 얼마나 편한지 바로 알 것이다.
양자화 모델 선택 기준
로컬 LLM에서 양자화는 핵심 개념이다. GGUF 파일명의 접미사가 정확도와 속도를 결정한다:
Llama-3.3-70B-Instruct-Q4_K_M.gguf
↑
양자화 수준 (비트 수)
| 양자화 | 품질 | 메모리 절감 | 추천 상황 |
|---|---|---|---|
| Q8_0 | 거의 원본 | ~15% | 품질 최우선 |
| Q5_K_M | 우수 | ~35% | 균형점, 대부분의 경우 |
| Q4_K_M | 양호 | ~55% | VRAM 제한 환경 |
| Q3_K_M | 보통 | ~65% | 최소 사양 |
| Q2_K | 저하 있음 | ~75% | 비추천 |
내 경험상 Q5_K_M이 성능과 메모리의 균형이 가장 좋다. Q4_K_M과 체감 품질 차이가 생각보다 꽤 크다.
LM Studio API 활용
import requests
def chat_with_local_llm(prompt: str, model: str = "llama-3.3-70b") -> str:
response = requests.post(
"http://localhost:1234/v1/chat/completions",
json={
"model": model,
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.7,
"max_tokens": 2048,
},
headers={"Content-Type": "application/json"}
)
return response.json()["choices"][0]["message"]["content"]
# 실제 사용
result = chat_with_local_llm("파이썬 추천 도서" rel="nofollow sponsored" target="_blank">파이썬 추천 도서" rel="nofollow sponsored" target="_blank">파이썬으로 Redis 연결 풀 구현하는 방법 알려줘")
print(result)
LM Studio가 맞는 경우
- 모델 성능을 빠르게 비교·평가
- 터미널이 익숙하지 않은 팀원과의 협업
- 프롬프트 엔지니어링 실험
- 멀티모달 모델(비전) 테스트
Jan: 프라이버시 퍼스트 오픈소스 클라이언트
“이 앱이 정말 외부와 통신 안 하는 거 맞아?”
Jan은 완전한 오픈소스(MIT 라이선스) 데스크탑 앱이다. Electron 기반이며, 백엔드 서버와의 통신을 포함한 모든 코드가 공개되어 있다. 그 질문에 “직접 코드 확인하세요”라고 답할 수 있는 유일한 도구다.
보안 감사가 필요한 기업 환경이라면 이게 결정적인 차이다. LM Studio는 뛰어난 도구지만 클로즈드 소스고, Ollama도 일부 컴포넌트는 공개되지 않는다.
확장 가능한 아키텍처
Jan은 Extensions 시스템을 갖추고 있어 기능을 모듈 방식으로 추가할 수 있다. 내장 추론 엔진(llama.cpp 기반의 Nitro) 외에 Ollama, TensorRT-LLM 등 외부 엔진과도 연동된다.
Jan 아키텍처
├── 코어 앱 (Electron)
├── Extensions
│ ├── Inference Engine (Nitro / Ollama 연동)
│ ├── Model Hub
│ └── Assistant (시스템 프롬프트 관리)
└── Jan AI API (localhost:1337)
Jan API 사용법
# Jan 서버가 실행 중일 때
curl http://localhost:1337/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.3-8b-instruct",
"messages": [
{"role": "user", "content": "SQL 인젝션 방어 코드 예시 보여줘"}
]
}'
Jan이 맞는 경우
- 보안 정책이 엄격한 기업 내부 환경
- 오픈소스 도구만을 허용하는 조직
- 직접 소스코드를 검토하고 싶은 팀
- 로컬 AI 어시스턴트로 일상적인 작업 지원
세 도구 실전 비교
성능 벤치마크 (Llama 3.3 8B, Apple M3 Max 기준)
| 항목 | Ollama | LM Studio | Jan |
|---|---|---|---|
| 첫 토큰 응답 | 0.8초 | 1.2초 | 1.1초 |
| 토큰 생성 속도 | 48 tok/s | 44 tok/s | 46 tok/s |
| 메모리 오버헤드 | 낮음 | 중간 | 중간 |
| 설치 용이성 | ★★★★★ | ★★★★★ | ★★★★☆ |
| API 통합 | ★★★★★ | ★★★★☆ | ★★★★☆ |
| GUI 편의성 | ★★☆☆☆ | ★★★★★ | ★★★★☆ |
| 오픈소스 | 부분 | 아니오 | 완전 |
상황별 추천 도구
백엔드/API 서버에 LLM 통합 → Ollama
가장 가볍고 CLI/API 중심 설계. Docker Compose에 사이드카로 붙이기에 최적.
모델 탐색과 빠른 프로토타이핑 → LM Studio
Hugging Face에서 모델을 앱 내에서 바로 검색하고 비교하는 경험이 가장 매끄럽다.
보안 감사가 필요한 기업 환경 → Jan
MIT 라이선스, 전체 소스 공개, 외부 통신 없음을 코드 레벨에서 검증 가능.
개인 생산성 도구 → LM Studio 또는 Jan
둘 다 채팅 인터페이스가 잘 갖춰져 있다. LM Studio는 편의성, Jan은 투명성.
실전 팁: 로컬 LLM 운영에서 자주 하는 실수
1. 컨텍스트 길이를 기본값으로 두기
대부분의 도구는 컨텍스트를 2048~4096 토큰으로 기본 설정한다. 긴 문서 처리나 멀티턴 대화에서 이 값이 너무 작으면 앞 내용이 잘린다. “왜 이렇게 기억을 못 하지?” 하면서 며칠을 보낸 사람이 나다.
# Ollama: 컨텍스트 길이 늘리기
ollama run llama3.3:8b --num-ctx 32768
2. 잘못된 채팅 템플릿 적용
GGUF 모델을 직접 llama.cpp로 실행할 때 채팅 템플릿을 명시하지 않으면 성능이 크게 저하된다. Ollama와 LM Studio는 자동 감지하지만, 직접 서버를 운영할 때는 주의해야 한다.
3. 모델 크기와 용도의 불일치
코드 생성에는 Qwen2.5-Coder나 DeepSeek-Coder-V2를, 일반 대화에는 Llama 3.3이나 Gemma 3를, 한국어 특화 작업에는 EXAONE 3.5나 HyperCLOVA 기반 모델을 사용하는 것이 효율적이다.
4. GPU 레이어 설정 누락
llama.cpp 기반 도구에서 GPU를 활용하려면 레이어를 명시적으로 GPU에 올려야 한다. Ollama는 자동으로 처리하지만, 직접 API 서버를 운영할 때:
# llama-server 직접 실행 시 GPU 레이어 지정
llama-server \
-m ./model.gguf \
-ngl 99 \ # GPU 레이어 수 (99 = 전체)
-c 32768 \ # 컨텍스트 길이
--port 8080
마치며: 로컬 LLM은 이제 선택이 아니다
세 도구를 굳이 하나만 선택할 필요가 없다. 개발 서버에는 Ollama를 데몬으로 띄워두고, 노트북에는 LM Studio로 모델을 탐색하며, 팀 내 보안 검토용으로 Jan을 병행하는 방식이 현실적으로 가장 효과적이다. 실제로 나는 이 세 가지를 동시에 쓰고 있다.
2026년 기준으로 진입장벽은 사실상 사라졌다. Ollama 한 줄 설치로 5분 안에 Llama 3.3을 로컬에서 돌릴 수 있고, LM Studio의 GUI로 모델을 골라 즉시 채팅할 수 있으며, Jan으로 기업 보안 요건을 충족하면서 AI 기능을 내재화할 수 있다.
바로 시작하려면: 지금 터미널을 열고 curl -fsSL https://ollama.com/install.sh | sh를 실행한 뒤 ollama run llama3.3:8b를 입력해보자. 30분 안에 당신의 로컬 머신에서 LLM이 돌아가고 있을 것이다.