Jiwon Min Developer

Ollama: 나만의 머신에서 언어 모델 실행하기

클라우드 기반 AI 서비스는 강력하지만 몇 가지 단점을 가집니다. 비용, 데이터 프라이버시, 인터넷 의존성이 대표적입니다. 민감한 데이터를 다루거나, 오프라인 환경에서 AI 기능이 필요하거나, 단순히 실험 비용을 통제하고 싶을 때 자체 호스팅 방식이 대안이 될 수 있습니다. 하지만 언어 모델을 직접 설정하는 과정은 복잡하고 많은 시간을 요구합니다.

Ollama는 이런 문제를 해결하는 훌륭한 오픈소스 프로젝트입니다. 복잡한 설정 없이 몇 가지 명령만으로 개인 컴퓨터에서 강력한 언어 모델을 구동할 수 있게 해줍니다. 특정 모델을 내려받고, 실행하며, HTTP 엔드포인트를 통해 다른 서비스와 연동하는 과정을 극도로 단순화합니다. 이를 통해 개발자는 모델 자체의 활용법에 더 집중할 수 있습니다.

Ollama: 나만의 머신에서 언어 모델 실행하기

© AI Generated Image


Ollama란 무엇인가?

Ollama는 언어 모델을 실행하기 위한 서버 역할을 합니다. 내부적으로는 llama.cpp 같은 최적화된 추론 엔진을 활용하여 모델을 메모리에 올리고, 사용자 요청을 처리합니다. 개발자는 Ollama가 제공하는 간단한 CLI나 RESTful 엔드포인트를 통해 모델과 상호작용합니다.

핵심 가치는 ‘단순함’입니다. 모델 다운로드, 가중치 관리, GPU 할당 같은 까다로운 작업을 추상화하여, 터미널에서 ollama run <model_name> 한 줄로 모든 것을 시작할 수 있습니다.

기본 설치와 실행

Ollama 설치는 운영체제에 따라 간단한 스크립트 실행으로 끝납니다.

macOS & Linux

# 스크립트를 다운로드하고 실행합니다.
curl -fsSL https://ollama.com/install.sh | sh

설치가 완료되면, 원하는 모델을 바로 실행할 수 있습니다. Meta의 Llama 3 8B 모델을 실행하는 예시입니다.

# 처음 실행 시 모델을 자동으로 다운로드합니다.
ollama run llama3:8b

# 프롬프트가 나타나면 질문을 입력합니다.
>>> Tell me a joke about programming.

ollama list 명령을 통해 현재 머신에 설치된 모델 목록을 확인할 수 있습니다.

HTTP 서버로 상호작용

Ollama의 진정한 강력함은 내장된 HTTP 서버에서 나옵니다. ollama run 명령을 실행하면 백그라운드에서 서버가 활성화됩니다. 이 서버는 /api/generate 엔드포인트를 통해 모델 추론 기능을 외부에 노출합니다.

다음은 curl을 이용해 Llama 3 모델에 요청을 보내는 예시입니다.

curl http://localhost:11434/api/generate -d '{
  "model": "llama3:8b",
  "prompt": "Why is the sky blue?",
  "stream": false
}'

stream: false 옵션은 응답을 한 번에 받겠다는 의미입니다. 이 옵션을 true로 설정하면 ChatGPT처럼 단어 토큰이 생성될 때마다 스트리밍 형태로 응답을 받을 수 있습니다. 이 기능은 실시간 채팅 인터페이스를 구현할 때 매우 유용합니다.

Modelfile을 통한 커스터마이징

Ollama는 Modelfile이라는 설정 파일을 통해 기존 모델을 커스터마이징하는 기능을 제공합니다. Dockerfile과 유사한 문법을 가집니다. 시스템 프롬프트를 변경하거나, 특정 파라미터를 조정하여 나만의 모델을 만들 수 있습니다.

예를 들어, 항상 JSON 형식으로만 답변하는 모델을 만들어 보겠습니다.

JsonLlama.modelfile

# 베이스 모델 지정
FROM llama3:8b

# 모델의 기본 동작을 정의하는 시스템 메시지
SYSTEM """
You are a helpful expert JSON generator.
You will only respond with valid JSON.
Do not add any other text outside of the JSON response.
"""

Modelfile을 빌드하여 json-llama라는 새 모델을 생성합니다.

ollama create json-llama -f ./JsonLlama.modelfile

이제 ollama run json-llama를 실행하면, 여기서 정의한 시스템 프롬프트가 적용된 모델과 대화할 수 있습니다.

실무적 고려사항과 트레이드오프

하드웨어 제약

자체 장비에서 언어 모델을 운영할 때 가장 큰 제약은 하드웨어, 특히 VRAM입니다. 모델의 파라미터 크기에 비례하여 VRAM 요구량이 결정됩니다.

  • 8B 모델 (Llama 3, Mistral): 최소 8GB VRAM 권장
  • 13B 모델: 최소 16GB VRAM 권장
  • 70B 모델: 48GB 이상의 VRAM이 필요하며, 일반적인 개인 장비에서는 실행이 어렵습니다.

VRAM이 부족하면 모델의 일부가 시스템 RAM으로 오프로드되어 추론 속도가 급격히 저하됩니다.

모델 선택의 중요성

모든 작업에 가장 큰 모델이 필요한 것은 아닙니다. 작업의 복잡도에 맞춰 적절한 크기의 모델을 선택하는 것이 중요합니다. 간단한 텍스트 분류나 요약 작업은 7B 혹은 8B 모델로도 충분히 좋은 성능을 보입니다. 반면, 복잡한 논리 추론이나 전문적인 글쓰기에는 더 큰 모델이 유리할 수 있습니다.

Ollama 라이브러리에서 다양한 모델과 그 특징을 확인할 수 있습니다.

흔한 실패 시나리오: VRAM 부족

새로운 모델을 실행하려 할 때 가장 흔히 겪는 실패는 VRAM 부족으로 인한 비정상적인 속도 저하입니다. 터미널 응답이 한없이 느려지거나, GPU 팬이 최대로 동작하지만 결과가 나오지 않는 현상이 발생합니다. 이 경우, 더 작은 모델로 변경하거나 현재 실행 중인 다른 프로세스를 종료하여 VRAM을 확보해야 합니다.

결론

Ollama는 자체 호스팅 언어 모델의 진입 장벽을 크게 낮췄습니다. 개발자는 인프라 설정의 부담을 덜고, 신속하게 프로토타입을 만들거나 개인화된 AI 기능을 자신의 워크플로에 통합할 수 있습니다. 물론 하드웨어 제약과 모델 선택이라는 트레이드오프가 존재하지만, 비용과 프라이버시 측면에서 클라우드 서비스의 훌륭한 대안이 됩니다. AI 기반 기능을 탐구하는 모든 개발자에게 Ollama는 필수적인 장비 중 하나가 될 것입니다.

참고문헌