💡 Главная идея: Не используйте огромную модель для каждой задачи. Вместо этого — направляйте простые запросы на лёгкие локальные модели, а сложные — на мощные (и дорогие) «тяжеловесы». Это и даёт экономию до 80%.
1️⃣ Почему 80% — это реально
Представьте: вы ставите 100 моделей — от «полнотекстового» анализа «есть ли жизнь на Марсе» до узкоспециализированной модели, которая по картинке определяет квадратики и круги для станка[citation:2]. Если каждую задачу отправлять на самую умную модель, сервер захлебнётся. Если же настроить умный роутер, то:
Система анализирует запрос: если он простой (например, «привет» или «сколько будет 2+2»), маршрутизатор отправляет его на маленькую локальную модель (например, llama3.2:3b). Если запрос сложный — подключает GPT-4 или Claude Opus. В результате вы платите только за действительно сложные задачи[citation:1][citation:2].
📌 Реальный пример: Один из инструментов (llm-router) позволяет экономить до 80% при работе с API, автоматически выбирая самую дешёвую подходящую модель[citation:1].
2️⃣ Три способа реализовать экономию
🔹 Вариант 1: Готовый роутер (open-llm-router)
Это легковесный прокси-сервер, который работает как замена LiteLLM и легко интегрируется с Open WebUI[citation:1][citation:6].
- Что делает: Принимает запросы через API, совместимый с OpenAI, и маршрутизирует их к нужной модели (Ollama, OpenAI, Anthropic, и другие)[citation:1].
- Как настраивается: Достаточно описать модели в файле
config.ymlв формате LiteLLM — и всё работает. - Фишка: Поддерживает авто-обнаружение локальных моделей из Ollama и LM Studio (
./manage.sh scan-models)[citation:1][citation:6].
🔹 Вариант 2: Умный роутер по типу контента (modelsrouter)
Этот подход идеально подходит для вашего сценария: 100 моделей + разные типы задач (текст, картинки, чертежи)[citation:2].
- Суть: Роутер автоматически определяет, есть ли в запросе изображение. Если есть — направляет к мультимодальной модели (например, Gemma 3 Vision), если нет — к текстовой[citation:2].
- Для вашей задачи: Модель для «квадратиков и кругов для станка» будет использоваться только тогда, когда пользователь прикрепляет картинку. Остальные запросы (вроде «есть ли жизнь на Марсе») пойдут на текстовые модели[citation:2].
🎯 Идеальное решение для вас: Один эндпоинт (http://router:8000/v1) в Open WebUI, а внутри — автоматический выбор между текстовой и визуальной моделью. Клиент (пользователь) даже не замечает переключения[citation:2].
🔹 Вариант 3: Кастомная Pipe-функция в Open WebUI
Если вам нужна максимальная гибкость — напишите свою логику распределения прямо внутри Open WebUI. Это называется Pipe Function (или «манифолд»)[citation:3][citation:8].
- Вы создаёте функцию, которая в списке моделей выглядит как одна модель, но внутри сама решает, к кому обратиться[citation:3].
- Например: если в запросе есть слова
«Ansible»,«playbook»→ отправить наqwen2.5-coder. Если запрос про «жизнь на Марсе» → наllama3:70b[citation:3]. - Поддерживает автоматический выбор инструментов (поиск, генерация картинок) через Auto Tool Selector[citation:4][citation:14].
3️⃣ Как не убить сервер при 100+ моделях
Когда вы ставите 100 разных моделей, система может захлебнуться даже без учёта маршрутизации. Вот что спасает:
⚙️ Оптимизация Open WebUI
- Кеширование списка моделей: При 100+ моделях страница может грузиться 10–15 секунд. Включите
ENABLE_BASE_MODELS_CACHE=True— и список будет загружаться мгновенно[citation:5]. - PostgreSQL вместо SQLite: Для многих моделей и пользователей SQLite — это «бутылочное горлышко». PostgreSQL обязателен[citation:5][citation:15].
- Вынос задач (Task Model): Для фоновых задач (генерация заголовков, тегов) используйте отдельную лёгкую модель, например
qwen3:1b. Это освобождает ресурсы для основных запросов[citation:5]. - Внешний движок для извлечения контента: Если вы загружаете PDF или картинки, стандартный парсер (pypdf) может «съедать» память. Используйте Apache Tika или Docling как отдельный сервис[citation:5].
💡 Важно: Если вы используете ChromaDB для RAG (поиска по документам) и у вас больше одного воркера (UVICORN_WORKERS > 1) — возможны падения. Переходите на Milvus, Qdrant или PGVector[citation:5].
4️⃣ Ваш план действий: от А до Я
Итак, у вас уже есть 100 моделей, включая «полнотекстовую» и «визуальную для станка». Вот пошаговый план:
-
Установите роутер: Самый простой вариант —
open-llm-router. Он поднимается через Docker и требует лишь файл конфига[citation:1][citation:6].docker compose up -d ./manage.sh scan-models all -u # Авто-обнаружение всех локальных моделей -
Настройте маршрутизацию по типу контента: Если у вас есть модели для изображений — используйте
modelsrouter, который сам определяет, есть ли картинка в запросе[citation:2]. -
Подключите к Open WebUI: В настройках Connections укажите Base URL роутера (
http://localhost:8086/v1)[citation:1][citation:2]. -
Включите кеширование и оптимизацию: Добавьте переменные
ENABLE_BASE_MODELS_CACHE=TrueиDATABASE_URL=postgresql://...в ваш .env файл[citation:5]. - Настройте Auto Tool Selector (опционально): Если хотите, чтобы система сама решала, подключать ли поиск, генерацию картинок или код-интерпретатор — установите готовую функцию Auto Tool Selector[citation:4][citation:9].
5️⃣ А что насчёт «есть ли жизнь на Марсе» и «квадратики для станка»?
Вот как это будет работать в собранной системе:
-
Запрос «есть ли жизнь на Марсе» → Роутер видит, что это текстовый вопрос без картинок. Отправляет на текстовую модель (например,
llama3:70bилиGPT-4), если вопрос сложный. Или наllama3.2:3b, если вопрос простой[citation:2]. -
Запрос с картинкой «квадратики и круги для станка» → Роутер обнаруживает изображение и направляет запрос к мультимодальной модели, обученной на технических чертежах (
Gemma 3 Visionили аналогичной)[citation:2][citation:12]. - Все 100 моделей не грузятся одновременно, а ждут своего часа. Ресурсы расходуются только на те модели, которые действительно нужны в данный момент.
✅ Итог: Вы экономите до 80% вычислительных ресурсов, потому что большая часть запросов обрабатывается лёгкими локальными моделями, а сложные и визуальные задачи — только по необходимости. Всё это работает автоматически и прозрачно для пользователя.
🛠️ Собрано из документации Open WebUI, open-llm-router, modelsrouter и реальных кейсов оптимизации.
Комментарии
Пока нет комментариев. Будьте первым!