Ollama란? 오픈소스 로컬 대형 언어 모델 런타임 도구로, 개인 PC에서 Llama, Mistral, Qwen 등 오픈소스 AI 모델을 원클릭으로 다운로드·실행·관리할 수 있습니다. GPU 클러스터도, 클라우드 API도 필요 없습니다.


목차

  1. Ollama란?
  2. Ollama 설치
  3. 빠른 시작: 첫 모델 실행하기
  4. 모델 관리: 다운로드·전환·삭제
  5. Ollama API: 애플리케이션에 통합하기
  6. 실전 사례: 로컬 AI 어시스턴트 구축
  7. 성능 최적화 및 GPU 가속
  8. 자주 묻는 질문 FAQ
  9. 정리

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

BASH
# 방법 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

BASH
# 원클릭 설치 (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

POWERSHELL
# Windows 설치 프로그램 다운로드
winget install Ollama.Ollama

# 또는 공식 웹사이트에서 설치 패키지 다운로드
# https://ollama.com/download/OllamaSetup.exe

# 확인
ollama --version

Windows 버전은 NVIDIA CUDA 및 AMD ROCm GPU 가속을 지원합니다.

Docker 배포

BASH
# 공식 이미지 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 시나리오에 적합합니다.


빠른 시작: 첫 모델 실행하기

한 줄로 실행

BASH
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 생성 파라미터 변경

모델 관리: 다운로드·전환·삭제

사용 가능한 모델 확인

BASH
# 로컬에 설치된 모델 확인
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 중영双语 최적화

모델 다운로드

BASH
# 특정 모델 다운로드
ollama pull llama3.2
ollama pull mistral:7b
ollama pull qwen2.5:14b

# 특정 버전 다운로드
ollama pull llama3.2:3b

모델 전환

대화형 대화에서:

>>> /model mistral:7b
mistral:7b 모델로 전환되었습니다

또는 명령줄에서 직접 지정:

BASH
ollama run mistral:7b

모델 삭제

BASH
#单个 모델 삭제
ollama rm llama3.2

# 모든 모델의 디스크 사용량 확인
du -sh ~/.ollama/models/*

커스텀 Modelfile

Ollama는 커스텀 모델 구성을 지원합니다. Modelfile을 생성하세요:

DOCKERFILE
FROM llama3.2:3b

# 시스템 프롬프트 설정
SYSTEM """
당신은 전문 파이썬 개발 어시스턴트입니다.
답변 시 다음을 지켜주세요:
1. 실행 가능한 코드 예제를 우선 제공
2. 코드의 핵심 로직을 설명
3. 잠재적인 함정과 최적화 포인트를 지적
"""

# 생성 파라미터 조정
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096

그리고 커스텀 모델을 생성합니다:

BASH
# 모델 생성
ollama create my-python-assistant -f Modelfile

# 커스텀 모델 실행
ollama run my-python-assistant

Ollama API: 애플리케이션에 통합하기

REST API 기본

Ollama는 기본적으로 http://localhost:11434에서 REST API를 제공하며, OpenAI 인터페이스 형식과 호환됩니다.

BASH
# 텍스트 생성 (비스트리밍)
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 호환 엔드포인트를 제공하여 기존 애플리케이션 마이그레이션을 쉽게 합니다:

BASH
# 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 파이썬 라이브러리를 사용합니다:

PYTHON
# 설치
# 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 호출

PYTHON
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 통합

JAVASCRIPT
// 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 어시스턴트를 만듭니다:

PYTHON
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))

사용 방법:

BASH
python review.py my_script.py

사례 2: 로컬 RAG 지식 베이스

벡터 데이터베이스와 결합하여 로컬 RAG 시스템을 구축합니다:

PYTHON
# 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: 대량 텍스트 처리

PYTHON
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 활용 확인

BASH
# Ollama 로그에서 GPU 사용 확인
journalctl -u ollama -f | grep -i gpu

# 또는 직접 확인
nvidia-smi  # NVIDIA GPU
rocm-smi    # AMD GPU

메모리 최적화

BASH
# 컨텍스트 윈도우 크기 제한 (기본 4096)
ollama run llama3.2 --num-ctx 2048

# GPU 레이어 수 조절
# Modelfile에서 설정
PARAMETER num_gpu 35

동시 요청 처리

PYTHON
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의 새로운 세계가 열릴 것입니다.