Перейти к содержанию
modelium.
Начать с задачи
←

Как проверить сон llama.cpp server после простоя

Флаг --sleep-idle-seconds задаёт время простоя, после которого llama.cpp server выгружает модель из памяти. Состояние проверяется полем is_sleeping в GET /props; затем нужен реальный запрос к модели, чтобы проверить пробуждение. Это инструкция по закреплённым исходникам, а не результат нашего запуска; есть открытый отчёт о зависании запроса ровно в момент засыпания.

Если модель в llama.cpp server занимает память даже тогда, когда вы не отправляете запросы, можно включить сон после простоя: сервер выгрузит модель, а следующий рабочий запрос попытается загрузить её снова. Ниже — способ проверить оба перехода, не принимая ответ /health за доказательство того, что модель ещё в памяти. Инструкция инженерного уровня для Linux: нужна командная строка и уже работающий llama.cpp с совместимым локальным GGUF-файлом (файлом с весами модели). s1 s2

Статус проверки: действия сверены с исходниками llama.cpp на коммите a0e6dc7 от 14 октября 2026 года. Редакция не запускала сервер или модель и не измеряла реальную экономию памяти. У upstream открыт отчёт о возможном зависании запроса, попавшего точно на границу засыпания; не включайте этот режим в критичном сервисе без собственного нагрузочного теста. s1 s2 s4

Что нужно до запуска?

У вас уже должен быть совместимый GGUF-файл и собранный llama-server. Если ещё нет, начните с инструкции по llama.cpp. Размер GGUF сам по себе не задаёт минимальную оперативную или видеопамять: проверяйте требования своей модели на своём компьютере. Для получения программы и весов нужна сеть; описанный ниже запрос идёт на 127.0.0.1, но полную офлайн-работу своего ПК нужно проверять отдельно. s1

При необходимости сервер собирается из закреплённых исходников в корне репозитория командами cmake -B build и cmake --build build --config Release -t llama-server. Результат сборки в документации — ./build/bin/llama-server; это путь из инструкции, не протокол нашей сборки. s1

Как включить сон и увидеть выгрузку?

Остановите прежний экземпляр сервера, затем в первом терминале Linux запустите ./build/bin/llama-server -m /путь/к/модели.gguf --host 127.0.0.1 --port 8080 --sleep-idle-seconds 60. Замените путь на существующий файл. Адрес оставлен только для этого компьютера; не открывайте порт наружу ради теста. Флаг принимает положительное число секунд, -1 означает отключённый сон, а 0 отвергается. Дождитесь загрузки модели, прежде чем обращаться к API. s1 s3

Во втором терминале выполните curl --fail-with-body -sS http://127.0.0.1:8080/props. В JSON найдите "is_sleeping": false — модель пока активна. Затем не отправляйте рабочих запросов дольше минуты: после запуска sleep 70 снова выполните curl --fail-with-body -sS http://127.0.0.1:8080/props. Ожидаемое значение — "is_sleeping": true. Запросы GET /props, /health, /models и /metrics не сбрасывают таймер и сами по себе модель не будят. Если true не появилось, проверьте параметр запуска, время ожидания и другие клиенты, которые могут посылать запросы; не выдавайте один ответ /health за измерение памяти. s1 s2

Как проверить пробуждение и возможное зависание?

На том же компьютере отправьте один учебный запрос с ограничением ожидания: curl --max-time 180 --fail-with-body -sS http://127.0.0.1:8080/completion -H 'Content-Type: application/json' -d '{"prompt":"Ответь коротко: какого цвета небо при ясной погоде?","n_predict":24,"stream":false}'. При исправной работе ожидается JSON с полем content, а следующий GET /props должен показать "is_sleeping": false. Сверьте смысл ответа сами: пример не гарантирует точного слова и не является результатом генерации Modelium. Первое обращение после сна может потребовать повторной загрузки модели, поэтому измеряйте реальную задержку на своём файле. s1 s2

Если curl истёк по времени или ответ не появился, не повторяйте запрос бездумно в важном сервисе. Сохраните ревизию llama.cpp, флаг, время ожидания, лог сервера и состояние /props, затем сравните симптомы с отчётом upstream. Автор issue #29689 описал гонку при запросе на самой границе сна с таймером 1 секунда; это свидетельство автора, а не воспроизведённый редакцией дефект на закреплённой ревизии. Увеличение таймера не доказывает устранения гонки. Если повторяемость или время первого ответа неприемлемы, остановите тестовый сервер и перезапустите его без флага либо с --sleep-idle-seconds -1 (режим сна по умолчанию выключен). s1 s3 s4

Следующий шаг: подготовьте свой GGUF и рабочий сервер, затем зафиксируйте наблюдаемые is_sleeping, время первого ответа и ошибку тайм-аута, если она произошла. В этом материале нет обещания гарантированной экономии памяти или непрерывной доступности. s1 s4

Источники

  1. llama.cpp — server README: Sleeping on Idle и endpoints — revision a0e6dc7384edb8f5d927155e1d26c10b4a310e6d; Строки 193–194, 245, 408–419, 917–927, 2292–2304: --host/port, сборка, сон, is_sleeping и исключения для GET.. Получено 15.10.2026.
  2. llama.cpp — исходник состояния сервера — revision a0e6dc7384edb8f5d927155e1d26c10b4a310e6d; Строки 1063–1078 и 5331–5339: destroy/load_model при переходе, /props во сне.. Получено 15.10.2026.
  3. llama.cpp — аргумент sleep-idle-seconds в common/arg.cpp — revision a0e6dc7384edb8f5d927155e1d26c10b4a310e6d; Строки 3829–3838: дефолт -1, допустимые значения; 0 и меньше -1 отвергаются.. Получено 15.10.2026.
  4. llama.cpp issue #29689 — отчёт пользователя о гонке при засыпании — Создан 30 сентября 2026, открыт при чтении; автор тестировал Windows с таймером 1 с. Не является собственным тестом Modelium или подтверждением для всех версий.. Получено 15.10.2026.