Редактирование:
RAMBA AI Router
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
{{DISPLAYTITLE:RAMBA AI Router}} = RAMBA AI Router = '''RAMBA AI Router''' — локальная система интеллектуальной маршрутизации запросов между несколькими языковыми моделями проекта [[RAMBA AI]]. Router анализирует входящий запрос пользователя, определяет его тип и автоматически выбирает наиболее подходящую локальную LLM. Основная задача проекта — получить максимальное качество ответов при ограниченных вычислительных ресурсах, не используя одну большую модель для всех запросов. На текущем этапе система использует три специализированных «мозга»: {| class="wikitable" ! Роль ! Модель ! Назначение |- | '''FAST''' | <code>gemma3:4b</code> | Простые вопросы, работа с текстом, короткие ответы |- | '''INFRA''' | <code>qwen3:8b</code> | Linux, Proxmox, сети, серверы, виртуализация и инфраструктура |- | '''SMART''' | <code>qwen3.5:9b</code> | Логика, математика, анализ и сложные задачи |} == Общая архитектура == <pre> Пользователь │ ▼ ┌─────────────────┐ │ RAMBA AI Router │ └────────┬────────┘ │ анализ и классификация │ ┌──────────────┼──────────────┐ │ │ │ ▼ ▼ ▼ FAST INFRA SMART Gemma 3 4B Qwen3 8B Qwen3.5 9B │ │ │ └──────────────┼──────────────┘ │ ▼ Ollama │ ▼ NVIDIA GTX 1080 </pre> Router работает как локальный API-сервис на базе '''FastAPI'''. В качестве backend для запуска языковых моделей используется '''Ollama'''. == Сервер == RAMBA AI Router работает внутри виртуальной машины: <pre> VMID: 501 Hostname: ramba-ai </pre> Основной каталог проекта: <pre> /home/artem/ramba-router/ </pre> Основные файлы стабильной версии: <pre> router.py router-v3-perfect.py test-router-v3.py test-router-v3-perfect.py </pre> Контрольная резервная копия стабильной версии: <pre> /home/artem/ramba-router-v3-perfect.tar.gz </pre> == Аппаратная платформа == Для выполнения локальных моделей используется: * '''GPU:''' NVIDIA GeForce GTX 1080 * '''VRAM:''' 8 GB * '''Inference backend:''' Ollama * '''API Router:''' FastAPI / Uvicorn Из-за ограничения в 8 GB VRAM Router не пытается постоянно держать все основные модели в памяти видеокарты. Вместо этого необходимая модель загружается по требованию. == Выбор моделей == До разработки Router было проведено тестирование нескольких локальных моделей. В ходе тестов оценивались: * русский язык; * логическое мышление; * задачи по Proxmox/Linux; * программирование; * понимание AI/VRAM; * скорость генерации; * стабильность ответов. В результате для Router были выбраны три основные модели. === FAST — Gemma 3 4B === <pre> gemma3:4b </pre> Используется для относительно простых запросов. Примеры: * исправление текста; * переформулирование; * короткие объяснения; * простые вопросы; * задачи, не требующие глубокого анализа. Преимущество модели — высокая скорость. В тестах скорость генерации составляла примерно: <pre> ~59 tok/s </pre> === INFRA — Qwen3 8B === <pre> qwen3:8b </pre> Основная техническая модель RAMBA AI. Используется для вопросов, связанных с: * Proxmox VE; * Linux; * VFIO; * IOMMU; * PCI Passthrough; * systemd; * Docker; * NFS; * ZFS; * сетями; * виртуальными машинами; * серверным администрированием. Типичная скорость: <pre> ~35 tok/s </pre> === SMART — Qwen3.5 9B === <pre> qwen3.5:9b </pre> Наиболее интеллектуально сильная из трёх основных моделей. Используется для: * математических задач; * логики; * анализа; * сложных технических вопросов; * многоэтапных рассуждений; * задач с процентами и зависимостями. Типичная скорость: <pre> ~29-30 tok/s </pre> == Router v1 == Первая версия RAMBA AI Router была proof-of-concept. Маршрутизация выполнялась преимущественно по ключевым словам. Упрощённо: <pre> Proxmox / VFIO / Linux │ ▼ Qwen3 8B сложная задача │ ▼ Qwen3.5 9B остальные запросы │ ▼ Gemma 3 4B </pre> Версия доказала работоспособность основной концепции: '''одна точка входа → несколько специализированных локальных моделей.''' == Router v2 == Во второй версии маршрутизатор стал значительно сложнее. Были добавлены: * score-based routing; * определение загруженной Ollama-модели; * session affinity; * hysteresis; * статистика; * журналирование; * контроль переключения моделей. Router начал использовать Ollama API: <pre> GET /api/ps </pre> для определения модели, которая в данный момент находится в памяти. В API Router появились служебные endpoint'ы: <pre> /chat /health /stats </pre> === Проблема Router v2 === Во время тестирования была обнаружена важная ошибка классификации. Запрос: <pre> Есть три сервера A, B и C. A быстрее B на 20%. B быстрее C на 25%. Если C выполняет задачу за 100 секунд, сколько времени потребуется A? </pre> является математической задачей. Однако Router воспринимал слово: <pre> сервер </pre> как инфраструктурный признак и отправлял запрос в: <pre> INFRA → Qwen3 8B </pre> Это показало недостаток простой маршрутизации по ключевым словам. == Router v3 == В Router v3 алгоритм классификации был переработан. Основная идея — разные слова должны иметь '''разный вес'''. === Слабые инфраструктурные признаки === Например: <pre> сервер Linux Ubuntu VM NVIDIA сеть </pre> Сами по себе такие слова больше не должны гарантировать выбор INFRA. === Сильные инфраструктурные признаки === Больший вес получили специфические технические термины: <pre> Proxmox vfio-pci IOMMU lspci hostpci systemctl journalctl initramfs ZFS NFS </pre> === SMART-признаки === Для определения аналитических задач используются признаки: <pre> сколько проценты быстрее медленнее рассчитай объясни расчёт вероятность логическая задача </pre> Таким образом Router вычисляет несколько независимых оценок: <pre> FAST INFRA SMART </pre> и выбирает роль с максимальным результатом. == Пример работы Router v3 == Для математической задачи с тремя серверами Router получил: <pre> FAST = 1 INFRA = 1 SMART = 16 </pre> Результат: <pre> role: smart model: qwen3.5:9b </pre> Модель правильно решила задачу: <pre> C = 100 секунд B быстрее C на 25%: 100 / 1.25 = 80 секунд A быстрее B на 20%: 80 / 1.2 = 66.67 секунды </pre> Ответ: <pre> A ≈ 66.67 секунды </pre> == Пример инфраструктурного запроса == Запрос: <pre> В Proxmox lspci показывает nouveau вместо vfio-pci. Что проверить? </pre> Router определил: <pre> FAST = 1 INFRA = 23 SMART = 0 </pre> и выбрал: <pre> role: infra model: qwen3:8b </pre> То есть специализированный инфраструктурный запрос был направлен технической модели. == Пример FAST-запроса == Запрос: <pre> Исправь текст: я одел куртку и вышел на улицу </pre> Router получил: <pre> FAST = 6 INFRA = 0 SMART = 0 </pre> и правильно выбрал: <pre> role: fast model: gemma3:4b </pre> Однако сама модель ответила: <pre> Я одел куртку и вышел на улицу. </pre> вместо: <pre> Я надел куртку и вышел на улицу. </pre> Это продемонстрировало важное различие: '''правильная маршрутизация не гарантирует правильность ответа модели.''' В дальнейшем для решения подобных проблем планируется отдельный слой проверки ответов — '''Verifier'''. == Переключение моделей == Router получает информацию о моделях, загруженных Ollama. Пример ответа <code>/health</code>: <pre> { "router": "ok", "version": "3", "ollama_loaded_models": [ "gemma3:4b" ], "sessions": 3 } </pre> При запросе другой категории Router может переключить модель. Например: <pre> Gemma 3 4B │ ▼ Qwen3 8B │ ▼ Qwen3.5 9B </pre> В API-ответе отображаются диагностические данные: <pre> model role loaded_before switch scores route_reason elapsed eval_count eval_duration load_duration tok_s </pre> Это позволяет анализировать не только результат маршрутизации, но и производительность системы. == Стоимость переключения == Загрузка другой модели в VRAM занимает заметное время. На используемой системе переключение обычно добавляет несколько секунд ожидания. Поэтому Router старается избегать ненужного переключения модели. Для этого используются механизмы: * session affinity; * hysteresis; * определение уже загруженной модели. В перспективе Router должен учитывать не только качество предполагаемого ответа, но и '''стоимость переключения модели'''. == Контрольный тест Router v3 == Для проверки Router v3 был создан отдельный тест: <pre> test-router-v3.py </pre> Он содержит '''30 запросов''': {| class="wikitable" ! Категория ! Количество |- | FAST | 10 |- | INFRA | 10 |- | SMART | 10 |- ! Всего ! 30 |} Для каждого запроса заранее задаётся ожидаемая категория. Тест сравнивает: <pre> EXPECTED </pre> с: <pre> ACTUAL </pre> === Итог тестирования === 22 августа 2026 года Router v3 успешно прошёл полный контрольный тест. <pre> RESULT: 30/30 = 100.0% PERFECT ROUTING — 30/30 </pre> {| class="wikitable" ! Категория ! Результат ! Модель |- | FAST | 10 / 10 | Gemma 3 4B |- | INFRA | 10 / 10 | Qwen3 8B |- | SMART | 10 / 10 | Qwen3.5 9B |- ! Итого ! '''30 / 30 (100%)''' ! |} Таким образом Router v3 стал первой зафиксированной стабильной версией RAMBA AI Router. == Фиксация стабильной версии == После успешного теста были сохранены контрольные копии: <pre> router-v3-perfect.py test-router-v3-perfect.py </pre> и создан архив: <pre> /home/artem/ramba-router-v3-perfect.tar.gz </pre> Размер архива на момент создания: <pre> 6.4 KB </pre> Router v3 после этого считается '''стабильной контрольной точкой проекта'''. == Ограничения Router v3 == Несмотря на успешный результат 30/30, версия v3 имеет ряд архитектурных ограничений. Главное из них — недостаточное понимание контекста разговора. Например: <pre> Пользователь: В Proxmox vfio-pci не захватывает GTX 1080. Router: INFRA </pre> Следующее сообщение: <pre> А как это проверить? </pre> само по себе почти не содержит признаков INFRA. Человек понимает контекст предыдущего сообщения, однако Router v3 в основном анализирует текущий запрос. Именно эта проблема является основной целью следующей версии. = Router v4 = Следующий этап разработки — '''RAMBA AI Router v4'''. Главное изменение: '''контекстная маршрутизация.''' Router должен учитывать не только последнее сообщение, но и историю текущего диалога. Планируемая структура сессии: <pre> session │ ├── session_id ├── current_role ├── previous_model └── messages │ ├── user ├── assistant ├── user ├── assistant └── ... </pre> Например: <pre> Пользователь: В Proxmox vfio-pci не захватывает GTX 1080. → INFRA / Qwen3 8B Пользователь: А как проверить? → анализ контекста → сохранение роли INFRA → Qwen3 8B </pre> == План Router v4 == Первый этап: # хранение истории диалога; # передача контекста модели; # ограничение размера истории; # sticky routing; # корректная обработка коротких follow-up сообщений. Второй этап: # отдельный system prompt для FAST; # отдельный system prompt для INFRA; # отдельный system prompt для SMART. Третий этап: # оценка уверенности Router; # автоматическая эскалация FAST → SMART; # обработка неоднозначных запросов; # дополнительные контрольные тесты. == Дальнейшее развитие == Перспективная архитектура RAMBA AI: <pre> Пользователь │ ▼ RAMBA AI Router │ ┌─────────────┼─────────────┐ ▼ ▼ ▼ FAST INFRA SMART │ │ │ └─────────────┼─────────────┘ │ ▼ Verifier │ ▼ RAG │ ▼ Финальный ответ </pre> Планируется развитие следующих компонентов: * '''Context Memory''' — память текущего диалога; * '''Verifier''' — проверка качества и корректности ответа; * '''Escalation''' — передача сложного запроса более сильной модели; * '''RAG''' — подключение собственной базы знаний RAMBA; * '''Infrastructure Knowledge''' — информация о серверах и сервисах RAMBA; * '''Tool Calling''' — выполнение разрешённых действий через инструменты; * '''Metrics''' — статистика качества, скорости и маршрутизации. == Статус проекта == {| class="wikitable" ! Компонент ! Статус |- | Ollama | '''Готово''' |- | GPU inference | '''Готово''' |- | FAST model | '''Готово''' |- | INFRA model | '''Готово''' |- | SMART model | '''Готово''' |- | Router API | '''Готово''' |- | Score-based routing | '''Готово''' |- | Ollama model detection | '''Готово''' |- | Session affinity | '''Готово''' |- | Router v3 test | '''30/30''' |- | Context-aware routing | В разработке (v4) |- | Verifier | Планируется |- | RAG | Планируется |} == Итог == '''RAMBA AI Router v3''' подтвердил работоспособность архитектуры динамического выбора локальных языковых моделей. Контрольный тест показал: <pre> 30 / 30 100% PERFECT ROUTING </pre> Вместо запуска одной универсальной модели RAMBA AI использует несколько специализированных моделей и выбирает подходящую в зависимости от характера задачи. Следующий этап проекта — '''Router v4''', который добавит память диалога и контекстную маршрутизацию. [[Категория:RAMBA]] [[Категория:RAMBA AI]] [[Категория:Искусственный интеллект]] [[Категория:Серверы]]
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «wiki.ramba-art.ru» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
wiki.ramba-art.ru:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице
MediaWiki Appliance
- Powered by
TurnKey Linux