올라마(Ollama) 로컬 AI 사용법, 맥에서 직접 돌려 보니
맥에서 올라마로 gpt-oss:20b를 돌려 보니 첫 질문은 5.6초, 두 번째 질문은 1.6초가 걸렸습니다. 로컬 AI를 서버 켜기부터 메모리 확인, API 호출, 서버 끄기까지 실제 명령과 출력 순서대로 따라 할 수 있게 정리했습니다.
Finn ·

Apple M5 Max(메모리 36 GB) 맥에서 올라마로 gpt-oss:20b에 질문해 봤습니다. 첫 질문은 5.6초, 바로 이어서 한 두 번째 질문은 1.6초가 걸렸습니다. 첫 질문 시간의 대부분은 모델을 메모리에 올리는 시간(load duration 4.567580666s)이었죠. 로컬 AI를 내 맥에서 돌려 보고 싶다면 서버 켜기부터 API 호출, 서버 끄기까지 실제 명령과 출력을 그대로 따라가 보세요.
올라마 사용법, 순서부터 보기
아래 아홉 단계를 한 번씩 차례로 실행했습니다. 모델은 미리 받아 둔 상태였습니다.
- 컴퓨터 사양과 올라마 버전 확인
- 올라마 서버 켜기
- 받아 둔 모델 목록 보기
- 모델 정보 보기
- 첫 질문(모델 불러오기 포함)
- 두 번째 질문(모델이 이미 올라간 상태)
- 메모리 사용 확인
- API로 부르기
- 서버 끄기
아홉 단계 모두 종료 코드 0으로 끝났습니다. 오래 걸린 단계는 첫 질문과 서버 켜기(3초 대기 포함), API 호출 정도였고, 목록·정보·메모리 확인은 0.0초로 찍혔습니다.

그럼 시작 전에 올라마와 모델은 어떻게 준비할까요? 공식 문서가 안내하는 만큼만 먼저 짚고 넘어가겠습니다.
함께 읽을 글
맥에 올라마를 설치하고 모델 받는 방법
Quickstart에 따르면 macOS용 올라마는 Download Ollama에서 받습니다. 앱을 열거나 터미널에서 아래 명령으로 시작한 뒤 안내를 따르면 됩니다. 이때 로그인해서 클라우드 모델을 쓸지, 로컬 모델을 고를지 정하게 돼요.
ollama로컬 모델은 API 키 없이 내 컴퓨터에서 돌아갑니다. 이번 실습은 처음부터 끝까지 gpt-oss:20b 모델 하나만 씁니다. 모델은 CLI 레퍼런스의 ollama pull 명령으로 받습니다. 이 측정은 gpt-oss:20b를 미리 받아 둔 상태에서 시작했고, 받는 데 걸린 시간은 재지 않았습니다. 올라마는 Homebrew로 설치한 것을 썼습니다. 같은 조건으로 따라 하려면 실습 전에 아래 명령으로 모델부터 받아 두세요.
ollama pull gpt-oss:20b다른 모델을 고를 때 참고할 정보도 있습니다. Quickstart의 로컬 예시 모델인 gemma4:e2b는 내려받는 용량이 약 7.2 GB이고, 맥에서는 8 GB의 통합 메모리(unified memory)를 권장합니다. 컨텍스트 창이 클수록 메모리가 더 필요하다고 안내하니, 메모리가 넉넉하지 않은 맥이라면 모델 크기부터 확인하는 편이 좋습니다.
메모리는 얼마나 있어야 할까요? 문서는 gemma4:e2b 기준으로 내려받기가 약 7.2 GB이고, 맥에서는 8 GB의 사용 가능한 통합 메모리를 권장합니다. 컨텍스트 창이 클수록 메모리가 더 필요하다고도 적혀 있습니다. 이 기준은 그 모델 기준이라, 다른 모델은 따로 확인해야 합니다.
서버를 켜고 받아 둔 모델 확인하기
먼저 칩과 메모리, 올라마 버전을 봅니다. 서버가 아직 꺼져 있어서 연결 경고가 함께 나왔습니다.
$ system_profiler SPHardwareDataType | grep -E "Chip|Memory" && ollama --version
Chip: Apple M5 Max
Memory: 36 GB
Warning: could not connect to a running Ollama instance
Warning: client version is 0.40.8그래서 서버를 백그라운드로 켜고 3초 기다렸습니다. 나중에 끌 수 있게 프로세스 번호를 serve.pid에 남겨 둔 점이 핵심이에요. 앱 대신 터미널로만 다루고 싶다면 이 방식이 편합니다.
$ ollama serve > serve.log 2>&1 & echo $! > serve.pid; sleep 3; ollama --version
ollama version is 0.40.8이제 받아 둔 모델 목록과 상세 정보를 확인합니다.
$ ollama list
NAME ID SIZE MODIFIED
gpt-oss:20b f38aa0c53da5 13 GB 35 hours ago$ ollama show gpt-oss:20b
Model
architecture gpt-oss
parameters 20.9B
context length 131072
embedding length 2880
quantization MXFP4
requires 0.30.0
template source harmony
Capabilities
completion
tools
thinking
levels low, medium, high
default medium
Parameters
temperature 1
License
Apache License
Version 2.0, January 2004
...눈여겨볼 곳은 Capabilities입니다. tools와 thinking이 있고, 생각 수준의 기본값은 medium입니다. 이 모델은 답하기 전에 생각을 거친다는 뜻이고, 뒤에서 토큰 수를 볼 때 이 점이 중요해집니다.
첫 질문과 두 번째 질문의 시간 차이
질문할 때는 생각을 숨기는 --hidethinking, 시간 통계를 찍는 --verbose를 붙였습니다.
$ ollama run gpt-oss:20b --hidethinking --nowordwrap --verbose "로컬 AI가 무엇인지 한 문장으로 설명해 줘"
로컬 AI는 인터넷 연결 없이도 컴퓨터나 모바일 기기 같은 로컬 장치 안에서 실행되는 인공지능 시스템을 말합니다.
total duration: 5.588319041s
load duration: 4.567580666s
prompt eval count: 81 token(s)
prompt eval duration: 83.934ms
prompt eval rate: 965.04 tokens/s
eval count: 84 token(s)
eval duration: 918.97ms
eval rate: 91.41 tokens/s$ ollama run gpt-oss:20b --hidethinking --nowordwrap --verbose "로컬 AI의 단점 하나를 한 문장으로 말해 줘"
로컬 AI는 대규모 데이터와 최신 모델 업데이트를 지속적으로 제공하기 어려워서 성능이 떨어질 수 있습니다.
total duration: 1.5566475s
load duration: 567.583µs
prompt eval count: 83 token(s)
prompt eval duration: 78.124ms
prompt eval rate: 1062.41 tokens/s
eval count: 134 token(s)
eval duration: 1.475239s
eval rate: 90.83 tokens/s두 출력을 나란히 놓으면 차이가 분명합니다.
| 항목 | 첫 질문 | 두 번째 질문 |
|---|---|---|
| total duration | 5.588319041s | 1.5566475s |
| load duration | 4.567580666s | 567.583µs |
| eval count | 84 token(s) | 134 token(s) |
| eval rate | 91.41 tokens/s | 90.83 tokens/s |
첫 질문이 왜 느렸을까요? 모델을 불러오는 load duration이 4초를 넘었고, 두 번째에는 마이크로초 단위로 줄었습니다. 반면 글자를 만드는 속도(eval rate)는 두 번 모두 90 tokens/s대로 비슷했죠. 에이전트나 앱에서 로컬 모델을 부른다면 첫 호출만 유난히 느릴 수 있다는 점을 염두에 두는 게 좋습니다.
그런데 두 번째 질문은 토큰이 더 많고 eval duration도 더 길었습니다. 이 측정만으로는 그 원인을 가를 수 없습니다. 같은 질문을 여러 번 돌려 eval count가 얼마나 흔들리는지 직접 확인해 보세요.
메모리를 얼마나 쓰는지 보는 방법
모델이 올라간 상태에서 ollama ps를 실행하면 실행 중인 모델을 볼 수 있습니다.
$ ollama ps
NAME ID SIZE PROCESSOR CONTEXT RUNNER UNTIL
gpt-oss:20b f38aa0c53da5 12 GB 100% GPU 32768 llamacpp 4 minutes from now36 GB 맥에서 이 모델은 12 GB를 차지했고 100% GPU로 표시됐습니다. CONTEXT 칸은 32768로, 모델 정보의 context length(131072)와 다르게 찍혔습니다. 다른 도구와 메모리를 나눠 써야 한다면 이 숫자부터 확인해 보세요. 다 쓴 모델은 문서의 ollama stop gemma4처럼 이름을 넣어 멈출 수 있습니다.
숨긴 생각은 API 응답에서 보여요
앱이나 스크립트에서 부를 때는 로컬 서버의 11434 포트로 요청합니다. 응답 중 생각, 답, 토큰 수만 골라 봤습니다.
$ curl -s http://localhost:11434/api/generate -d '{"model":"gpt-oss:20b","prompt":"올라마 API로 부른 질문입니다. 한 문장으로 인사해 줘","stream":false}' | jq '{thinking, response, eval_count, eval_duration}'
{
"thinking": "The user says: \"올라마 API로 부른 질문입니다. 한 문장으로 인사해 줘\"\n\nThey are speaking Korean: \"올라마 API로 부른 질문입니다. 한 문장으로 인사해 줘\". This means: \"This is a question called via Olama API. Please greet me in one sentence.\" So I should greet them in one sentence. Possibly \"안녕하세요! Olama API에서 호출해 주셔서 감사합니다.\"\n\nWe need to respond in Korean. Let's produce a polite greeting in one sentence. The user might expect a greeting. We can say: \"안녕하세요! Olama API로 호출해 주셔서 반갑습니다.\"\n\nThe requirement: \"한 문장으로 인사해 줘\" means \"Please greet me in one sentence\". So we produce one sentence greeting. So something like: \"안녕하세요! Olama API를 통해 문의 주셔서 감사합니다.\"\n\nLet's provide that.",
"response": "안녕하세요! Olama API로 호출해 주셔서 반갑습니다.",
"eval_count": 218,
"eval_duration": 2444197000
}response는 인사 한 문장뿐입니다. 그런데 thinking 필드에는 질문을 영어로 풀어 보고 후보 문장을 여러 개 고른 긴 생각이 담겨 있고, eval_count는 218이었죠.

터미널 질문도 마찬가지였습니다. 생각을 숨겨 화면엔 한 문장만 나왔지만 eval count는 84, 134로 잡혀, 보이는 답보다 많은 토큰이 생성됐습니다. 그래서 응답 속도나 토큰 예산을 잴 때는 답의 길이만 보지 말고, 생각까지 포함된 eval count를 기준으로 삼는 편이 정확합니다.

서버를 끄는 방법
처음에 남겨 둔 프로세스 번호로 서버를 끕니다. 첫 단계와 같은 연결 경고가 다시 나오면 서버가 꺼진 것입니다.
$ kill $(cat serve.pid) && sleep 1 && ollama --version
Warning: could not connect to a running Ollama instance
Warning: client version is 0.40.8대화형으로 ollama run을 띄웠다면 /bye를 입력해 나오면 됩니다.
코딩 에이전트에도 붙일 수 있을까요?
Quickstart는 프로젝트 폴더에서 코딩 에이전트를 올라마 모델로 띄우는 명령을 안내합니다. 필요하면 올라마가 Claude Code 설치도 제안하고, 실행 중 모델을 고르게 됩니다.
ollama launch claudeCodex CLI는 먼저 설치한 뒤 ollama launch codex를 실행합니다. OpenCode는 ollama launch opencode로 시작하며, 필요하면 올라마가 설치를 제안합니다. 다만 이 글의 측정은 에이전트 연결까지 다루지 않았습니다. 에이전트처럼 호출이 잦은 작업이라면 앞의 첫 호출 지연과 메모리 사용량을 먼저 확인해 보세요.
측정 조건과 한계
| 단계 | 걸린 시간 |
|---|---|
| 1. 컴퓨터와 올라마 확인 | 0.1초 |
| 2. 서버 켜기 | 3.0초 |
| 3. 받아 둔 모델 보기 | 0.0초 |
| 4. 모델 정보 보기 | 0.0초 |
| 5. 첫 질문(모델 불러오기 포함) | 5.6초 |
| 6. 두 번째 질문 | 1.6초 |
| 7. 메모리 확인 | 0.0초 |
| 8. API로 부르기 | 2.6초 |
| 9. 서버 끄기 | 1.0초 |
- 맥 한 대(Apple M5 Max, 메모리 36 GB, darwin arm64), 올라마 0.40.8, 모델
gpt-oss:20b하나로 측정했습니다. - 새 임시 폴더에서 각 명령을 한 번씩만 실행했습니다. 반복 측정의 평균이 아닙니다.
- 서버 켜기의 3.0초에는 일부러 기다린 3초가 들어 있습니다.
- 모델을 받는 시간은 재지 않았습니다.
- 속도는 컴퓨터 사양과 모델에 따라 크게 달라집니다. 메모리가 적거나 다른 모델을 쓴다면 같은 순서로 직접 실행해 숫자를 다시 확인해 보세요.
참고 자료
- Quickstart docs.ollama.com
- CLI Reference docs.ollama.com