Ollama 입문: 로컬에서 대규모 언어 모델 실행하기

지난달 OpenAI API 요금이 300달러를 넘었습니다. 개발 단계에서 기능을 자주 테스트했을 뿐인데 비용이 이렇게 빠르게 쌓였습니다. 더 큰 문제는 처리하던 문서에 회사 내부 데이터가 포함되어 있어 클라우드에 업로드할 때마다 마음이 불편했다는 점입니다.
그때 로컬 대안을 찾아야겠다고 마음먹었습니다. 일주일 동안 여러 도구를 써 본 끝에 Ollama가 가장 간편하다는 결론을 내렸습니다.
비슷한 고민을 겪고 있을지도 모릅니다. 클라우드 AI 서비스 비용이 계속 늘거나 데이터 프라이버시가 걱정되거나, 아예 오프라인 환경에서 AI를 사용해야 할 수도 있습니다. Ollama는 이런 문제를 해결해 줍니다. 자신의 컴퓨터에서 대규모 언어 모델을 실행할 수 있고, 몇 분이면 시작할 수 있으며, 완전히 무료입니다. 데이터도 컴퓨터 밖으로 나가지 않습니다. 지금부터 직접 겪은 시행착오와 배운 점을 공유하겠습니다.
Ollama란 무엇인가요?
이름 때문에 헷갈리기 쉽습니다. Ollama는 모델이 아니라 모델을 실행하는 도구입니다. Docker가 컨테이너 사용을 간단하게 만든 것처럼, Ollama는 대규모 언어 모델을 로컬에서 쉽게 실행할 수 있게 해 줍니다.
간단히 말해 Ollama로 Llama 3.2 같은 모델을 다운로드한 뒤 자신의 컴퓨터에서 대화하고, 코드를 작성시키고, 번역을 맡길 수 있습니다. 모든 추론은 로컬에서 처리됩니다.
그런데 왜 굳이 로컬 모델을 사용해야 할까요? ChatGPT나 Claude 같은 클라우드 서비스가 이미 편리하지 않나요?
물론 클라우드는 편리합니다. 하지만 오래 사용하다 보면 몇 가지 문제가 드러납니다.
비용 문제. API 호출은 token 단위로 과금되기 때문에 테스트 단계에서 자주 호출하면 요금이 예상보다 크게 늘어날 수 있습니다. 개발 중 한 달에 수백 달러에서 수천 달러를 쓴 사례도 보았습니다.
프라이버시 문제. 모든 대화를 클라우드에 업로드해야 합니다. 회사 내부 문서, 고객 데이터, 민감한 정보를 처리한다면 컴플라이언스 요건에 맞지 않을 수 있습니다. 공공기관이나 규제가 엄격한 조직에서 일한다면 특히 실감할 문제입니다.
네트워크 문제. 사용하려면 인터넷에 연결되어 있어야 합니다. 네트워크가 불안정하면 사용 경험이 나빠지고, 완전히 오프라인인 환경에서는 아예 사용할 수 없습니다.
제한 문제. 클라우드 API에는 속도 제한, 할당량 제한, 기능 제한 등 여러 제약이 있습니다. 기능 하나를 테스트하려는데 제한에 막히면 꽤 답답합니다.
Ollama는 이런 문제를 직접 해결합니다. 모델을 컴퓨터에 다운로드하면 추론이 모두 로컬에서 처리됩니다. 인터넷이 끊겨도 사용할 수 있고, 데이터가 컴퓨터 밖으로 나가지 않으며, API 요금이나 호출 제한도 없습니다.
개발자에게는 또 다른 장점이 있습니다. Ollama는 완전한 API를 제공하며 OpenAI 인터페이스 형식과도 호환됩니다. 개발할 때 로컬 모델로 저렴하고 편리하게 테스트한 뒤 운영 환경에서 클라우드 API로 전환할 수 있어 유연합니다.
Ollama 설치: 세 단계면 충분합니다
설치는 정말 간단합니다. 플랫폼마다 약간 다르지만 대부분 몇 분 안에 끝낼 수 있습니다.
Linux(가장 간편함)
Linux를 사용한다면 명령어 하나면 됩니다.
curl -fsSL https://ollama.com/install.sh | sh
명령 실행이 끝나면 Ollama 설치가 완료되고 서비스도 자동으로 시작됩니다.
솔직히 가장 추천하는 플랫폼은 Linux입니다. 서버 배포와 컨테이너 환경을 모두 잘 지원합니다. 운영 환경에서 Ollama를 사용할 계획이라면 Linux가 첫 번째 선택입니다.
수동 설치도 가능하지만 초보자에게는 권하지 않습니다. 꼭 필요하다면 바이너리 파일을 다운로드하고 systemd 서비스를 직접 설정할 수 있습니다. 자세한 절차는 조사 보고서에 정리했으므로 여기서는 생략하겠습니다.
macOS(그래픽 인터페이스가 더 편리함)
macOS에서는 두 가지 방법을 사용할 수 있습니다.
Homebrew를 사용한다면 다음 명령을 실행합니다.
brew install ollama
설치 후 ollama serve로 바로 시작하거나 brew services start ollama를 실행해 백그라운드에서 구동할 수 있습니다.
Homebrew를 사용하고 싶지 않다면 공식 웹사이트에서 .pkg 설치 파일을 받아 더블클릭하면 됩니다. Mac 사용자에게 익숙한 설치 방식입니다.
한 가지 팁이 있습니다. Apple Silicon(M1/M2/M3) Mac은 Metal GPU 가속을 자동으로 활성화해 성능이 꽤 좋습니다. 제 M2 MacBook Pro에서는 8B 모델이 원활하게 실행되고 13B 모델도 실행할 수 있지만, 메모리를 더 많이 사용합니다.
Windows(winget이 가장 편리함)
Windows 사용자는 winget을 사용할 수 있습니다.
winget install --id=Ollama.Ollama -e
또는 공식 웹사이트에서 .exe 설치 파일을 직접 다운로드할 수 있습니다. 설치가 끝나면 Ollama가 자동으로 시작되고 시스템 트레이에 아이콘이 표시됩니다.
설치가 정상적으로 완료되었는지 확인합니다.
ollama --version
버전 번호가 표시되면 설치가 완료된 것입니다. 아주 간단합니다.
첫 번째 모델 실행하기
설치가 끝났으니 바로 모델을 실행해 보겠습니다.
먼저 모델을 선택합니다. 처음이라면 llama3.2 또는 qwen:8b를 추천합니다. 전자는 Meta의 최신 모델로 전반적인 성능이 좋고, 후자는 Qwen 모델로 중국어 이해 능력이 특히 뛰어납니다.
다음 명령을 실행합니다.
ollama run llama3.2
이 명령은 모델을 자동으로 다운로드하고(처음에는 몇 분이 걸립니다) 대화형 인터페이스를 시작합니다.
다음과 같은 화면이 나타납니다.
>>> Send a message (/? for help)
이제 대화를 시작할 수 있습니다. 다음과 같이 입력해 보세요.
>>> 안녕하세요, 자기소개를 해 주세요
모델이 실시간으로 답변합니다. 채팅하는 것과 비슷한 느낌입니다. 종료하려면 /bye를 입력하거나 Ctrl+D를 누릅니다.
모델 크기 이해하기
모델 이름에 3b, 8b 같은 숫자가 붙는 것을 보았을 것입니다. 이 숫자는 파라미터 수, 즉 모델의 ‘두뇌’ 크기를 나타냅니다.
3B 모델: 30억 개의 파라미터를 사용하며 얇고 가벼운 노트북에서도 실행할 수 있습니다. 메모리는 4GB만 필요합니다. 속도는 빠르지만 능력은 비교적 기본적이어서 간단한 대화나 도구 명령 같은 작업에 적합합니다.
8B 모델: 80억 개의 파라미터를 사용하며 대부분의 노트북과 데스크톱에서 성능과 자원 사용의 균형이 좋습니다. 8GB 메모리가 필요하고 일상 대화와 간단한 프로그래밍 보조 작업을 충분히 처리합니다. 저도 이 규모를 가장 자주 사용합니다.
13B 모델: 130억 개의 파라미터를 사용하며 16GB 메모리가 필요합니다. 답변 품질이 확실히 좋아지고 컨텍스트도 더 길어 중상급 그래픽 카드를 장착한 컴퓨터에 적합합니다.
70B 모델: 700억 개의 파라미터를 사용하며 64GB 이상의 메모리가 필요합니다. 전문 서버급 모델로 능력은 가장 뛰어나지만 하드웨어 요구 사항도 높습니다. 개인 사용자가 이 정도 크기까지 필요한 경우는 많지 않습니다.
처음에는 3B~8B 모델이면 충분합니다. 대부분의 최신 노트북에서 원활하게 실행할 수 있습니다. 처음부터 큰 모델만 고집하지 말고 작은 모델로 익숙해진 뒤 필요에 따라 업그레이드하세요.
모델 관리에 자주 쓰는 명령어
Ollama는 간단한 명령어로 모델을 관리할 수 있습니다. 자주 쓰는 몇 가지만 기억하면 됩니다.
모델 다운로드:
ollama pull llama3.2
ollama pull qwen:8b
pull 명령은 모델 라이브러리에서 모델을 로컬로 다운로드합니다. 다운로드한 모델은 캐시에 저장되므로 다음 실행 때 다시 받을 필요가 없습니다.
설치된 모델 목록 확인:
ollama list
이 명령은 다운로드한 모든 모델의 이름, 크기, 수정 시간을 표시합니다.
모델 삭제:
ollama rm llama3.2
더 이상 필요하지 않은 모델을 삭제해 저장 공간을 확보할 수 있습니다.
모델 세부 정보 확인:
ollama show llama3.2
파라미터 수, 양자화 방식 같은 기술 세부 정보를 확인할 수 있습니다.
cp(복사), push(업로드) 같은 다른 명령은 자주 사용하지 않으므로 자세히 다루지 않겠습니다. 필요할 때 문서를 확인하면 됩니다.
추천 모델
용도별로 몇 가지 모델을 추천합니다.
일상 대화:
llama3.2: Meta의 최신 모델로 전반적인 성능이 좋습니다.qwen:8b: Qwen 모델로 중국어 성능이 뛰어납니다.mistral: 유럽에서 개발한 오픈소스 모델로 성능이 좋습니다.
프로그래밍 보조:
codellama: 코드 생성을 위해 특별히 튜닝한 모델입니다.deepseek-coder: DeepSeek의 코드 모델로 활용하기 좋습니다.
멀티모달(이미지 이해 가능):
llava: 이미지 이해를 지원합니다.llama3.2-vision: Llama 3.2의 비전 버전입니다.
무엇을 선택할지 모르겠다면 llama3.2:3b 또는 qwen:8b부터 사용해 보세요. 둘 다 입문용으로 적합하고 가볍게 실행됩니다.
GPU 가속: 체감 속도가 크게 달라집니다
GPU 가속은 정말 중요합니다. CPU만으로도 모델을 실행할 수 있지만 속도 차이가 매우 커서 GPU가 CPU보다 10~20배 빠를 수 있습니다.
처음 사용할 때 GPU 설정을 확인하지 않아 모델이 답답할 정도로 느렸습니다. 나중에 GPU 가속이 활성화되지 않았다는 사실을 알게 되었고, 설정을 마치자 속도가 크게 개선되었습니다.
Ollama는 NVIDIA, AMD, Apple Silicon 세 종류의 GPU를 지원합니다.
NVIDIA 그래픽 카드(RTX 시리즈)
NVIDIA 설정은 가장 간단하며 대부분 자동으로 처리됩니다.
필요한 사항은 다음과 같습니다.
- 최신 NVIDIA 드라이버(버전 531 이상) 설치
- CUDA 설치 여부 확인
GPU를 사용할 수 있는지 확인합니다.
nvidia-smi
그래픽 카드 정보가 보이면 문제가 없습니다. 모델을 실행할 때 Ollama가 GPU를 자동으로 사용합니다.
사용할 GPU를 지정하려면 다음과 같이 설정합니다.
export CUDA_VISIBLE_DEVICES=0,1
이 설정은 첫 번째와 두 번째 GPU만 사용하게 합니다. GPU가 여러 개인 컴퓨터에서는 필요할 때가 있습니다.
Docker에서 GPU 사용하기:
Docker에서 Ollama를 실행한다면 NVIDIA Container Toolkit이 필요합니다.
docker run --gpus all ollama/ollama
이렇게 해야 컨테이너가 호스트 컴퓨터의 GPU에 접근할 수 있습니다.
AMD 그래픽 카드
AMD는 설정이 조금 더 복잡하며 ROCm을 설치해야 합니다.
ROCm을 지원하는 AMD GPU는 다음과 같습니다.
- Radeon Instinct 시리즈(MI100, MI210, MI250, MI300X 등)
- Radeon RX 시리즈(5700 XT, 5500 XT, 7600, 9070 등)
- Radeon PRO 시리즈
ROCm v7 이상을 설치하면 Ollama가 AMD GPU를 자동으로 감지해 사용합니다.
공식적으로 지원되지 않는 GPU 아키텍처라면 다음 환경 변수로 재정의를 시도할 수 있습니다.
export HSA_OVERRIDE_GFX_VERSION=10.3.0
AMD에는 실험적인 Vulkan 지원도 있습니다.
export OLLAMA_VULKAN=1
Apple Silicon(M1/M2/M3)
Mac 사용자는 가장 편리합니다. Apple Silicon은 별도 설정 없이 Metal GPU 가속을 자동으로 활성화합니다.
메모리가 16GB인 M 시리즈 칩에서는 8B 모델이 원활하게 실행되고, 32GB라면 13B나 30B 모델도 실행할 수 있습니다. Apple Silicon은 GPU와 CPU가 메모리를 공유하는 통합 메모리 구조이므로 메모리 용량이 실행할 수 있는 모델 크기를 직접 결정합니다.
성능을 높이는 몇 가지 팁
GPU 가속 외에도 속도를 높이는 방법이 몇 가지 있습니다.
양자화 모델. 기본값은 품질과 속도의 균형이 좋은 Q4_K_M 양자화입니다. 메모리가 부족하다면 품질은 조금 낮지만 사용량이 더 적은 Q4_K_S를 사용해 보세요.
Flash Attention. 긴 컨텍스트를 처리할 때 속도를 크게 높일 수 있는 최적화 기술입니다.
export OLLAMA_FLASH_ATTENTION=1
Context 길이. 기본 컨텍스트 길이는 2048입니다. 그렇게 긴 컨텍스트가 필요하지 않다면 값을 줄일 수 있습니다.
export OLLAMA_CONTEXT_LENGTH=4096
이렇게 하면 메모리를 절약하고 속도도 높일 수 있습니다.
모델 로드 상태 유지. 기본 설정에서는 5분 동안 사용하지 않으면 모델이 언로드됩니다. 자주 사용한다면 유지 시간을 늘리세요.
export OLLAMA_KEEP_ALIVE=30m
-1로 설정하면 Ollama 서비스가 실행되는 동안 모델을 계속 로드해 둡니다. 그러면 대화할 때마다 모델을 다시 불러올 필요가 없어 즉시 응답을 받을 수 있습니다.
API 연동: Ollama를 애플리케이션에 연결하기
Ollama의 진짜 가치는 여기에 있습니다. 완전한 API를 제공하므로 자신의 애플리케이션에 연동할 수 있습니다.
REST API 기초
Ollama가 시작되면 로컬의 11434 포트에서 API 서비스를 제공합니다.
가장 자주 사용하는 엔드포인트는 두 가지입니다.
텍스트 생성:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?"
}'
채팅 완성:
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2",
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
기본 응답은 스트리밍 방식으로 조금씩 반환됩니다. 완성된 결과를 한 번에 받고 싶다면 "stream": false로 설정하세요.
OpenAI 호환 API: 가장 유용한 기능
이 기능은 정말 실용적입니다. Ollama는 OpenAI 호환 인터페이스를 제공하므로 기존 OpenAI 코드를 거의 바꾸지 않고 로컬 모델로 전환할 수 있습니다.
OpenAI 호환 엔드포인트는 다음과 같습니다.
http://localhost:11434/v1/chat/completions
Python 코드 예시:
from openai import OpenAI
client = OpenAI(
base_url='http://localhost:11434/v1',
api_key='ollama' # 아무 값이나 넣어도 동작에 영향을 주지 않습니다
)
response = client.chat.completions.create(
model="llama3.2",
messages=[
{"role": "user", "content": "Say this is a test"}
]
)
print(response.choices[0].message.content)
JavaScript 코드 예시:
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: 'Hello!' }]
});
console.log(response.choices[0].message.content);
이렇게 개발과 테스트 단계에서는 로컬 모델을 사용해 비용을 아끼고, 운영 환경에서는 안정성을 위해 클라우드 API로 전환할 수 있습니다. 또는 로컬 모델만 사용해 비용과 데이터 프라이버시를 모두 통제할 수도 있습니다.
저는 환경 변수를 하나 설정해 실행 환경에 따라 로컬과 클라우드를 자동으로 전환합니다. 개발 단계에서는 기본적으로 로컬을 사용하고, 클라우드 기능이 꼭 필요할 때만 전환합니다.
Ollama Python 라이브러리
OpenAI 라이브러리 외에 더 직접적으로 사용할 수 있는 Ollama 전용 Python 라이브러리도 있습니다.
pip install ollama
기본 사용법:
import ollama
response = ollama.chat(model='llama3.2', messages=[
{'role': 'user', 'content': 'Why is the sky blue?'},
])
print(response['message']['content'])
스트리밍 모드:
import ollama
stream = ollama.chat(
model='llama3.2',
messages=[{'role': 'user', 'content': 'Why is the sky blue?'}],
stream=True,
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
도구 호출(Tool Calling)
Ollama는 도구 호출을 지원해 모델이 외부 함수나 API를 호출할 수 있게 합니다. 복잡한 AI 애플리케이션을 구축할 때 유용합니다.
예시:
import ollama
response = ollama.chat(
model='llama3.1',
messages=[{'role': 'user', 'content': 'What is the weather in Toronto?'}],
tools=[{
'type': 'function',
'function': {
'name': 'get_current_weather',
'description': 'Get the current weather for a city',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string', 'description': 'The name of the city'},
},
'required': ['city'],
},
},
}],
)
print(response['message']['tool_calls'])
모델은 질문을 보고 도구 호출이 필요한지 판단한 뒤 호출 인자를 반환합니다. 코드에서 실제 도구를 호출하고 그 결과를 다시 모델에 전달하면 됩니다.
Ollama와 LM Studio 중 무엇을 선택해야 할까요?
로컬에서 LLM을 실행하는 또 다른 도구인 LM Studio를 들어 보았을 것입니다. 둘 중 무엇을 선택해야 할까요?
솔직히 각각 장점이 있으므로 요구 사항에 따라 선택하면 됩니다.
Ollama:
- 명령줄 중심이라 개발자에게 적합합니다.
- 명령어 하나로 간단히 설치할 수 있습니다.
- API 서비스를 자동으로 시작합니다.
- 서버 및 컨테이너 배포를 완벽하게 지원합니다.
- 애플리케이션 구축과 자동화 연동에 적합합니다.
LM Studio:
- 그래픽 인터페이스가 직관적이고 사용하기 쉽습니다.
- 모델 브라우저가 내장되어 있어 다운로드가 편리합니다.
- API 서비스를 수동으로 시작해야 합니다.
- 서버 배포에는 적합하지 않습니다.
- 모델 탐색, 학습, 테스트에 적합합니다.
간단히 정리하면 다음과 같습니다.
- AI 애플리케이션 구축, 서버 배포, 스크립트 자동화가 목적이라면 → Ollama
- 여러 모델을 빠르게 체험하고 싶거나 명령줄이 익숙하지 않고 학습과 탐색이 목적이라면 → LM Studio
두 도구는 서로 보완해서 사용할 수도 있습니다. 저는 LM Studio에서 새 모델을 찾아 테스트하고, 사용하기 좋다고 판단한 뒤 Ollama에서 정식으로 연동합니다. 둘 다 기반에 llama.cpp를 사용하므로 모델은 완전히 호환됩니다.
실제로 어디에 활용할 수 있나요?
제가 실제로 사용한 몇 가지 사례를 소개하겠습니다.
로컬 코드 도우미
Ollama를 VS Code나 Cursor에 연동하면 모델로 코드를 작성하고 설명하거나 리팩터링할 수 있습니다. codellama 또는 deepseek-coder를 추천합니다.
Continue.dev와 Aider는 Ollama API에 직접 연결할 수 있습니다. 설정을 마치면 로컬에서 무료 코드 도우미를 사용할 수 있습니다.
문서 질의응답 시스템
검색하고 질문할 문서가 많다면 Ollama와 벡터 데이터베이스를 결합해 사내 지식 베이스를 만들 수 있습니다. 흐름은 다음과 같습니다.
- Ollama의 embeddings 인터페이스로 문서 벡터 생성
- 벡터 데이터베이스에 저장(Chroma, Qdrant 등)
- 사용자가 질문하면 관련 문서 조각을 먼저 검색
- 검색한 조각을 컨텍스트로 제공해 모델이 답변하도록 구성
이것이 전형적인 RAG(검색 증강 생성) 아키텍처입니다. 모든 처리를 로컬에서 수행하므로 데이터가 내부 네트워크 밖으로 나가지 않습니다.
사내 지식 베이스
회사 내부 문서, 기술 자료, 고객 정보 같은 민감한 데이터는 클라우드에 업로드하기 어렵습니다. Ollama로 모든 처리를 로컬에서 수행하면 프라이버시 및 컴플라이언스 요구 사항을 충족할 수 있습니다.
오프라인 환경
출장지, 야외 작업 현장, 네트워크가 불안정한 환경에서는 클라우드 AI를 사용할 수 없지만 Ollama는 완전히 오프라인으로 작동합니다. 컴퓨터에 전원만 있으면 AI 도우미를 사용할 수 있습니다.
개발 및 테스트 환경
AI 애플리케이션을 개발할 때 클라우드 API를 자주 호출하면 비용이 많이 듭니다. Ollama를 개발 및 테스트 환경으로 사용하면 비용을 아끼면서 편리하게 작업할 수 있습니다. 테스트를 마친 뒤 운영 환경에서는 클라우드 API로 전환하면 됩니다.
자주 묻는 질문
직접 겪은 몇 가지 문제와 해결 방법을 공유합니다.
마무리
지금까지 설명한 목적은 결국 로컬 LLM을 더 쉽게 사용하는 것입니다. Ollama는 복잡한 설정이나 깊은 AI 배경지식 없이도 몇 분 만에 시작할 수 있게 해 줍니다. 완전히 무료이고 오프라인에서 사용할 수 있으며 데이터 프라이버시도 지킬 수 있습니다.
다음 단계로 아래 작업을 시도해 보세요.
- 다양한 모델을 테스트해 요구 사항에 가장 잘 맞는 모델 찾기
- Ollama를 개발 워크플로에 연동하기
- RAG 아키텍처를 살펴보고 사내 지식 베이스 구축하기
- 서버에 배포해 팀이 함께 쓰는 AI 서비스 만들기
로컬 AI의 시대가 시작되었습니다. Ollama를 사용하면 클라우드에 의존하지 않고 자신의 컴퓨터에서 강력한 언어 모델을 실행할 수 있습니다. 이제 로컬 AI를 직접 시작해 보세요.
작성자: Easton(AI 개발 및 로컬 배포를 주제로 글을 쓰는 기술 블로거)
참고 자료:
FAQ
모델 다운로드에 실패하면 어떻게 하나요?
GPU가 인식되지 않으면 어떻게 하나요?
메모리가 부족하면 어떻게 하나요?
속도가 너무 느리면 어떻게 하나요?
모델이 너무 빨리 언로드되면 어떻게 하나요?
3분 읽기 · 게시일: 2026년 4월 1일 · 수정일: 2026년 9월 4일



댓글
GitHub로 로그인하여 댓글을 남기세요