~/tools / 서버에서 로컬 LLM 실행하기 / Ollama Log Reader

Ollama Log Reader — Ollama 서버 로그 읽기: 메모리, GPU 레이어, 컨텍스트, 속도, 경고

Ollama의 서버 로그(server.log, journalctl, docker logs의 것)를 붙여 넣으면 중요한 내용만 골라 보여 줍니다. 모델을 불러올 때마다 메모리를 얼마나 어디에 썼는지(가중치, KV 캐시, 계산 버퍼를 CPU와 GPU별로), GPU에 올라간 레이어 수, 컨텍스트 길이, 요청과 그 상태, 프롬프트와 생성 속도, 그리고 모든 경고를 설명과 함께 보여 줍니다. 프롬프트가 컨텍스트에 맞춰 잘렸을 때, 모델이 메모리에 들어가지 않았을 때, Ollama가 모델을 다시 불러왔을 때도 알 수 있습니다. 데이터는 브라우저 밖으로 나가지 않습니다.

로그를 찾는 곳

Ollama의 문제 해결 페이지에 나온 내용입니다. Windows에서는 그 폴더에서 가장 최근 로그가 server.log입니다.

# macOS
cat ~/.ollama/logs/server.log

# Linux (systemd)
journalctl -u ollama --no-pager

# Docker
docker logs <container-name>

# Windows
explorer %LOCALAPPDATA%\Ollama

77줄 중 76줄을 읽었습니다.

  • 23번째 줄컨텍스트가 4096토큰으로, 모델이 지원하는 32768보다 짧습니다. 더 긴 입력에는 더 큰 num_ctx 또는 OLLAMA_CONTEXT_LENGTH와, KV 캐시를 위한 더 많은 메모리가 필요합니다.
  • 43번째 줄컨텍스트가 256토큰으로, 모델이 지원하는 32768보다 짧습니다. 더 긴 입력에는 더 큰 num_ctx 또는 OLLAMA_CONTEXT_LENGTH와, KV 캐시를 위한 더 많은 메모리가 필요합니다.
  • 49번째 줄프롬프트가 633토큰이었고 컨텍스트에 들어가지 않았습니다. Ollama는 처음 4토큰과 프롬프트의 끝을 남기고 나머지를 버려 130토큰이 되었습니다. num_ctx를 올리거나, 프롬프트를 줄이거나, truncate를 false로 보내면 대신 오류를 받습니다.
  • 53번째 줄633토큰의 요청이 256토큰의 컨텍스트에 들어가지 않아 거부되었습니다(truncate가 false일 때 일어납니다). num_ctx를 올리거나 입력을 줄이세요.
  • 55번째 줄Ollama는 다른 설정(예를 들어 다른 num_ctx)으로 모델을 불러오려고 llama-server를 중단하고 바로 다시 시작했습니다. 충돌이 아닙니다.
  • 58번째 줄num_ctx 65536은(는) 모델이 학습된 컨텍스트보다 길어서 Ollama는 32768을(를) 사용했습니다.
  • 실패한 요청: 400 POST /api/chat, 404 POST /api/chat

서버

버전
0.40.11
주소
[::]:11434
장치
cpu cpu (1.9 GiB / 1.9 GiB)
기본 컨텍스트 길이
4096

설정(환경 변수)

OLLAMA_HOST
http://0.0.0.0:11434
OLLAMA_CONTEXT_LENGTH
0 (0 = 기본값)
OLLAMA_NUM_PARALLEL
1
OLLAMA_MAX_LOADED_MODELS
0 (0 = 기본값)
OLLAMA_KEEP_ALIVE
5m0s
OLLAMA_FLASH_ATTENTION
false

모델 불러오기

2026-11-07T08:32:08.625Z의 불러오기 1 14번째 줄

모델
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
컨텍스트 길이
4096 (학습 길이 32768)
병렬 요청 수
1
가중치
512 MiB
KV 캐시
48.0 MiB (f16)
계산 버퍼
41.3 MiB
합계
601 MiB
장치별
CPU 393 MiB, CPU_REPACK 208 MiB
시스템 메모리
1946 MiB 중 1638 MiB 비어 있음, 스왑 777 MiB 비어 있음
시작 시간
1.27초

2026-11-07T08:32:10.384Z의 불러오기 2 34번째 줄

모델
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
컨텍스트 길이
256 (학습 길이 32768)
병렬 요청 수
1
가중치
512 MiB
KV 캐시
3.0 MiB (f16)
계산 버퍼
18.8 MiB
합계
533 MiB
장치별
CPU 325 MiB, CPU_REPACK 208 MiB
시스템 메모리
1946 MiB 중 1638 MiB 비어 있음, 스왑 763 MiB 비어 있음
시작 시간
1.02초

2026-11-07T08:32:12.223Z의 불러오기 3 59번째 줄

모델
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
컨텍스트 길이
32768 (학습 길이 32768)
병렬 요청 수
1
가중치
512 MiB
KV 캐시
384 MiB (f16)
계산 버퍼
139 MiB
합계
1034 MiB
장치별
CPU 826 MiB, CPU_REPACK 208 MiB
시스템 메모리
1946 MiB 중 1638 MiB 비어 있음, 스왑 764 MiB 비어 있음
시작 시간
1.02초

llama-server가 보고한 속도

처리한 프롬프트 토큰프롬프트 속도생성한 토큰생성 속도
35217.5 토큰/초759.9 토큰/초
130227.3 토큰/초1194.8 토큰/초
30202.7 토큰/초562.7 토큰/초

요청

시각상태소요 시간요청
2026/11/07 - 08:31:422000.007초GET /api/version
2026/11/07 - 08:32:0020017.49초POST /api/pull
2026/11/07 - 08:32:002000.040초GET /api/tags
2026/11/07 - 08:32:102001.62초POST /api/chat
2026/11/07 - 08:32:122001.89초POST /api/chat
2026/11/07 - 08:32:124000.005초POST /api/chat
2026/11/07 - 08:32:132001.31초POST /api/chat
2026/11/07 - 08:32:134040.002초POST /api/chat

프롬프트가 들어가지 않을 때 Ollama는 num_ctx − max((num_ctx − num_keep) ÷ 2, 1) 토큰으로 줄입니다. 답변을 위한 공간이 남도록 컨텍스트의 약 절반입니다. 속도 표의 프롬프트 토큰은 캐시에 없던 토큰만 센 것입니다.

llama-server는 생성 속도를 계산할 때 처음 생성된 토큰을 세지 않으므로, 그 값은 API 응답의 eval_count를 eval_duration으로 나눈 값보다 조금 낮습니다.

로그 형식은 릴리스마다 바뀝니다. 이 도구는 Ollama v0.40.15와 그것이 쓰는 llama.cpp 빌드를 따르며, 모르는 줄은 건너뜁니다.

메시지는 Ollama 소스 코드(v0.40.15)와 llama.cpp에서 가져왔고, 2026-11-07에 macOS와 Linux의 Ollama 0.40.11 실제 로그로 확인했습니다. Ollama: Troubleshooting

모든 작업은 브라우저 안에서 이루어집니다. 이 도구는 어디에도 연결하지 않습니다. 로그에는 파일 경로, IP 주소, 모델 이름이 들어 있을 수 있습니다.

Ollama가 느리거나, 긴 프롬프트의 앞부분을 무시하거나, 요청이 500 오류로 실패할 때 그 이유는 대개 서버 로그에 있습니다. 로그에는 Ollama 자신의 줄(time=… level=… msg=…), HTTP 요청마다 한 줄([GIN] …), 그리고 Ollama가 각 GGUF 모델을 불러오려고 실행하는 llama.cpp 프로그램인 llama-server의 출력이 섞여 있습니다. 이 도구는 세 가지를 모두 읽습니다. 모델을 불러올 때마다 컨텍스트 길이(-c), 병렬 요청 수(-np), 모델의 파일 형식과 크기, 학습된 컨텍스트 길이, GPU로 오프로드된 레이어 수, 가중치와 KV 캐시와 계산 버퍼의 메모리를 장치별로 보여 줍니다. 또한 요청을 상태와 소요 시간과 함께 나열하고, llama-server가 요청마다 출력하는 프롬프트와 생성 속도도 보여 줍니다. 그런 다음 Ollama 소스 코드(v0.40.15)의 메시지를 바탕으로 무엇이 잘못됐는지 설명합니다. 프롬프트가 컨텍스트에 들어가지 않으면 Ollama는 처음 num_keep 토큰과 프롬프트의 끝을 남기고 그 사이를 버려, 프롬프트가 컨텍스트의 약 절반이 될 때까지 줄입니다. 우리의 테스트에서, num_ctx 256에서 633토큰의 프롬프트가 130토큰으로 잘렸습니다. truncate를 false로 하면 같은 요청이 400 오류로 거부되었습니다. 모델이 학습된 길이보다 큰 num_ctx는 그 길이로 낮춰집니다. 모델이 메모리에 들어가지 않으면 불러오기가 실패합니다. 우리의 테스트에서, 메모리 1.9 GiB에 GPU가 없는 Linux에서 qwen2.5:7b는 가중치에만 4,460 MiB가 필요했고, llama-server는 signal: killed로 중단되었으며, 요청은 500을 반환했습니다. llama-server가 종료되었다는 줄 바로 뒤에 새 시작이 이어진다면, 충돌한 것이 아니라 Ollama가 다른 설정으로 모델을 다시 불러오는 중이라는 뜻입니다. 로그 형식은 릴리스마다 바뀝니다. 이 도구는 아는 줄을 읽고 나머지는 건너뜁니다. macOS(Apple M1)와 GPU 없는 Docker의 Linux에서 나온 Ollama 0.40.11의 실제 로그로 확인했습니다.

이 도구의 핵심 로직은 MIT 라이선스의 오픈 소스로 공개되어 있습니다. github.com/seigo5555/toolkitbox-lib/src/ollama-log.ts

이럴 때 사용

  • 긴 프롬프트가 무시되는 것처럼 보이는 이유나, 요청이 400 또는 500으로 실패한 이유 찾기
  • 모델이 실제로 메모리를 얼마나 썼는지, GPU, CPU, 아니면 둘 다에서 돌았는지 확인하기
  • 더 큰 VPS를 구입하기 전에 서버가 어떤 컨텍스트 길이와 설정을 썼는지 확인하기

사용법

  1. 로그를 가져옵니다. macOS에서는 cat ~/.ollama/logs/server.log, Linux에서는 journalctl -u ollama --no-pager, Docker에서는 컨테이너 이름을 넣은 docker logs입니다.
  2. 붙여 넣습니다. journalctl 또는 docker 타임스탬프로 시작하는 줄도 읽습니다.
  3. 먼저 경고를 읽고, 그다음 모델 불러오기, 속도, 요청을 읽습니다.

FAQ

모델이 긴 프롬프트의 앞부분을 무시하는 이유는 무엇인가요?

로그에 "truncating input prompt" 줄이 있다면 프롬프트가 컨텍스트에 들어가지 않은 것입니다. Ollama는 처음 num_keep 토큰과 끝부분을 남기고 가운데를 버려, 프롬프트가 컨텍스트의 약 절반이 될 때까지 줄였습니다. num_ctx(또는 OLLAMA_CONTEXT_LENGTH)를 올리거나, 프롬프트를 줄이거나, truncate를 false로 보내세요. 그러면 Ollama는 자르는 대신 오류를 반환합니다.

"signal: killed"는 무슨 뜻인가요?

llama-server가 바깥에서 중단되었다는 뜻입니다. 우리의 Linux 테스트에서는 메모리에 들어가지 않는 모델을 불러오는 도중에 이런 일이 생겼고, 요청은 500을 반환했습니다. 2초 안에 새 "starting llama-server" 줄이 이어진다면, Ollama가 다른 설정으로 모델을 다시 불러오려고 이전 프로세스를 직접 중단한 것입니다.

로그의 생성 속도가 eval_count를 eval_duration으로 나눈 값보다 낮은 이유는 무엇인가요?

llama-server는 처음 생성된 토큰을 세지 않습니다. 그 토큰은 프롬프트 처리의 마지막 단계에서 나오기 때문에, 토큰 하나를 뺀 수로 나눕니다. 우리의 테스트에서, 675.82 ms 동안 7토큰이 초당 8.88토큰으로 보고되었지만, 7을 같은 시간으로 나누면 10.4가 됩니다.

모델이 GPU에서 돌았는지 어떻게 알 수 있나요?

모델을 불러온 항목의 "GPU에 올라간 레이어 수"를 보세요. 모든 레이어가 GPU에 있으면 모델이 전적으로 GPU에서 돌았다는 뜻이고, 일부 레이어만 있으면 나머지는 CPU에서 돌았다는 뜻입니다. 모델이 불러온 상태인 동안 ollama ps의 PROCESSOR 열에도 같은 분할이 표시됩니다.

읽히지 않는 줄이 있는 이유는 무엇인가요?

이 도구는 Ollama 자신의 줄, 요청 줄, 그리고 메모리, 컨텍스트, 속도와 관련된 llama-server의 줄을 읽습니다. 모델 메타데이터 목록 같은 다른 줄은 건너뜁니다. 형식은 릴리스마다 바뀌므로, 훨씬 오래되었거나 새로운 버전의 줄은 인식되지 않을 수 있습니다.

내 로그가 어딘가로 전송되나요?

아니요. 로그는 브라우저 안에서 읽힙니다. 로그에는 파일 경로, IP 주소, 모델 이름이 들어 있을 수 있으니 다른 곳에 붙여 넣을 때는 주의하세요.

관련 글

관련 도구