~/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

Прочитано 76 из 77 строк.

  • строка 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 или сократите входные данные.
  • строка 55Ollama остановила llama-server и сразу запустила его снова, чтобы загрузить модель с другими настройками, например с другим num_ctx. Это не сбой.
  • строка 58num_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

Загрузки моделей

Загрузка 1 в 2026-11-07T08:32:08.625Z строка 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
Системная память
свободно 1638 MiB из 1946 MiB, свободно в swap 777 MiB
Время запуска
1.27 с

Загрузка 2 в 2026-11-07T08:32:10.384Z строка 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
Системная память
свободно 1638 MiB из 1946 MiB, свободно в swap 763 MiB
Время запуска
1.02 с

Загрузка 3 в 2026-11-07T08:32:12.223Z строка 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
Системная память
свободно 1638 MiB из 1946 MiB, свободно в swap 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 не считает первый сгенерированный токен при вычислении скорости генерации, поэтому его значение немного ниже, чем eval_count, делённое на eval_duration в ответе API.

Формат лога меняется от выпуска к выпуску. Инструмент следует Ollama v0.40.15 и сборке llama.cpp, которую она использует, и пропускает неизвестные строки.

Сообщения из исходного кода Ollama (v0.40.15) и llama.cpp, проверены на настоящих логах Ollama 0.40.11 на macOS и на Linux 2026-11-07. Ollama: Troubleshooting

Всё происходит в вашем браузере. Инструмент ни к чему не подключается. Логи могут содержать пути к файлам, IP-адреса и названия моделей.

Когда Ollama работает медленно, ответы игнорируют начало длинного промпта или запрос завершается ошибкой 500, объяснение обычно есть в логе сервера. В логе перемешаны собственные строки Ollama (time=… level=… msg=…), по одной строке на каждый HTTP-запрос ([GIN] …) и вывод llama-server, программы llama.cpp, которой Ollama загружает каждую модель GGUF. Этот инструмент читает все три. Для каждой загрузки модели он показывает длину контекста (-c), число параллельных запросов (-np), тип и размер файла модели, длину контекста, на которую модель обучалась, сколько слоёв выгружено на GPU, а также память под веса, кэш KV и вычислительные буферы по устройствам. Он также перечисляет запросы со статусом и длительностью и скорость обработки промпта и генерации, которую llama-server выводит после каждого запроса. Затем он объясняет, что пошло не так, опираясь на сообщения из исходного кода Ollama (v0.40.15). Когда промпт не помещается в контекст, Ollama оставляет первые num_keep токенов и конец промпта, а то, что между ними, отбрасывает, пока промпт не займёт около половины контекста: в нашем тесте промпт из 633 токенов при num_ctx 256 был обрезан до 130 токенов. При truncate, равном false, тот же запрос был отклонён с ошибкой 400. Значение num_ctx больше длины, на которую обучалась модель, снижается до этой длины. Когда модель не помещается в память, загрузка завершается неудачей: в нашем тесте на Linux с 1.9 GiB памяти и без GPU qwen2.5:7b потребовалось на веса 4,460 MiB, llama-server был остановлен с signal: killed, а запрос вернул 500. Строка о том, что llama-server завершился, за которой сразу следует новый запуск, означает, что Ollama загружала модель заново с другими настройками, а не что она упала. Формат лога меняется от выпуска к выпуску; инструмент читает известные ему строки и пропускает остальные. Мы проверили его на настоящих логах Ollama 0.40.11 на macOS (Apple M1) и на Linux в Docker без GPU.

Основная логика этого инструмента открыта под лицензией MIT. github.com/seigo5555/toolkitbox-lib/src/ollama-log.ts

Когда пригодится

  • Выяснить, почему длинный промпт как будто игнорируется или почему запрос завершился ошибкой 400 или 500
  • Увидеть, сколько памяти модель использовала на самом деле и работала ли она на GPU, CPU или на обоих
  • Проверить, какую длину контекста и какие настройки использовал сервер, прежде чем покупать VPS побольше

Как пользоваться

  1. Получите лог: cat ~/.ollama/logs/server.log на macOS, journalctl -u ollama --no-pager на Linux или docker logs с именем контейнера.
  2. Вставьте его. Строки, начинающиеся с метки времени journalctl или docker, тоже читаются.
  3. Сначала прочитайте предупреждения, затем загрузки моделей, скорость и запросы.

Вопросы

Почему моя модель игнорирует начало длинного промпта?

Если в логе есть строка «truncating input prompt», промпт не поместился в контекст. Ollama оставила первые num_keep токенов и конец, а середину отбросила, пока промпт не занял около половины контекста. Увеличьте num_ctx (или OLLAMA_CONTEXT_LENGTH), сократите промпт или отправьте truncate, равный false, чтобы Ollama вернула ошибку вместо обрезки.

Что значит «signal: killed»?

llama-server был остановлен извне. В нашем тесте на Linux это случилось во время загрузки модели, которая не помещалась в память, и запрос вернул 500. Если в течение двух секунд следует новая строка «starting llama-server», Ollama сама остановила старый процесс, чтобы загрузить модель заново с другими настройками.

Почему скорость генерации в логе ниже, чем eval_count, делённое на eval_duration?

llama-server не считает первый сгенерированный токен, потому что он получается на последнем шаге обработки промпта, и делит на один токен меньше. В нашем тесте 7 токенов за 675.82 ms были показаны как 8.88 токена в секунду, тогда как 7, делённое на то же время, даёт 10.4.

Как увидеть, работала ли модель на GPU?

Посмотрите «Слои на GPU» у загрузки модели. Все слои на GPU означают, что модель работала там целиком; часть слоёв означает, что остальное работало на CPU. Пока модель загружена, ollama ps показывает то же распределение в столбце PROCESSOR.

Почему некоторые строки не читаются?

Инструмент читает собственные строки Ollama, строки запросов и те строки llama-server, которые важны для памяти, контекста и скорости. Другие строки, например список метаданных модели, пропускаются. Формат меняется между выпусками, поэтому строки из гораздо более старой или новой версии могут не распознаваться.

Отправляется ли мой лог куда-нибудь?

Нет. Лог читается в вашем браузере. Логи могут содержать пути к файлам, IP-адреса и названия ваших моделей, поэтому будьте осторожны, куда ещё вы их вставляете.

Похожие статьи

Похожие