Разработчики llama.cpp добавили поддержку router mode — режима, с помощью которого можно динамически загружать, выгружать и переключать несколько моделей без перезагрузки сервера. В блоге Hugging Face отмечают, что чаще всего пользователи просили реализовать именно эту функцию.

llama.cpp — легковесный HTTP-сервер для локального запуска языковых моделей, совместимый с эндпоинтами OpenAI.

Чтобы воспользоваться функцией, надо запустить сервер в режим роутера без явного указания нужной модели:

llama-server

Если до этого пользователь скачивал модели с помощью llama-server -hf user/model, то они автоматически станут доступны из кэша (LLAMA_CACHE или ~/.cache/llama.cpp). При этом, если добавить новую модель в кэш, то надо обязательно перезапустить роутер, чтобы она стала доступна.

Вместо кэша можно указать путь к локальному каталогу GGUF-моделей:

llama-server --models-dir ./my-models

После этого можно отправлять запросы к конкретной модели, указывая её название, загружать модели и выгружать, чтобы освободить видеопамять. Всё это без перезапуска сервера.

# выбор конкретной модели 

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ggml-org/gemma-3-4b-it-GGUF:Q4_K_M",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
# загрузка модели вручную 

curl -X POST http://localhost:8080/models/load \
  -H "Content-Type: application/json" \
  -d '{"model": "my-model.gguf"}'
# выгрузка модели 

curl -X POST http://localhost:8080/models/unload \
  -H "Content-Type: application/json" \
  -d '{"model": "my-model.gguf"}'
# список всех доступных моделей

curl http://localhost:8080/models

В веб-интерфейсе также доступа опция переключения моделей. Для этого достаточно выбрать нейросеть из выпадающего меню, и она автоматически загрузится.