카테고리 없음

로컬 LLM 도구 비교 2026: Ollama vs LM Studio vs llamafile vs Jan

블로글러 2026. 5. 31. 15:35

 

로컬 LLM(Large Language Model, 대규모 언어 모델) 도구를 고를 때 가장 흔한 오해가 있습니다. "어느 도구가 가장 빠른가"를 먼저 따지는 것입니다. 그러나 Ollama, LM Studio, llamafile, Jan 네 도구는 모두 llama.cpp를 추론 백엔드로 사용합니다. 같은 모델을 같은 양자화로 돌리면 순수 추론 속도 차이는 5% 미만으로 알려져 있습니다. 결국 선택을 가르는 것은 속도가 아니라 인터페이스, 배포 방식, 생태계, 그리고 사용 목적입니다. 이 네 가지 기준으로 도구를 분해해 보겠습니다.

설치 방식부터 갈린다: 패키지 vs GUI vs 단일 파일

도구의 성격은 설치 단계에서 이미 드러납니다. Ollama는 CLI(Command Line Interface, 명령줄 인터페이스) 중심입니다. Linux는 단일 셸 명령으로 설치하고, macOS는 ollama.dmg를 드래그앤드롭, Windows는 OllamaSetup.exe 인스톨러를 씁니다. 설치 직후 백그라운드 서버가 http://localhost:11434/api 에서 자동으로 뜹니다.

Ollama의 기본 워크플로우는 명령 몇 줄로 끝납니다. 모델을 받고, 실행하고, 상태를 확인하는 흐름이 일관됩니다.

# Linux 설치
curl -fsSL https://ollama.com/install.sh | sh

# 모델 다운로드 및 실행
ollama pull gemma3
ollama run gemma3

# 실행 중인 모델 확인
ollama ps

# 로컬 모델 목록
ollama ls

ollama run은 모델이 로컬에 없으면 자동으로 내려받은 뒤 대화형 세션을 엽니다. 별도 설정 없이 곧바로 프롬프트를 입력할 수 있다는 뜻입니다.

LM Studio는 정반대로 GUI(Graphical User Interface, 그래픽 사용자 인터페이스)가 출발점입니다. 모델 검색, 다운로드, 파라미터 조정을 마우스로 처리합니다. 다만 LM Studio는 세 컴포넌트로 구성됩니다. GUI 앱(LM Studio), 헤드리스 데몬(llmster), CLI 도구(lms)입니다. llmster는 GUI 없이 서버나 CI(Continuous Integration, 지속적 통합) 환경에 배포하기 위한 컴포넌트로, LM Studio 0.4.0에서 도입됐습니다. 즉 데스크톱에서는 GUI로 쓰다가, 서버에서는 헤드리스로 같은 엔진을 돌릴 수 있습니다.

llamafile은 설치라는 개념 자체가 없습니다. llama.cpp와 Cosmopolitan Libc를 결합해 단일 실행 파일(.llamafile)로 배포하기 때문입니다. 파일 하나에 추론 엔진과 모델이 함께 담길 수 있고, Linux, Windows, macOS, FreeBSD, OpenBSD, NetBSD의 AMD64와 ARM64에서 그대로 실행됩니다. 의존성 설치 없이 USB에 담아 다른 PC에서 바로 돌리는 시나리오가 가능합니다.

Jan은 데스크톱 앱입니다. v0.7.6(2026년 1월 27일 릴리즈)에서 채팅 인터페이스를 완전히 재설계했습니다. 설치 후 별도 CLI 작업 없이 GUI에서 모델을 받고 대화할 수 있습니다. 설치 난이도가 가장 낮은 도구를 꼽으라면 단일 파일 실행의 llamafile과 GUI 완결형의 Jan이 양극단에 있습니다.

API 구조: OpenAI 호환은 기본, 차이는 디테일에 있다

네 도구 모두 OpenAI 호환 엔드포인트를 제공합니다. 기존 OpenAI SDK 코드에서 base URL만 바꾸면 로컬 모델로 갈아탈 수 있다는 의미입니다. 다만 포트와 추가 API에서 차이가 납니다. 로컬 API를 다른 도구와 연동하는 패턴은 로컬 LLM OpenAI 호환 API 가이드에서 더 자세히 다룹니다.

Ollama는 OpenAI 호환 엔드포인트를 http://localhost:11434/v1 에서 제공하면서, 동시에 자체 네이티브 API(/api/generate, /api/chat)를 별도로 운영합니다. 네이티브 API는 모델 관리나 스트리밍에서 Ollama 고유 기능에 접근할 수 있게 해 줍니다. 두 방식을 비교하면 차이가 명확합니다.

# 네이티브 chat API (localhost:11434)
curl http://localhost:11434/api/chat -d '{
  "model": "gemma3",
  "messages": [{"role": "user", "content": "Why is the sky blue?"}],
  "stream": false
}'

# OpenAI 호환 엔드포인트
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "gemma3", "messages": [{"role": "user", "content": "Hello!"}]}'

같은 모델을 두 경로 모두로 호출할 수 있으므로, 기존 OpenAI 코드 호환성과 Ollama 고유 기능을 상황에 맞게 골라 쓰면 됩니다.

LM Studio는 API 표면이 가장 넓습니다. 서버는 http://localhost:1234 에서 실행되며, REST API v1(/api/v1/*), OpenAI 호환 엔드포인트, 그리고 Anthropic 호환 메시지 엔드포인트까지 지원합니다. Claude 계열 SDK를 쓰는 코드도 로컬로 돌릴 수 있다는 점이 특징입니다. 인증 토큰은 Developer 탭에서 생성하고 Authorization: Bearer 헤더로 전달합니다. lms CLI로 모델을 로드하고 서버를 띄우는 흐름은 다음과 같습니다.

# 모델 로드 (GPU 100% 오프로드)
lms load --gpu=max --identifier="my-model"

# 서버 시작 (localhost:1234)
lms server start

# 특정 포트, 모든 인터페이스에서 시작
lms server start --port 1234 --address 0.0.0.0

# 로컬 모델 목록
lms ls

--address 0.0.0.0 옵션은 같은 네트워크의 다른 기기에서 접속하도록 서버를 외부에 노출합니다. 헤드리스 서버 운용 시 유용한 설정입니다.

llamafile의 기본 웹 UI 서버는 http://127.0.0.1:8080/ 에서 뜨고, 같은 서버가 OpenAI 호환 엔드포인트를 함께 제공합니다. Jan은 OpenAI 호환 REST API를 http://127.0.0.1:1337 에서 실행하며, 포트는 Settings > Local API Server에서 변경할 수 있습니다. 정리하면 OpenAI 호환은 네 도구의 공통 분모이고, Anthropic 호환과 네이티브 API 같은 추가 표면이 도구를 구분합니다.

플랫폼과 GPU 가속: 어디서 돌릴 것인가

하드웨어 환경이 도구 선택을 좌우하는 경우가 많습니다. 특히 GPU 가속 방식은 도구마다 지원 범위가 다릅니다. 어떤 GPU를 쓰는지에 따라 선택지가 좁아질 수 있다는 점에 주의해야 합니다.

Ollama는 GPU 가속 범위가 가장 넓습니다. NVIDIA는 CUDA, AMD는 ROCm(Linux/Windows, ROCm v7 드라이버 필요), Apple Silicon은 Metal과 MLX를 지원합니다. MLX는 M5 이상의 신경 가속기까지 활용하며, 실험적 Vulkan 지원은 OLLAMA_VULKAN=1 환경변수로 활성화합니다.

LM Studio는 플랫폼 지원에 제약이 있습니다. macOS는 Apple Silicon(M1-M4)만 지원하고 Intel Mac은 미지원입니다. Windows는 x64와 ARM(Snapdragon X Elite), Linux는 x64/ARM64를 AppImage로 배포합니다. NVIDIA RTX 50 시리즈(CUDA 12.8) 지원은 v0.3.15에서 추가됐습니다. Intel Mac을 쓴다면 LM Studio는 선택지에서 제외됩니다.

주요 항목을 한눈에 비교하면 다음과 같습니다.

도구 주 인터페이스 플랫폼 GPU 가속 기본 API 포트
Ollama CLI + API 서버 Linux/macOS/Windows CUDA, ROCm, Metal/MLX, Vulkan(실험) 11434
LM Studio GUI + CLI(lms) + 데몬(llmster) macOS(M1-M4), Windows(x64/ARM), Linux CUDA(RTX 50 포함), Metal 1234
llamafile 단일 실행 파일 + 웹 UI Linux/Win/macOS/BSD 계열, AMD64/ARM64 CUDA, ROCm, Metal 8080
Jan GUI 데스크톱 앱 데스크톱(GUI) llama.cpp, TensorRT-LLM 엔진 1337

llamafile은 BSD 계열까지 포함하는 가장 넓은 OS 호환성을 가집니다. GPU 가속은 CUDA(Linux/Windows), ROCm(Linux), Metal(macOS ARM64)을 지원하며, Metal은 Xcode Command Line Tools로 컴파일합니다. v0.10.0부터 새 빌드 시스템을 채택해 llama.cpp 최신 버전과 정렬했습니다. 하드웨어 선택 자체가 고민이라면 로컬 LLM 하드웨어 가이드를 함께 보면 좋습니다.

GPU 가속 범위만 놓고 보면 도구별 우선순위가 분명해집니다. AMD GPU에서 ROCm으로 돌리려면 Ollama나 llamafile(Linux)이 현실적인 선택입니다. Apple Silicon 사용자는 네 도구 모두 Metal 경로를 쓸 수 있으나, Ollama만 M5 이상 신경 가속기까지 활용하는 MLX 경로를 추가로 제공합니다. NVIDIA 최신 세대인 RTX 50 시리즈를 GUI 환경에서 쓰려면 LM Studio v0.3.15 이상이 필요합니다. 같은 GPU라도 도구와 버전에 따라 가속 여부가 갈리므로, 도입 전 자신의 하드웨어 조합을 먼저 확인해야 합니다.

단일 파일과 GUI의 양극단: llamafile과 Jan

llamafile의 진짜 가치는 이식성입니다. 설치 불필요 단일 파일이라는 특성 덕분에, 인터넷이 없는 환경이나 권한이 제한된 PC에서도 모델을 돌릴 수 있습니다. macOS와 Linux에서는 실행 권한만 주면 곧바로 서버가 뜹니다.

# llamafile 바이너리 다운로드 후 실행 권한 부여 (macOS/Linux)
chmod +x llamafile

# 외부 GGUF 모델 파일로 서버 실행
./llamafile --model ./my-model.gguf
# 기본 웹 UI: http://127.0.0.1:8080/

# Windows: 파일명에 .exe 확장자 추가 후 실행
# llamafile.exe --model gpt-oss.gguf

# API 호출 (서버 실행 후)
curl http://127.0.0.1:8080/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model": "local", "messages": [{"role": "user", "content": "Hello"}]}'

--model로 외부 GGUF 파일을 지정하면 실행 파일과 모델을 분리해 관리할 수 있습니다. 같은 llamafile 바이너리로 여러 모델을 바꿔 가며 쓰는 운영 방식입니다. GGUF 양자화 포맷이 생소하다면 GGUF 양자화 완전 정리에서 개념을 짚어 두는 편이 좋습니다.

이런 이식성은 배포 시나리오에서 특히 빛납니다. Ollama나 LM Studio는 대상 PC에 별도 설치와 모델 다운로드가 필요하지만, llamafile은 파일 전달만으로 같은 추론 환경을 재현합니다. 사내 폐쇄망이나 외부 인터넷이 차단된 데모 환경처럼 패키지 설치가 까다로운 곳에서 이 차이는 결정적입니다. 다만 단일 파일이라 GUI 기반 모델 관리 기능은 약하므로, 모델을 자주 바꾸는 작업보다는 고정된 모델을 안정적으로 배포하는 용도에 맞습니다.

Jan은 반대로 통합 워크스페이스를 지향합니다. 로컬 모델(llama.cpp, TensorRT-LLM 엔진)과 클라우드 모델(OpenAI, Anthropic, Groq, Mistral 등)을 동일한 인터페이스에서 연결합니다. 로컬과 클라우드를 한 화면에서 오가며 비교할 수 있다는 뜻입니다. 여기에 MCP(Model Context Protocol, 모델 컨텍스트 프로토콜) 통합과 에이전트 기능을 내장합니다. MCP를 더 알고 싶다면 MCP 입문 가이드를 참고하시기 바랍니다.

Jan은 CLI도 제공합니다. jan launch는 로컬 모델 서버를 시작하면서 에이전트 CLI와 연결합니다. CLI 바이너리는 Jan 데스크탑 앱 첫 실행 시 /usr/local/bin/jan 또는 ~/.local/bin/jan에 자동 설치됩니다. OpenAI 호환 API 호출과 CLI 에이전트 실행을 함께 보면 다음과 같습니다.

# Jan 데스크탑 앱에서 로컬 API 서버 활성화 후
# 기본 엔드포인트: http://127.0.0.1:1337

# OpenAI 호환 API 호출
curl http://127.0.0.1:1337/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "llama3.2:3b-instruct-q4_K_M",
    "messages": [{"role": "user", "content": "Hello!"}],
    "stream": false
  }'

# Jan CLI로 에이전트 시작 (특정 모델 지정)
jan launch claude --model janhq/Jan-code-4b-gguf

jan launch claude --model janhq/Jan-code-4b-gguf 형태로 특정 로컬 모델을 에이전트에 물릴 수 있습니다. 다만 Jan CLI 기능은 비교적 최근에 추가된 영역이므로, 운영 도입 전 현재 문서로 동작을 확인하는 편이 안전합니다.

용도별 선택 기준: 무엇을 쓸 것인가

앞서 짚었듯 추론 속도는 변별력이 거의 없습니다. 그렇다면 무엇을 기준으로 골라야 할까요? 사용 목적에 맞춘 판단 기준을 정리하면 다음과 같습니다.

서버 백엔드와 자동화에는 Ollama. CLI 우선 설계, 자동 실행되는 API 서버, 가장 넓은 GPU 가속 범위 덕분에 스크립트와 파이프라인에 끼워 넣기 쉽습니다. 도커 컨테이너나 백엔드 서비스에서 로컬 추론을 붙일 때 표준적인 선택입니다. RAG(Retrieval-Augmented Generation, 검색 증강 생성) 같은 애플리케이션 백엔드에 연결하는 경우가 대표적입니다. 오프라인 RAG 구성은 오프라인 로컬 RAG 구축에서 단계별로 다룹니다.

모델 탐색과 프롬프트 실험에는 LM Studio. GUI에서 파라미터를 조정하며 여러 모델을 비교하기 좋고, OpenAI와 Anthropic 양쪽 호환 API를 동시에 제공합니다. GUI로 검증한 뒤 llmster 데몬으로 같은 설정을 서버에 배포하는 흐름이 자연스럽습니다.

배포와 이식성에는 llamafile. 단일 파일로 의존성 없이 어디서나 실행됩니다. 폐쇄망, 데모 배포, 권한 제한 환경에서 강점이 분명합니다. 운영체제 호환 범위도 가장 넓습니다.

로컬과 클라우드를 함께 다루는 워크스페이스에는 Jan. 로컬 모델과 클라우드 모델을 한 인터페이스에서 연결하고, MCP와 에이전트 기능을 내장합니다. 로컬 추론과 외부 API를 오가며 작업하는 사용자에게 맞습니다. Ollama 단일 도구를 더 깊이 보려면 Ollama 완전 가이드를, 브라우저 안에서 모델을 돌리는 대안은 브라우저에서 LLM 실행(WASM·WebGPU)에서 확인할 수 있습니다.

결론은 단순합니다. 네 도구는 같은 엔진을 공유하므로 성능표를 비교할 이유가 없습니다. 자신의 사용 목적, 즉 서버 자동화인지, 모델 실험인지, 이식 배포인지, 통합 워크스페이스인지를 먼저 정하고 그에 맞는 도구를 고르십시오. 먼저 Ollama로 백엔드를 띄워 보고, 모델 비교가 필요해지면 LM Studio를 더해 보는 조합이 무난한 출발점입니다.

참고 자료

  • Ollama Quickstart: https://docs.ollama.com/quickstart
  • Ollama CLI Reference: https://docs.ollama.com/cli
  • Ollama GPU Support: https://docs.ollama.com/gpu
  • Ollama API (generate): https://docs.ollama.com/api/generate
  • Ollama OpenAI Compatibility: https://ollama.com/blog/openai-compatibility
  • Ollama MLX 블로그: https://ollama.com/blog/mlx
  • LM Studio: lmstudio vs llmster vs lms: https://lmstudio.ai/docs/app/basics/lmstudio-vs-llmster-vs-lms
  • LM Studio API Server: https://lmstudio.ai/docs/developer/core/server
  • LM Studio Headless: https://lmstudio.ai/docs/developer/core/headless
  • LM Studio System Requirements: https://lmstudio.ai/docs/app/system-requirements
  • LM Studio v0.4.0: https://lmstudio.ai/blog/0.4.0
  • LM Studio v0.3.15: https://lmstudio.ai/blog/lmstudio-v0.3.15
  • LM Studio CLI: https://lmstudio.ai/docs/cli
  • llamafile (mozilla-ai): https://github.com/mozilla-ai/llamafile
  • llamafile v0.10.0 릴리즈: https://github.com/mozilla-ai/llamafile/releases/tag/0.10.0
  • Jan API Server 문서: https://www.jan.ai/docs/desktop/api-server
  • Jan CLI 문서: https://www.jan.ai/docs/desktop/cli
  • Jan Changelog: https://www.jan.ai/changelog
  • Jan (janhq): https://github.com/janhq/jan
728x90
반응형