Ollama — 개발자를 위한 가장 쉽고 빠른 로컬 LLM 셋업

Ollama — 개발자를 위한 가장 쉽고 빠른 로컬 LLM 셋업

"로컬 LLM을 돌리려면 파이썬 가상환경 세팅하고, 쿠다(CUDA) 버전 맞추고, Hugging Face에서 30GB짜리 모델 파일 받아서 스크립트를 짜야 하는 것 아니야?" 과거엔 그랬다. 하지만 이제 터미널에 ollama run llama3 딱 한 줄만 치면 끝난다.

2편에서는 로컬 LLM 생태계를 평정하며 개발자들의 압도적인 사랑을 받고 있는 도구, Ollama(올라마) 에 대해 알아본다.

1. Ollama가 개발자 생태계를 장악한 이유

과거 로컬에서 모델을 돌리는 엔진(llama.cpp 등)은 세팅이 너무 고통스러웠다. Ollama는 이 엔진을 내부로 숨기고, 개발자들에게 매우 친숙한 Docker(도커)와 완벽하게 똑같은 사용자 경험(UX) 을 제공하여 시장을 장악했다.

  • docker pull nginxollama pull llama3
  • docker run nginxollama run llama3
  • DockerfileModelfile

배우는 데 1분도 걸리지 않는 이 깔끔한 추상화 덕분에, 인프라나 머신러닝 지식이 없는 프론트엔드/백엔드 개발자들도 손쉽게 내 프로젝트에 AI를 붙일 수 있게 되었다.


2. 1분 만에 끝나는 설치와 실행

설치는 너무 간단해서 설명할 것이 별로 없다. macOS, Linux, Windows 모두 공식 홈페이지(ollama.com)에서 원클릭 인스톨러를 제공한다. macOS 사용자라면 Homebrew로도 가능하다.

brew install ollama

설치가 끝났다면 터미널을 열고 대망의 한 줄을 쳐보자. 2026년 현재 가장 가볍고 똑똑한 Meta의 Llama 3 (8B) 모델을 실행해 보겠다.

ollama run llama3

이 명령어를 치면 Ollama가 알아서 모델(약 4.7GB)을 다운로드하고, 내 그래픽 카드(혹은 Apple Silicon의 통합 메모리)에 모델을 로드한 뒤 채팅 프롬프트를 띄워준다. 이제 터미널에서 ChatGPT를 쓰듯 대화하면 된다.

[!TIP] Mac 사용자(Apple Silicon)를 위한 팁 Ollama는 내부적으로 Apple의 Metal API를 완벽하게 지원한다. 별도의 설정 없이도 M1/M2/M3 칩의 통합 메모리와 GPU를 100% 활용하여 미친 듯한 추론 속도를 뽑아낸다.


3. OpenAI 완벽 호환: 백엔드 API 서버로 쓰기

Ollama가 진짜 강력한 이유는 단순한 터미널 채팅 도구가 아니라, 배경에서 돌아가는 API 서버(데몬) 라는 점이다. ollama run을 치는 순간 로컬의 11434 포트로 REST API가 열린다.

Curl로 호출해 보기

터미널을 하나 더 열고 다음 명령어를 날려보자.

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "안녕? 너는 누구야?"
}'

스트리밍(Streaming) 방식으로 답변이 주르륵 내려오는 것을 볼 수 있다.

파이썬(Python) 연동하기: OpenAI 라이브러리 그대로 쓰기

가장 놀라운 점은 Ollama가 OpenAI의 API 스펙을 그대로 지원한다는 것이다. 즉, 기존에 OpenAI GPT-4로 짜여 있던 코드를 단 한 줄만 고치면 로컬 Ollama 모델로 바꿔 낄 수 있다.

from openai import OpenAI

# 클라이언트를 생성할 때 base_url을 로컬 Ollama 포트로 지정한다.
client = OpenAI(
    base_url='http://localhost:11434/v1',
    api_key='ollama', # api key는 형식상 필요하므로 아무 문자열이나 넣는다.
)

response = client.chat.completions.create(
    model="llama3", # 로컬에 다운로드된 모델명
    messages=[
        {"role": "system", "content": "너는 까칠한 10년 차 시니어 개발자야."},
        {"role": "user", "content": "코딩을 잘 하려면 어떻게 해야 하나요?"}
    ]
)

print(response.choices[0].message.content)

이 덕분에 LangChain, LlamaIndex 같은 프레임워크나 외부 툴과 연동할 때 플러그 앤 플레이 수준으로 호환된다.


4. Modelfile: 나만의 커스텀 에이전트 굽기

Docker에 Dockerfile이 있다면, Ollama에는 Modelfile이 있다. 기존 모델에 나만의 프롬프트(페르소나)와 파라미터를 고정시켜서 새로운 모델로 "구워버리는" 기능이다.

프로젝트 폴더에 Modelfile이라는 이름의 텍스트 파일을 만든다.

# 기반이 될 베이스 모델
FROM llama3

# 모델 파라미터 튜닝 (온도를 0.1로 낮춰서 헛소리를 줄이고 딱딱하게 만듦)
PARAMETER temperature 0.1

# 시스템 프롬프트 주입 (페르소나 부여)
SYSTEM """
당신은 rwxrwx.com 블로그의 전담 코드 리뷰어입니다.
답변은 반드시 한국어로 작성하고, 보안 취약점과 성능 최적화에 집중해서 리뷰하세요.
인사는 생략하고 바로 본론으로 들어가세요.
"""

파일을 저장하고, 터미널에서 다음 명령어로 나만의 모델을 생성한다.

ollama create my-reviewer -f ./Modelfile

이제 ollama run my-reviewer를 실행하면, 매번 시스템 프롬프트를 길게 쳐줄 필요 없이 언제나 "까칠한 한국어 코드 리뷰어"로 작동하는 커스텀 모델이 완성된다.


📝 정리

  • [x] 도커(Docker)의 경험: 복잡한 의존성 없이 pullrun 명령어만으로 로컬 LLM을 구동한다.
  • [x] OpenAI 호환 API: http://localhost:11434로 열리는 API는 기존 OpenAI 코드를 수정 없이 그대로 로컬로 덮어씌울 수 있다.
  • [x] 커스텀 모델 빌드: Modelfile을 사용해 시스템 프롬프트와 파라미터가 고정된 나만의 봇을 영구적으로 생성할 수 있다.

Ollama는 코드를 만지는 개발자에게는 축복 같은 도구다. 하지만 "나는 까만 터미널 화면이 싫다! 그냥 마우스 클릭으로 모델을 비교하고 싶다!"는 사람들도 있다. 다음 3편에서는 세상에서 가장 아름답고 직관적인 로컬 AI 데스크탑 앱, LM Studio를 만나보자.