Ollama 로컬 LLM 실행 완벽 가이드 — 설치부터 API 연동까지
Ollama 설치(macOS/Linux/Windows), 모델 다운로드, REST API 서버 활용, Modelfile 커스터마이징, GPU 메모리 관리, Open WebUI 연동까지.
한 줄 요약: Ollama는 macOS·Linux·Windows에서 LLaMA 3, Mistral, Gemma 같은 오픈소스 LLM을 인터넷 연결 없이 로컬에서 실행할 수 있는 런타임이다. 설치부터 API 서버 활용, GPU 가속, 모델 커스터마이징까지 실무에서 바로 쓸 수 있는 설정 전반을 다룬다.
- API 비용 없이 LLM을 로컬에서 돌리고 싶은 개발자
- 프라이버시 이유로 외부 API에 데이터를 보내기 어려운 경우
- Ollama REST API를 자체 앱에 연동하려는 경우
- Modelfile로 시스템 프롬프트를 고정한 커스텀 모델을 만들고 싶은 경우
- Open WebUI 같은 ChatGPT 대체 UI를 로컬에 구축하려는 경우
Ollama 설치 — macOS / Linux / Windows
Ollama 공식 사이트(ollama.com)에서 플랫폼별 설치 방법을 제공한다. 공식 GitHub 저장소(github.com/ollama/ollama)에서 최신 릴리스와 변경 이력을 확인할 수 있다.
macOS: .dmg 설치파일을 내려받거나 Homebrew를 사용한다. 설치 후 메뉴바에 Ollama 아이콘이 표시되고 백그라운드 서버(localhost:11434)가 자동으로 뜬다.
Linux: curl 원라이너 설치 스크립트가 공식 권장 방법이다. 설치 후 ollama serve 명령으로 서버를 직접 시작하거나 systemd 서비스로 등록한다.
Windows: 공식 .exe 설치 파일을 사용한다. WSL2 없이 네이티브 Windows에서 실행된다. NVIDIA GPU도 인식한다.
macOS — Homebrew 설치brew install ollama # 서버 시작 ollama serve
Linux — 공식 설치 스크립트curl -fsSL https://ollama.com/install.sh | sh # systemd 서비스 등록 및 시작 sudo systemctl enable ollama sudo systemctl start ollama # 상태 확인 sudo systemctl status ollama
11434 포트를 사용한다. 이미 다른 프로세스가 해당 포트를 쓰고 있다면 OLLAMA_HOST=0.0.0.0:11435 ollama serve처럼 환경변수로 포트를 바꿀 수 있다.모델 다운로드와 실행 — llama3, mistral, gemma
Ollama는 ollama pull로 모델을 내려받고 ollama run으로 즉시 대화를 시작한다. 모델은 ~/.ollama/models에 저장된다. 이미 내려받은 모델은 오프라인에서도 동작한다.
현재 Ollama 라이브러리(ollama.com/library)에 올라온 주요 모델과 권장 메모리 요구사항은 다음과 같다.
| 모델 | 태그 예시 | 최소 RAM | 특징 |
|---|---|---|---|
| LLaMA 3.2 | llama3.2 | 4 GB | 3B 기본 모델, 빠름 |
| LLaMA 3.1 | llama3.1:8b | 8 GB | 균형잡힌 성능 |
| Mistral | mistral | 8 GB | 코드/지시 준수 강점 |
| Gemma 2 | gemma2:9b | 8 GB | Google, 다국어 강점 |
| Qwen 2.5 | qwen2.5:7b | 8 GB | 한국어·중국어 강점 |
| Phi-4 | phi4 | 8 GB | Microsoft, 소형 고성능 |
| DeepSeek-R1 | deepseek-r1:8b | 8 GB | 추론 특화 |
모델 다운로드 및 실행# 모델 내려받기 ollama pull llama3.2 ollama pull mistral ollama pull gemma2:9b # 대화 시작 (내려받기 포함) ollama run llama3.2 # 설치된 모델 목록 ollama list # 특정 모델 삭제 ollama rm mistral
Ollama REST API — 자체 앱 연동
Ollama는 localhost:11434에 REST API 서버를 띄운다. OpenAI API와 호환되는 엔드포인트도 제공하므로, OpenAI SDK를 사용하는 기존 코드를 base URL만 바꿔서 재활용할 수 있다.
주요 엔드포인트:
POST /api/generate— 단순 텍스트 생성POST /api/chat— 멀티턴 대화 (messages 배열)GET /api/tags— 설치된 모델 목록POST /v1/chat/completions— OpenAI 호환 엔드포인트
curl로 API 직접 호출# 기본 generate curl http://localhost:11434/api/generate \ -d '{"model":"llama3.2","prompt":"Node.js에서 비동기 처리란?","stream":false}' # chat (멀티턴) curl http://localhost:11434/api/chat \ -d '{"model":"llama3.2","messages":[{"role":"user","content":"타입스크립트와 자바스크립트 차이를 설명해줘"}],"stream":false}'
OpenAI SDK로 Ollama 연결 (Node.js)import OpenAI from 'openai'; const client = new OpenAI({ baseURL: 'http://localhost:11434/v1', apiKey: 'ollama', // 아무 문자열이나 가능 }); const response = await client.chat.completions.create({ model: 'llama3.2', messages: [{ role: 'user', content: 'Express 미들웨어 작성 예시를 보여줘' }], }); console.log(response.choices[0].message.content);
Modelfile로 커스텀 모델 만들기
Modelfile은 Docker의 Dockerfile과 유사하다. 베이스 모델에 시스템 프롬프트, 파라미터, 어댑터(LoRA)를 얹어 새로운 모델 이름으로 등록할 수 있다. 서비스별로 역할이 고정된 모델을 여러 개 운용할 때 유용하다.
주요 지시어:
FROM— 베이스 모델 지정 (필수)SYSTEM— 시스템 프롬프트 설정PARAMETER— temperature, top_p, num_ctx 등 추론 파라미터ADAPTER— LoRA 어댑터 경로 지정MESSAGE— few-shot 예시 대화 삽입
Modelfile 작성 예시# Modelfile FROM llama3.2 SYSTEM """ 너는 시니어 백엔드 개발자 전문 어시스턴트다. 항상 Node.js, Python, Go 예시를 포함하고, 보안 취약점이 있는 코드는 반드시 경고해라. """ PARAMETER temperature 0.3 PARAMETER num_ctx 8192 PARAMETER top_p 0.9
Modelfile로 모델 빌드 및 실행# Modelfile 기반 모델 생성 ollama create backend-assistant -f ./Modelfile # 생성된 모델 확인 ollama list # 실행 ollama run backend-assistant
GPU 가속 설정과 메모리 관리
Ollama는 NVIDIA CUDA, Apple Silicon Metal, AMD ROCm을 자동으로 감지한다. 별도 설정 없이 GPU가 있으면 GPU를 사용한다. ollama run 출력에 gpu layers 항목이 표시되면 GPU 가속이 활성화된 상태다.
GPU 레이어 수동 지정: VRAM이 부족하면 일부 레이어를 CPU로 내려서 실행할 수 있다. 환경변수 OLLAMA_NUM_GPU로 GPU에 올릴 레이어 수를 제한한다.
메모리 관리: 모델을 ollama run으로 실행하면 기본 5분 후 메모리에서 내려간다. 상시 로딩 상태를 유지하려면 keep_alive 파라미터를 -1로 설정한다. 반대로 즉시 해제하려면 keep_alive 0을 사용한다.
GPU 상태 확인 및 메모리 설정# GPU 사용 현황 확인 ollama ps # 모델을 메모리에 상시 유지 (keep_alive=-1) curl http://localhost:11434/api/generate \ -d '{"model":"llama3.2","keep_alive":-1,"prompt":""}' # 모델을 즉시 메모리에서 해제 curl http://localhost:11434/api/generate \ -d '{"model":"llama3.2","keep_alive":0,"prompt":""}' # NVIDIA GPU 레이어 수 제한 (VRAM 4 GB 환경) export OLLAMA_NUM_GPU=20 ollama serve
Open WebUI 연동 — 로컬 ChatGPT UI 구축
Open WebUI(github.com/open-webui/open-webui)는 Ollama와 연동되는 오픈소스 웹 인터페이스다. ChatGPT와 유사한 UI에서 모델 전환, 대화 기록, 파일 업로드, RAG 기능까지 제공한다.
Docker를 사용하는 것이 가장 빠른 설치 방법이다. GPU가 있는 환경이라면 --gpus all 플래그를 추가한다.
Docker로 Open WebUI 실행# CPU 전용 (Ollama가 같은 호스트에서 실행 중인 경우) docker run -d \ -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main # 브라우저에서 확인 # http://localhost:3000
pip install ollama)를 쓰면 LangChain 없이도 스트리밍 응답, 임베딩 생성을 간단하게 구현할 수 있다.