Встречайте LLMRouter: интеллектуальная система маршрутизации для оптимизации вывода LLM

LLMRouter — это библиотека маршрутизации с открытым исходным кодом от U Lab при Университете Иллинойса в Урбане-Шампейне. Она рассматривает выбор модели как проблему первого класса для системы.

LLMRouter располагается между приложениями и пулом LLM и выбирает модель для каждого запроса на основе сложности задачи, целевых показателей качества и стоимости. Всё это представлено через унифицированный Python API и CLI. Проект включает более 16 моделей маршрутизации, конвейер генерации данных по более чем 11 бенчмаркам и систему плагинов для пользовательских маршрутизаторов.

Семейства маршрутизаторов и поддерживаемые модели

LLMRouter организует алгоритмы маршрутизации в четыре семейства:
* Single-Round Routers (однораундовые маршрутизаторы);
* Multi-Round Routers (многораундовые маршрутизаторы);
* Personalized Routers (персонализированные маршрутизаторы);
* Agentic Routers (агентские маршрутизаторы).

К Single-Round Routers относятся knnrouter, svmrouter, mlprouter, mfrouter, elorouter, routerdc, automix, hybridllm, graphrouter, causallmrouter и базовые модели smallestllm и largestllm. Эти модели реализуют такие стратегии, как k ближайших соседей, машины опорных векторов, многослойные перцептроны, матричная факторизация, рейтинг Эло, двойное контрастное обучение, автоматическое смешивание моделей и маршрутизация на основе графов.

Multi-round routing представлен через router_r1 — предварительно обученный экземпляр Router R1, интегрированный в LLMRouter.

Конвейер генерации данных для наборов данных маршрутизации

LLMRouter поставляется с полным конвейером генерации данных, который превращает стандартные тесты и выходные данные LLM в наборы данных для маршрутизации. Конвейер поддерживает 11 тестов: Natural QA, Trivia QA, MMLU, GPQA, MBPP, HumanEval, GSM8K, CommonsenseQA, MATH, OpenBookQA и ARC Challenge.

Конвейер работает в три явных этапа:
1. data_generation.py извлекает запросы и метки истинности и создаёт обучающие и тестовые JSONL-сплиты.
2. generatellmembeddings.py создаёт вложения для кандидатов LLM из метаданных.
3. apicallingevaluation.py вызывает API LLM, оценивает ответы и объединяет оценки со вложениями в записи маршрутизации.

Конвейер выводит файлы запросов, JSON с вложениями LLM, тензоры вложений запросов и файлы JSONL с данными маршрутизации.

Интерфейс чата и система плагинов

Для интерактивного использования llmrouter chat запускает интерфейс чата на основе Gradio для любого маршрутизатора и конфигурации. Сервер может привязываться к пользовательскому хосту и порту и может предоставлять общедоступную ссылку для общего доступа.

LLMRouter также предоставляет систему плагинов для пользовательских маршрутизаторов. Новые маршрутизаторы находятся в каталоге customrouters, подкласс MetaRouter и реализуют routesingle и route_batch.

Ключевые выводы

* Маршрутизация как абстракция первого класса: LLMRouter — это слой маршрутизации с открытым исходным кодом от UIUC, который располагается между приложениями и гетерогенными пулами LLM и централизует выбор модели как задачи прогнозирования с учётом затрат и качества, а не специальных скриптов.
* Четыре семейства маршрутизаторов, охватывающих более 16 алгоритмов: библиотека стандартизирует более 16 маршрутизаторов в четыре семейства: одно-раундовые, многораундовые, персонализированные и агентские, включая knnrouter, graphrouter, routerdc, router_r1 и gmtrouter, все они представлены через унифицированную конфигурацию и CLI.
* Многораундовая RL-маршрутизация через Router R1: router_r1 интегрирует фреймворк Router R1, где LLM-маршрутизатор чередует внутренние шаги «подумать» с внешними вызовами «маршрутизация» и обучается с помощью вознаграждения на основе правил, которое сочетает формат, результат и стоимость для оптимизации компромиссов между производительностью и затратами.
* Персонализация на основе графов с GMTRouter: gmtrouter моделирует пользователей, запросы, ответы и LLM как узлы в гетерогенном графе и использует передачу сообщений для изучения предпочтений пользователей в отношении маршрутизации на основе нескольких коротких историй, достигая примерно 21% прироста точности и существенного улучшения AUC по сравнению с сильными базовыми показателями.
* Сквозной конвейер и расширяемость: LLMRouter предоставляет конвейер обработки данных, управляемый тестами, CLI для обучения и вывода, интерфейс чата Gradio, централизованную обработку ключей API и систему плагинов на основе MetaRouter, которая позволяет командам регистрировать пользовательские маршрутизаторы, повторно используя те же наборы данных и инфраструктуру для маршрутизации.

Проверьте репозиторий на GitHub и технические подробности. Подписывайтесь на нас в Twitter и присоединяйтесь к нашему ML SubReddit с более чем 100 тысячами участников и подписывайтесь на нашу рассылку. А если вы в Telegram, присоединяйтесь к нам и там!

1. Какие основные функции выполняет LLMRouter и как он помогает оптимизировать вывод LLM?

LLMRouter выполняет функцию интеллектуальной системы маршрутизации, которая выбирает модель для каждого запроса на основе сложности задачи, целевых показателей качества и стоимости. Это позволяет оптимизировать вывод LLM, обеспечивая более эффективное использование моделей и улучшение качества результатов.

2. Какие семейства маршрутизаторов включены в LLMRouter и какие стратегии они реализуют?

В LLMRouter включены четыре семейства маршрутизаторов: Single-Round Routers, Multi-Round Routers, Personalized Routers и Agentic Routers. Они реализуют различные стратегии, такие как k ближайших соседей, машины опорных векторов, многослойные перцептроны, матричная факторизация, рейтинг Эло, двойное контрастное обучение, автоматическое смешивание моделей и маршрутизация на основе графов.

3. Какие этапы включает в себя конвейер генерации данных для наборов данных маршрутизации в LLMRouter?

Конвейер генерации данных в LLMRouter включает три этапа:
* data_generation.py извлекает запросы и метки истинности и создаёт обучающие и тестовые JSONL-сплиты.
* generatellmembeddings.py создаёт вложения для кандидатов LLM из метаданных.
* apicallingevaluation.py вызывает API LLM, оценивает ответы и объединяет оценки со вложениями в записи маршрутизации.

4. Какие преимущества предоставляет система плагинов в LLMRouter для пользовательских маршрутизаторов?

Система плагинов в LLMRouter позволяет командам регистрировать пользовательские маршрутизаторы, повторно используя те же наборы данных и инфраструктуру для маршрутизации. Это обеспечивает расширяемость и гибкость системы, позволяя адаптировать её под различные задачи и требования.

5. Какие ключевые выводы можно сделать о LLMRouter на основе представленного текста?

* LLMRouter — это слой маршрутизации с открытым исходным кодом, который централизует выбор модели как задачи прогнозирования с учётом затрат и качества.
* Библиотека стандартизирует более 16 маршрутизаторов в четыре семейства, включая knnrouter, graphrouter, routerdc, router_r1 и gmtrouter.
* Многораундовая RL-маршрутизация через Router R1 интегрирует фреймворк Router R1, где LLM-маршрутизатор чередует внутренние шаги «подумать» с внешними вызовами «маршрутизация».
* Персонализация на основе графов с GMTRouter моделирует пользователей, запросы, ответы и LLM как узлы в гетерогенном графе и использует передачу сообщений для изучения предпочтений пользователей.
* LLMRouter предоставляет конвейер обработки данных, управляемый тестами, CLI для обучения и вывода, интерфейс чата Gradio, централизованную обработку ключей API и систему плагинов на основе MetaRouter.

Источник