Почему локальная нейросеть отвечает медленно
Сначала измерьте загрузку модели, обработку запроса и генерацию отдельно. По этим цифрам можно выбрать, что проверить первым: диск, контекст, память или ускоритель.
Обновлено Редакция GAW
Медленный первый ответ и медленная генерация требуют разных проверок. Загрузка весов, обработка входных токенов и выдача токенов ответа образуют отдельные этапы.
Коротко
- Сравнивайте холодный и прогретый запросы отдельно.
- Для длинного промпта запишите число обработанных и кешированных токенов.
- Скорость генерации сравнивайте при одинаковых модели и настройках.
- Проверяйте размещение модели, свободную память и частоты под нагрузкой.
Снять измерения в Ollama
После установки и загрузки тестового тега выполните запрос к локальному API. Сохраните JSON. Затем повторите тот же запрос, пока модель остаётся в памяти.
curl -fsS http://127.0.0.1:11434/api/generate \
-H 'Content-Type: application/json' \
-d '{"model":"llama3.2:1b","prompt":"Explain why leaves look green in one sentence.","stream":false,"keep_alive":"5m","options":{"num_ctx":2048,"num_predict":64,"temperature":0}}'
ollama ps
Времена в ответе приведены в наносекундах. Для скорости генерации поделите eval_count на eval_duration / 1e9, если время положительное. Например, 48 токенов за 2 секунды дают 24 токена/с. Это пример арифметики, а не результат теста оборудования. Для промпта смотрите prompt_eval_duration вместе с числом входных и кешированных токенов. Повтор того же текста может использовать кеш, поэтому помечайте такие результаты отдельно.
| Что выросло | Возможная причина | Следующая проверка |
|---|---|---|
load_duration | Модель выгрузилась или долго читается | Сравните холодный и прогретый запросы, проверьте диск и свободную RAM |
prompt_eval_duration | Длинный ввод или кеш не использовался | Сократите ввод, проверьте num_ctx и число токенов |
eval_duration при том же eval_count | Изменилось размещение модели или частота | Сверьте ollama ps, VRAM и частоты CPU/GPU во время запроса |
| Время клиента при схожих метриках движка | Очередь, клиент или сеть | Сравните прямой запрос к локальному API и запрос через интерфейс |
Память, питание и диск
Проверьте, не началась ли активная подкачка при загрузке. Если часть модели остаётся на CPU, запишите этот факт и сравните с вариантом, который полностью помещается в доступную VRAM. Уменьшение контекста помогает, когда дополнительное место занимает кеш. Для длительного падения скорости сравните частоты и температуру в начале и в конце серии. У ноутбука зафиксируйте питание от сети или батареи и режим энергопотребления. Диск особенно важен при загрузке весов и при подкачке.
Проверяйте по одному изменению за раз. Для времени до первого токена используйте потоковый запрос и таймер клиента. Время полного непотокового ответа включает больше этапов. Запишите версию движка, тег, контекст, размещение, число токенов и разброс нескольких сопоставимых запусков.
Частые вопросы
Почему первый запрос дольше последующих?
В него может войти загрузка модели. Сравните load_duration и проверьте, оставалась ли модель загруженной между запросами.
Как проверить использование GPU?
В Ollama выполните ollama ps и сравните поле PROCESSOR. Сверьте его с загрузкой и памятью GPU во время запроса.
Можно ли вычислить время до первого токена из eval_duration?
Нет. eval_duration относится к генерации. Время до первого токена измеряйте на клиенте с потоковым ответом и фиксируйте начало запроса.
Источники
- Ollama Generate API — Прочитано 08.11.2026
- Ollama FAQ — Прочитано 08.11.2026
- Ollama Context length — Прочитано 08.11.2026
- vLLM Metrics — Прочитано 08.11.2026
- llama.cpp README — Прочитано 08.11.2026
Нашли ошибку? ·