
"이 모델 빨라요"라는 말은 그 자체로는 정보가 아닙니다. 무엇을 얼마나 처리하는 데 얼마나 걸렸는지가 붙어야 비교가 됩니다. 이 글은 AI 작업에서 자주 쓰는 두 가지 속도 기준, 곧 원본 길이 대비 처리 시간과 초당 생성량을 설명합니다. 그다음 Ollama가 응답에 돌려주는 시간 항목으로 직접 계산하는 방법과, 숫자를 읽을 때 빠지기 쉬운 함정까지 정리합니다.
기준 하나: 원본 길이 대비 처리 시간
음성이나 영상처럼 원본에 길이가 있는 작업에서 쓰는 기준입니다. 계산은 간단합니다.
처리에 걸린 시간 ÷ 원본 길이
10분짜리 녹음을 처리하는 데 5분이 걸렸다면 값은 0.5입니다. 1보다 작으면 실제 재생 시간보다 빠르다는 뜻이고, 1보다 크면 실시간보다 느립니다. 이 값을 뒤집어 "2배속"처럼 말하기도 합니다. 0.5는 2배속, 0.25는 4배속입니다.
이 기준의 장점은 파일 길이가 달라도 비교가 된다는 점입니다. "3분 걸렸다"는 원본이 1분인지 1시간인지에 따라 완전히 다른 이야기지만, 길이로 나눈 값은 그대로 견줄 수 있습니다.
| 원본 길이 | 걸린 시간 | 계산 | 읽는 법 |
|---|---|---|---|
| 10분 | 5분 | 5 ÷ 10 = 0.5 | 실시간보다 빠름 (2배속) |
| 10분 | 10분 | 10 ÷ 10 = 1.0 | 재생 시간과 같음 |
| 30분 | 45분 | 45 ÷ 30 = 1.5 | 실시간보다 느림 |
| 60분 | 15분 | 15 ÷ 60 = 0.25 | 4배속 |
위 표의 숫자는 계산 방법을 보여 드리려고 제가 정한 예시 값이며, 특정 모델이나 기기의 측정 결과가 아닙니다.

기준 둘: 초당 만들어내는 양
글을 생성하는 작업에는 원본 길이가 없습니다. 그래서 1초에 얼마나 만들어내는지로 잽니다. 단위는 보통 "초당 토큰"인데, 토큰은 AI가 글을 세는 조각 단위입니다. 한국어는 한 글자가 한 토큰이 아니고, 영어 단어 하나가 여러 토큰이 될 수도 있어서 글자 수와 토큰 수는 일대일로 바뀌지 않습니다. 같은 "초당 20토큰"이라도 모델마다 토큰을 자르는 방식이 달라 실제로 화면에 나오는 글의 양은 다를 수 있습니다.
또 하나 기억할 점은 첫 글자가 나오기까지 걸리는 시간은 따로라는 것입니다. 초당 생성량이 높아도 첫 반응이 느리면 사용자는 느리다고 느낍니다. 대화형 도구에서는 이 둘을 나눠서 봐야 정확합니다.
Ollama 응답으로 직접 계산해 보기
로컬에서 AI를 돌릴 때 쓰는 Ollama는 생성 API의 응답에 시간 항목을 함께 돌려줍니다. Ollama 공식 API 문서에 나온 항목의 뜻은 다음과 같습니다. 시간 값은 모두 나노초(10억분의 1초) 단위입니다.
| 항목 | 공식 문서의 설명(요약) | 속도 계산에서의 역할 |
|---|---|---|
| load_duration | 모델을 불러오는 데 쓴 시간 | 첫 실행이 느린 이유 |
| prompt_eval_count | 입력(프롬프트)의 토큰 수 | 입력 읽기 속도의 분자 |
| prompt_eval_duration | 입력을 처리하는 데 쓴 시간 | 입력 읽기 속도의 분모 |
| eval_count | 응답의 토큰 수 | 생성 속도의 분자 |
| eval_duration | 응답을 만드는 데 쓴 시간 | 생성 속도의 분모 |
| total_duration | 응답을 만드는 데 쓴 전체 시간 | 사용자가 기다린 시간 |
같은 문서에는 초당 생성량을 구하는 식도 있습니다. eval_count ÷ eval_duration × 109입니다. 나노초를 초로 바꾸려고 10억을 곱하는 것입니다. 입력 읽기 속도도 같은 방식으로 prompt_eval_count와 prompt_eval_duration으로 구할 수 있습니다.
계산 예: 같은 모델인데 숫자가 둘로 갈리는 경우
아래 값은 계산 연습을 위해 정한 가정 값입니다. 실제 측정값이 아니니 내 기기의 값으로 바꿔 넣어 보세요.
| 가정한 응답 항목 | 값 | 계산 | 결과 |
|---|---|---|---|
| eval_count | 256토큰 | 256 ÷ 12,800,000,000 × 109 | 초당 20토큰 |
| eval_duration | 12,800,000,000 (12.8초) | ||
| prompt_eval_count | 1,000토큰 | 1,000 ÷ 2,000,000,000 × 109 | 초당 500토큰 |
| prompt_eval_duration | 2,000,000,000 (2초) |
이 예에서 입력은 초당 500토큰, 생성은 초당 20토큰으로 같은 모델 안에서도 25배 차이가 납니다. 그래서 "이 모델은 초당 몇 토큰"이라는 한 줄은 입력 읽기인지 답변 생성인지 밝히지 않으면 뜻이 반쪽입니다. 긴 문서를 통째로 넣는 요약 작업이라면 입력 읽기 시간이 전체를 좌우하고, 짧은 질문에 긴 답을 받는 대화라면 생성 속도가 체감을 좌우합니다.
사용자가 실제로 기다린 시간은 보통 모델 불러오기 + 입력 읽기 + 응답 생성의 합으로 어림할 수 있습니다. 위 가정 값에 모델 불러오기 3초를 더하면 3 + 2 + 12.8 = 17.8초입니다. 이 중 생성이 70% 남짓을 차지하는 셈이므로, 체감 속도를 줄이려면 생성 속도를 올리는 쪽이 효과가 큽니다. 반대로 같은 모델로 두 번째 요청을 보냈는데 불러오기 시간이 0에 가깝게 줄어든다면, 처음 값은 준비 작업이 섞인 값이라는 뜻입니다.
같은 계산으로 여러 건의 시간 어림하기
같은 가정 값으로 비슷한 요청 100건을 이어서 처리한다고 해 보겠습니다. 모델은 처음 한 번만 불러오고 나머지는 메모리에 올라 있다고 보면, 한 건당 입력 읽기 2초와 생성 12.8초를 더한 14.8초가 100번 걸립니다. 곱하면 1,480초이고 여기에 불러오기 3초를 더해 약 1,483초, 분으로 바꾸면 25분이 채 안 됩니다. 이렇게 한 건의 속도를 알면 전체 작업 시간을 미리 어림해서 "밤새 돌릴지, 점심시간에 끝낼지" 정할 수 있습니다. 다만 요청 사이가 5분 넘게 벌어지면 모델이 내려가 매번 불러오는 시간이 붙으니, 이 어림은 요청이 이어서 들어올 때만 맞습니다.
처음 한 번이 느린 이유
Ollama 공식 FAQ에 따르면 모델은 기본적으로 5분 동안 메모리에 유지된 뒤 내려갑니다. 서버를 시작할 때 OLLAMA_KEEP_ALIVE 환경 변수로, 또는 API 요청의 keep_alive 값으로 이 시간을 바꿀 수 있고 요청의 값이 환경 변수보다 우선합니다. 이 말은 곧 5분 넘게 쉬었다가 다시 질문하면 모델을 다시 불러오느라 첫 응답이 늦어진다는 뜻입니다. 속도를 잴 때 첫 실행 값을 버리고 두세 번째 값을 보라는 조언이 여기서 나옵니다.
같은 FAQ는 ollama ps 명령으로 현재 올라간 모델과 Processor 열(GPU, CPU, 또는 둘의 혼합)을 볼 수 있다고 안내합니다. 이 열을 확인하지 않고 잰 값은 어느 장치에서 나온 숫자인지 알 수 없습니다. 같은 모델이라도 일부가 CPU로 넘어가면 생성 속도가 크게 달라질 수 있기 때문입니다. 제가 같은 기기에서 CPU만 쓸 때와 GPU를 쓸 때를 나눠 실제로 잰 표는 GPU 없이 내 컴퓨터에서 AI 돌리기 글에 따로 정리해 두었습니다.
직접 재보는 방법
추측하지 말고 같은 조건으로 여러 번 재면 됩니다.
- 같은 입력을 쓴다 — 파일이나 질문이 다르면 비교가 안 됩니다. 입력은 파일로 저장해 두고 매번 그대로 넣습니다.
- 여러 번 잰다 — 첫 실행은 모델 불러오기가 섞입니다. 두세 번째 값부터 보고, 값의 범위를 같이 적습니다.
- 기기 상태를 본다 — 발열이 오르면 느려질 수 있습니다. 오래 돌린 뒤의 값과 처음 값이 다를 수 있으니 순서를 기록합니다.
- 장치를 확인한다 — ollama ps의 Processor 열에서 GPU와 CPU 중 어디서 돌았는지 함께 적습니다.

기록 양식
| 적을 것 | 예시 칸 | 이유 |
|---|---|---|
| 모델 이름과 크기 | (내가 받은 모델 이름) | 모델이 다르면 비교가 안 됩니다. |
| 기기와 장치 | (기기 이름, GPU/CPU) | 같은 모델도 장치에 따라 다릅니다. |
| 입력 토큰 수 | (prompt_eval_count) | 입력 길이가 다르면 읽기 시간이 달라집니다. |
| 몇 번째 실행인지 | (1, 2, 3회차) | 첫 실행에는 불러오기가 섞입니다. |
| 입력 읽기 속도 / 생성 속도 | (각각 초당 토큰) | 둘을 한 숫자로 합치면 뜻이 흐려집니다. |
남이 쓴 숫자를 읽을 때 같이 볼 것
어디선가 성능 수치를 봤다면 어떤 기기에서, 어떤 크기의 모델로, 몇 번째 실행에서, 입력과 생성 중 무엇을 잰 값인지를 함께 확인하시기 바랍니다. 이 네 가지가 없는 숫자는 내 환경에서 재현되지 않습니다.
| 이런 말을 들으면 | 되물을 것 |
|---|---|
| "초당 50토큰 나온다" | 입력 읽기인가 답변 생성인가? 어떤 기기인가? |
| "이 음성 모델은 실시간보다 빠르다" | 원본 길이로 나눈 값이 1보다 작은가? 어떤 길이의 파일인가? |
| "응답이 즉각적이다" | 첫 글자까지 걸린 시간인가, 끝까지 나온 시간인가? |
| "A가 B보다 2배 빠르다" | 같은 입력, 같은 기기, 같은 회차에서 잰 값인가? |
모델 이름 뒤에 붙는 Q4 같은 표기는 속도와 메모리 사용에 영향을 주므로 비교할 때 함께 적어야 합니다. 읽는 법은 Q4가 무슨 뜻인가 글에서 다뤘습니다.
자주 하는 실수
- 두 속도를 하나로 합친다 — 입력 읽기와 생성 속도를 평균 내면 어느 쪽 문제인지 알 수 없습니다.
- 토큰과 글자를 섞는다 — 초당 토큰 수에 글자 수를 대입하면 안 됩니다.
- 첫 실행 값으로 결론을 낸다 — 모델을 불러오는 시간이 섞여 있습니다.
- 짧은 입력 하나로 판단한다 — 입력 길이가 달라지면 읽기 시간이 달라집니다. 짧은 것과 긴 것 두 가지를 모두 잽니다.
확인 자료
- Ollama API 문서 — 시간 항목과 초당 토큰 계산식 (확인: 2026-10-09)
- Ollama FAQ — 모델 유지 시간(5분), keep_alive, ollama ps (확인: 2026-10-09)
- Ollama 공식 문서
확인 날짜: 2026-10-09. 제품 설정과 기본값은 바뀔 수 있으니 최신 공식 문서가 우선합니다.