Router Mode в llama.cpp: запуск нескольких моделей LLM без перезагрузки | AiManual
AiManual Logo Ai / Manual.
07 Янв 2026 Инструмент

Router Mode в llama.cpp: управление несколькими моделями без перезагрузки сервера

Обзор Router Mode в llama.cpp для динамической загрузки моделей GGUF. Примеры, сравнение с альтернативами и настройка сервера.

Перестаньте перезагружать сервер. Включайте модели на лету

Запускаете одну модель в llama.cpp? Отлично. Пытаетесь переключиться на другую? Приготовьтесь к ритуалу: остановить сервер, убить процесс, подождать, пока память очистится, загрузить новую модель, снова запустить сервер. Знакомо? Разработчики llama.cpp наконец-то услышали ваши стоны и выпустили Router Mode. Это не просто фича - это смена парадигмы.

💡
Router Mode появился в конце 2024 года и с тех пор активно развивается. Если вы до сих пор перезагружаете сервер для смены модели - вы тратите время впустую.

Что умеет Router Mode? Всё, что вы хотели, но боялись спросить

Представьте себе диспетчерскую. Вместо одного поезда на одном пути у вас есть депо с локомотивами разных моделей. Диспетчер (роутер) смотрит на запрос и говорит: "Этому пассажиру нужен экспресс, а этому - грузовой состав". Именно так работает Router Mode.

Что делаетКак это выглядит на практике
Динамическая загрузка моделейОтправляете запрос с именем модели - сервер загружает её, если ещё не загружена
LRU вытеснениеЕсли память заканчивается - роутер выгружает наименее используемые модели
OpenAI-совместимый APIРаботает с любыми клиентами, которые умеют в OpenAI API (а их большинство)
Мультипроцессная архитектураКаждая модель живёт в отдельном процессе. Упала одна - остальные работают

Звучит здорово? Это потому что так и есть. Но есть нюансы, о которых стоит знать до того, как вы броситесь переписывать все свои скрипты.

Запускаем роутер: от теории к практике за 5 минут

1Собираем или качаем

Если у вас уже стоит llama.cpp - обновите репозиторий и пересоберите. Если нет - скачайте свежий билд с поддержкой Router Mode. Не пытайтесь использовать версии старше октября 2024 - там этого просто нет.

Проверьте флаги компиляции. Убедитесь, что собрали с поддержкой сервера. Если собираете с нуля - не забудьте про -DLLAMA_BUILD_SERVER=ON.

2Готовим модели

Router Mode работает только с GGUF. Не пытайтесь запихнуть туда оригинальные веса PyTorch или Safetensors - не выйдет. Конвертируйте всё в GGUF или качайте готовые. Положите модели в удобную директорию. Например, ~/models/. Запомните путь.

3Запускаем сервер

Вот самая важная команда. Запускаете сервер в режиме роутера с указанием пути к моделям:

./server --host 0.0.0.0 --port 8080 --router --model-path ~/models/ --n-gpu-layers 99

Что здесь важно? Флаг --router включает собственно режим роутера. --model-path указывает, где искать модели. Остальные флаги - как в обычном сервере. Хотите ограничить память? Добавьте --parallel 4 --ctx-size 4096. Настроили? Сервер запущен. Теперь самое интересное.

Как отправить запрос и не сломать всё

OpenAI-совместимый API - это здорово. Но как указать, какую модель использовать? Всё просто - через поле "model" в запросе. Только имя модели должно совпадать с именем файла (без расширения .gguf).

Допустим, у вас в папке ~/models/ лежат файлы llama-3.2-3b.Q4_K_M.gguf и mistral-7b-v0.3.Q5_K_M.gguf. Хотите запросить что-то у Mistral? Отправляете POST на /v1/completions с таким телом:

{
"model": "mistral-7b-v0.3.Q5_K_M",
"prompt": "Объясни, как работает Router Mode в llama.cpp",
"max_tokens": 500
}

Сервер видит, что модели mistral-7b-v0.3.Q5_K_M нет в памяти. Загружает её. Обрабатывает запрос. Возвращает ответ. Всё прозрачно. Хотите переключиться на Llama? Просто поменяйте поле "model" на "llama-3.2-3b.Q4_K_M". Никаких перезагрузок. Никаких танцев с бубном.

Имена моделей чувствительны к регистру! Mistral-7B-v0.3.Q5_K_M и mistral-7b-v0.3.q5_k_m - это разные модели для роутера. Используйте точное имя файла.

А что с альтернативами? Есть же LM Studio и Ollama

Сравнивать Router Mode с другими инструментами - это как сравнивать швейцарский нож с кухонным комбайном. У каждого свои задачи.

ИнструментПлюсыМинусыКому подходит
llama.cpp Router ModeМинимальные требования, полный контроль, мультипроцессность, LRU-кешТолько GGUF, нет GUI, нужно знать командную строкуРазработчикам, энтузиастам, тем, кто хочет максимальной гибкости
LM StudioКрасивый интерфейс, простой запуск, встроенный чатТяжелее, меньше контроля, проприетарные элементыТем, кто хочет работать с моделями без кодинга
OllamaПростая установка, свой формат моделей, активное сообществоСвой API (не полностью OpenAI-совместимый), меньше моделейНачинающим, тем, кто ценит простоту

Router Mode в llama.cpp - это инструмент для тех, кому нужен контроль. Нужно запустить сервер на старой машине с 8 ГБ ОЗУ и переключаться между тремя моделями? Llama.cpp справится. Хотите интегрировать его в свою систему через OpenAI API? Без проблем. Нужно, чтобы сервер работал неделями без перезагрузки? Router Mode именно для этого и создан.

Под капотом: как роутер не превращает вашу память в швейцарский сыр

Мультипроцессная архитектура - вот что отличает Router Mode от простой загрузки моделей в одном процессе. Каждая модель живёт в отдельном процессе. Зачем? Представьте, что одна модель "упала" с ошибкой. В обычном сервере это означало бы крах всего приложения. В Router Mode упадёт только один процесс. Остальные модели продолжат работать. Главный процесс (роутер) перезапустит упавший воркер.

LRU-кеширование (Least Recently Used) - вторая важная фича. У вас 32 ГБ ОЗУ, а модели по 8-10 ГБ каждая. Загрузите четыре - память закончится. Router Mode следит за использованием: если нужно загрузить новую модель, а память заполнена, он выгружает ту, к которой дольше всего не обращались. Не самую большую. Не самую старую. Ту, которую забыли. Это умно.

💡
LRU работает на уровне моделей, а не на уровне запросов. Если к модели не было запросов 10 минут - её могут выгрузить. Следующий запрос загрузит её снова (будет небольшая задержка).

Кому действительно нужен Router Mode? (Спойлер: не всем)

Если вы запускаете одну модель и меняете её раз в неделю - Router Mode вам, скорее всего, не нужен. Простой сервер справится. Но есть сценарии, где без роутера просто не обойтись.

  • Мультитенантные приложения: Вы разрабатываете SaaS, где разные пользователи хотят разные модели. Один - кодогенерацию, другой - творческое письмо, третий - анализ данных. Router Mode позволяет обслуживать всех без перезагрузок.
  • Тестирование и сравнение моделей: Нужно прогнать один и тот же промпт через пять разных моделей и сравнить результаты? Загружайте, тестируйте, выгружайте. Вручную это заняло бы часы.
  • Ресурсо-ограниченные среды: Мало памяти, но нужно много моделей? LRU-кеширование позволяет хранить в памяти только то, что используется прямо сейчас. Остальное - на диске.
  • Интеграции с агентскими фреймворками: Современные AI-агенты часто переключаются между специализированными моделями. NVIDIA NeMo Agent Toolkit или LangChain могут отправлять запросы к разным моделям в зависимости от задачи. Router Mode делает это прозрачным.

А вот если вам нужна простота и красивый интерфейс - посмотрите на LM Studio. Если хотите что-то совсем простое - Ollama. Router Mode - для тех, кто готов копаться в настройках ради контроля и гибкости.

Чего не хватает? (Разработчики, если читаете - вот список пожеланий)

Router Mode - отличный шаг вперёд. Но идеальных инструментов не бывает. Вот что хотелось бы видеть в будущем.

  • Приоритизация моделей: Сейчас LRU вытесняет наименее используемые. Но что если мне нужно, чтобы одна модель всегда оставалась в памяти, даже если к ней не обращались час? Нет такой настройки.
  • Предзагрузка: Хочу указать, какие модели загрузить при старте сервера. Сейчас всё загружается по требованию, что создаёт задержку при первом запросе.
  • Мониторинг: Как узнать, какие модели сейчас в памяти, сколько памяти каждая занимает, сколько запросов обработала? Придётся писать свои скрипты.
  • Более гибкое кеширование: LRU - хорошо, но иногда нужны другие стратегии. Например, вытеснение самых больших моделей или моделей, которые дольше всего грузились.

Несмотря на это, Router Mode уже сейчас - самый мощный способ управлять несколькими моделями в llama.cpp. Если вы до сих пор перезагружаете сервер - остановитесь. Попробуйте роутер. Однажды настроив, вы забудете о проблемах с переключением моделей. Серьёзно.

Router Mode активно развивается. Следите за обновлениями в репозитории llama.cpp. Новые фичи появляются почти каждый месяц.

А если вы хотите пойти ещё дальше и распределить вычисления между несколькими машинами, посмотрите на llama.cpp RPC-server. Вместе с Router Mode это даёт невероятную гибкость. Но это уже тема для отдельной статьи.