Ollama란? 오픈소스 로컬 대형 언어 모델 런타임 도구로, 개인 PC에서 Llama, Mistral, Qwen 등 오픈소스 AI 모델을 원클릭으로 다운로드·실행·관리할 수 있습니다. GPU 클러스터도, 클라우드 API도 필요 없습니다.
목차
- Ollama란?
- Ollama 설치
- 빠른 시작: 첫 모델 실행하기
- 모델 관리: 다운로드·전환·삭제
- Ollama API: 애플리케이션에 통합하기
- 실전 사례: 로컬 AI 어시스턴트 구축
- 성능 최적화 및 GPU 가속
- 자주 묻는 질문 FAQ
- 정리
Ollama란?
Ollama는 오픈소스 로컬 대형 언어 모델(LLM) 런타임 도구로, Jeff Hancock이 만들었으며 MIT 라이선스를 채택하고 있습니다. 핵심 목표는 누구나 로컬에서 오픈소스 AI 모델을 쉽게 실행할 수 있게 하는 것입니다.
핵심 기능
| 기능 | 설명 |
|---|---|
| 원클릭 실행 | ollama run llama3 한 줄로 모델 시작 |
| 모델 라이브러리 | 수십 가지 인기 모델 내장, 커스텀 Modelfile 지원 |
| REST API | 표준 OpenAI 호환 인터페이스로 통합 용이 |
| 크로스플랫폼 | macOS, Linux, Windows 모두 지원 |
| GPU 가속 | NVIDIA/AMD GPU 자동 감지 및 활용 |
| 오픈소스 무료 | MIT 라이선스, 상업적 이용 가능 |
왜 Ollama를 선택해야 할까?
Ollama가 등장하기 전에는 로컬에서 대형 언어 모델을 실행하려면 복잡한 설정이 필요했습니다. 가중치 파일을 직접 다운로드하고, PyTorch를 설치하고, 의존성 충돌을 해결하고, 추론 코드를 작성해야 했죠. Ollama는 이 모든 것을 한 줄 명령으로 패키징했습니다.
다른 로컬 LLM 도구와 비교:
| 도구 | 사용 편의성 | 모델 수 | API 호환성 | GPU 지원 |
|---|---|---|---|---|
| Ollama | ⭐⭐⭐⭐⭐ | 50+ | OpenAI 호환 | NVIDIA/AMD/Apple Silicon |
| LM Studio | ⭐⭐⭐⭐ | 30+ | OpenAI 호환 | NVIDIA/AMD |
| GPT4All | ⭐⭐⭐ | 20+ | 커스텀 | NVIDIA/AMD |
| 수동 배포 | ⭐ | 무제한 | 커스텀 | 수동 설정 필요 |
Ollama의 강점은 극단적으로 간단한 사용법과 풍부한 모델 생태계에 있습니다. 개발자의 빠른 프로토타이핑과 일상적인 AI 보조 프로그래밍에 특히 적합합니다.
Ollama 설치
macOS
# 방법 1: 원클릭 설치 (추천)
curl -fsSL https://ollama.com/install.sh | sh
# 방법 2: Homebrew 설치
brew install ollama
# 설치 확인
ollama --version
macOS 버전은 Apple Silicon (M1/M2/M3/M4) 의 Metal GPU 가속을 자동으로 활용하여 뛰어난 성능을 보여줍니다.
Linux
# 원클릭 설치 (systemd 서비스 포함)
curl -fsSL https://ollama.com/install.sh | sh
# 수동 설치 (바이너리 방식)
curl -fsSL https://ollama.com/install.sh | OLLAMA_INSTALL=1 sh
# systemd로 관리
sudo systemctl start ollama
sudo systemctl enable ollama
# 확인
ollama --version
Linux 설치는 NVIDIA GPU를 자동으로 감지하고 CUDA 드라이버 지원을 설치합니다.
Windows
# Windows 설치 프로그램 다운로드
winget install Ollama.Ollama
# 또는 공식 웹사이트에서 설치 패키지 다운로드
# https://ollama.com/download/OllamaSetup.exe
# 확인
ollama --version
Windows 버전은 NVIDIA CUDA 및 AMD ROCm GPU 가속을 지원합니다.
Docker 배포
# 공식 이미지 Pull
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# 확인
docker exec ollama ollama list
Docker 배포는 서버 환경과 CI/CD 시나리오에 적합합니다.
빠른 시작: 첫 모델 실행하기
한 줄로 실행
ollama run llama3.2
이게 전부입니다! Ollama가 자동으로 다음을 수행합니다: 1. 로컬에 해당 모델이 있는지 확인 2. 없으면 공식 라이브러리에서 다운로드 3. 대화형 인터페이스 시작
첫 실행 시 모델을 다운로드합니다(약 2~4GB). 이후부터는 몇 초 만에 시작됩니다.
대화형 대화
모델을 실행하면 대화형 터미널 화면이 표시됩니다:
>>> 안녕하세요! 한국어로 자기소개해 주세요.
안녕하세요! 저는 Llama 3.2 모델을 기반으로 실행되는 AI 어시스턴트입니다.
질문 답변, 코드 작성, 텍스트 번역, 브레인스토밍 등 다양한 도움을 드릴 수 있습니다.
무엇을 도와드릴까요?
>>> 파이썬 퀵 정렬 코드를 작성해 줘.
물론입니다! 퀵 정렬의 파이썬 구현입니다:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# 테스트
print(quick_sort([3, 6, 8, 10, 1, 2, 1]))
# 출력: [1, 1, 2, 3, 6, 8, 10]
자주 쓰는 단축키
| 단축키 | 기능 |
|---|---|
Enter |
메시지 전송 |
Ctrl+C |
현재 응답 중단 |
Ctrl+D 또는 /bye |
대화 종료 |
Ctrl+R |
응답 다시 생성 |
/set parameter |
생성 파라미터 변경 |
모델 관리: 다운로드·전환·삭제
사용 가능한 모델 확인
# 로컬에 설치된 모델 확인
ollama list
# 출력 예시:
# NAME ID SIZE MODIFIED
# llama3.2:latest a1b2c3d4e5f6 2.0 GB 2 hours ago
# mistral:7b f6e5d4c3b2a1 4.1 GB 1 day ago
# qwen2.5:14b 1a2b3c4d5e6f 8.9 GB 3 days ago
공식 모델 라이브러리 탐색
ollama.com/library에서 사용 가능한 모든 모델을 확인할 수 있습니다. 2026년 가장 인기 있는 모델 추천입니다:
| 모델 | 파라미터 수 | 크기 | 활용场景 |
|---|---|---|---|
| Llama 3.2 | 1B/3B/8B | 0.8~4.7 GB | 일반 대화, 코드 생성 |
| Mistral 7B | 7B | 4.1 GB | 일반 태스크, 다국어 |
| Qwen 2.5 | 7B/14B/32B | 4~18 GB | 중국어 최적화, 수학 추론 |
| DeepSeek Coder V2 | 16B/236B | 9~133 GB | 코드 생성, 프로그래밍 어시스턴트 |
| Phi-4 | 14B | 8.4 GB | 경량, 강력한 추론 능력 |
| Gemma 2 | 2B/9B/27B | 1.6~15 GB | Google 제작, 효율적 추론 |
| Yi 1.5 | 6B/9B/34B | 3.5~20 GB | 중영双语 최적화 |
모델 다운로드
# 특정 모델 다운로드
ollama pull llama3.2
ollama pull mistral:7b
ollama pull qwen2.5:14b
# 특정 버전 다운로드
ollama pull llama3.2:3b
모델 전환
대화형 대화에서:
>>> /model mistral:7b
mistral:7b 모델로 전환되었습니다
또는 명령줄에서 직접 지정:
ollama run mistral:7b
모델 삭제
#单个 모델 삭제
ollama rm llama3.2
# 모든 모델의 디스크 사용량 확인
du -sh ~/.ollama/models/*
커스텀 Modelfile
Ollama는 커스텀 모델 구성을 지원합니다. Modelfile을 생성하세요:
FROM llama3.2:3b
# 시스템 프롬프트 설정
SYSTEM """
당신은 전문 파이썬 개발 어시스턴트입니다.
답변 시 다음을 지켜주세요:
1. 실행 가능한 코드 예제를 우선 제공
2. 코드의 핵심 로직을 설명
3. 잠재적인 함정과 최적화 포인트를 지적
"""
# 생성 파라미터 조정
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
그리고 커스텀 모델을 생성합니다:
# 모델 생성
ollama create my-python-assistant -f Modelfile
# 커스텀 모델 실행
ollama run my-python-assistant
Ollama API: 애플리케이션에 통합하기
REST API 기본
Ollama는 기본적으로 http://localhost:11434에서 REST API를 제공하며, OpenAI 인터페이스 형식과 호환됩니다.
# 텍스트 생성 (비스트리밍)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "파이썬으로 버블 정렬을 작성해 줘",
"stream": false
}'
# Chat 형식 (멀티턴 대화)
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2",
"messages": [
{"role": "system", "content": "당신은 코드 전문가입니다"},
{"role": "user", "content": "async/await을 설명해 줘"}
],
"stream": false
}'
OpenAI 호환 인터페이스
Ollama는 OpenAI 호환 엔드포인트를 제공하여 기존 애플리케이션 마이그레이션을 쉽게 합니다:
# OpenAI 호환 /v1/chat/completions
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ollama" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "Hello"}]
}'
파이썬 통합
공식 ollama 파이썬 라이브러리를 사용합니다:
# 설치
# pip install ollama
import ollama
# 간단한 생성
response = ollama.generate(
model='llama3.2',
prompt='양자 컴퓨팅이 무엇인지 한 문장으로 설명해 줘'
)
print(response['response'])
# Chat 형식
response = ollama.chat(
model='llama3.2',
messages=[
{'role': 'system', 'content': '당신은 코드 리뷰 전문가입니다'},
{'role': 'user', 'content': '이 코드의 문제점은?\n\nfor i in range(len(arr)):\n if arr[i] == x: return i'}
]
)
print(response['message']['content'])
# 스트리밍 출력
stream = ollama.chat(
model='llama3.2',
messages=[{'role': 'user', 'content': '프로그래밍에 관한 시를 써 줘'}],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
OpenAI SDK로 Ollama 호출
from openai import OpenAI
# Ollama 로컬 엔드포인트를 가리킴
client = OpenAI(
base_url='http://localhost:11434/v1',
api_key='ollama' # 아무 값이나 가능
)
response = client.chat.completions.create(
model='llama3.2',
messages=[
{'role': 'user', 'content': 'RAG가 무엇인지 설명해 줘'}
]
)
print(response.choices[0].message.content)
JavaScript/TypeScript 통합
// npm install ollama
import { Ollama } from 'ollama';
const ollama = new Ollama();
// 간단한 생성
const response = await ollama.generate({
model: 'llama3.2',
prompt: 'Docker란 무엇인가요?',
});
console.log(response.response);
// Chat 형식
const chat = await ollama.chat({
model: 'llama3.2',
messages: [
{ role: 'user', content: 'Rust 학습용 자료 5가지를 추천해 줘' }
],
});
console.log(chat.message.content);
실전 사례: 로컬 AI 어시스턴트 구축
사례 1: 로컬 코드 리뷰 어시스턴트
코드 리뷰 전문 AI 어시스턴트를 만듭니다:
import ollama
import sys
def review_code(code: str, language: str = "Python"):
"""로컬 코드 리뷰"""
response = ollama.chat(
model='llama3.2',
messages=[
{'role': 'system', 'content': f'''당신은 베테랑 {language} 코드 리뷰어입니다.
다음 관점에서 코드를 리뷰해 주세요:
1. 코드 스타일 (PEP 8 / 베스트 프랙티스)
2. 잠재적 버그 및 경계 케이스
3. 성능 문제
4. 보안 취약점
5. 개선 제안
출력 형식:
- 문제 수준: 🔴 심각 / 🟡 경고 / 🟢 제안
- 문제 설명
- 수정 코드 예시'''},
{'role': 'user', 'content': f'다음 코드를 리뷰해 주세요:\n\n```{language}\n{code}\n```'}
]
)
return response['message']['content']
if __name__ == '__main__':
# 파일에서 코드 읽기
with open(sys.argv[1], 'r') as f:
code = f.read()
print(review_code(code))
사용 방법:
python review.py my_script.py
사례 2: 로컬 RAG 지식 베이스
벡터 데이터베이스와 결합하여 로컬 RAG 시스템을 구축합니다:
# pip install ollama chromadb sentence-transformers
import ollama
import chromadb
from chromadb.utils import embedding_functions
# Chroma 클라이언트 초기화
chroma_client = chromadb.Client()
# 로컬 임베딩 모델 사용
embed_fn = embedding_functions.SentenceTransformerEmbeddingFunction(
model_name="all-MiniLM-L6-v2"
)
collection = chroma_client.get_or_create_collection(
name="knowledge_base",
embedding_function=embed_fn
)
# 문서 추가
def add_document(text: str, metadata: dict = None):
collection.add(
documents=[text],
metadatas=[metadata or {}],
ids=[f"doc_{collection.count()}"]
)
# 관련 문서 조회
def retrieve(query: str, n_results: int = 3):
results = collection.query(
query_texts=[query],
n_results=n_results
)
return results['documents'][0]
# 답변 생성
def rag_answer(question: str) -> str:
# 1. 관련 문서 검색
context_docs = retrieve(question)
context = "\n\n".join(context_docs)
# 2. Ollama로 답변 생성
response = ollama.chat(
model='llama3.2',
messages=[
{'role': 'system', 'content': f'다음 문맥을 바탕으로 답변해 주세요:\n\n{context}'},
{'role': 'user', 'content': question}
]
)
return response['message']['content']
# 사용 예시
add_document("Ollama는 Llama, Mistral, Qwen 등 오픈소스 모델을 지원합니다")
add_document("Ollama는 OpenAI 호환 REST API를 제공합니다")
print(rag_answer("Ollama는 어떤 모델을 지원하나요?"))
사례 3: 대량 텍스트 처리
import ollama
import json
def extract_entities(text: str) -> dict:
"""텍스트에서 엔티티 추출"""
response = ollama.chat(
model='llama3.2',
messages=[{
'role': 'user',
'content': f'''다음 텍스트에서 엔티티를 추출하여 JSON 형식으로 반환해 주세요:
{text}
반환 형식:
{{
"인물": [],
"조직": [],
"장소": [],
"시간": [],
"이벤트": []
}}'''
}]
)
try:
return json.loads(response['message']['content'])
except json.JSONDecodeError:
return {}
# 대량 처리
texts = [
"애플 CEO 팀 쿡이 2026년 6월 베이징을 방문",
"OpenAI가 샌프란시스코에서 GPT-5를 발표"
]
for text in texts:
entities = extract_entities(text)
print(json.dumps(entities, ensure_ascii=False, indent=2))
성능 최적화 및 GPU 가속
GPU 활용 확인
# Ollama 로그에서 GPU 사용 확인
journalctl -u ollama -f | grep -i gpu
# 또는 직접 확인
nvidia-smi # NVIDIA GPU
rocm-smi # AMD GPU
메모리 최적화
# 컨텍스트 윈도우 크기 제한 (기본 4096)
ollama run llama3.2 --num-ctx 2048
# GPU 레이어 수 조절
# Modelfile에서 설정
PARAMETER num_gpu 35
동시 요청 처리
import concurrent.futures
import ollama
def process_text(text: str) -> str:
response = ollama.generate(
model='llama3.2',
prompt=f'다음 텍스트를 요약해 줘: {text}'
)
return response['response']
# 동시 처리
texts = ["텍스트1...", "텍스트2...", "텍스트3..."]
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
results = list(executor.map(process_text, texts))
자주 묻는 질문 FAQ
Ollama는 무료인가요?
네, 완전 무료 오픈소스입니다. MIT 라이선스를 채택하여 상업적 이용도 가능합니다.
얼마나 많은 RAM이 필요한가요?
모델 크기에 따라 다릅니다: - 7B 모델: 최소 8GB RAM 권장 - 14B 모델: 최소 16GB RAM 권장 - 32B+ 모델: 32GB 이상 RAM 권장
인터넷 없이도 사용할 수 있나요?
네, 모델을 한 번 다운로드하면 오프라인에서도 완전히 작동합니다.
Ollama를 원격 서버에서 사용할 수 있나요?
네, OLLAMA_HOST=0.0.0.0 환경 변수를 설정하면 원격 접근이 가능합니다. 다만 보안에 유의하세요.
Mac M1/M2/M3에서 잘 작동하나요?
Apple Silicon에서 Metal GPU 가속을 완벽 지원하여 매우 좋은 성능을 보입니다.
정리
Ollama는 로컬에서 대형 언어 모델을 실행하는 가장 간편한 방법입니다. 복잡한 설정 없이 한 줄 명령으로 모델을 다운로드하고 실행할 수 있으며, REST API를 통해 기존 애플리케이션에 쉽게 통합할 수 있습니다.
핵심 요약: - 🚀 간편한 설치: macOS, Linux, Windows, Docker 모두 지원 - 📦 풍부한 모델: 50개 이상의 인기 오픈소스 모델 - 🔌 쉬운 통합: OpenAI 호환 API로 기존 코드 재사용 - 🔒 프라이버시: 데이터가 외부로 나가지 않음 - 💰 완전 무료: MIT 라이선스, 상업적 이용 가능
개발자라면 지금 바로 Ollama를 시작해 보세요. 로컬 AI의 새로운 세계가 열릴 것입니다.