FAIRouter: как устроена математика маршрутизации языковых моделей
Разработчики библиотеки FAIRouter раскрыли внутреннюю логику работы маршрутизатора, который направляет запросы к наиболее подходящим языковым моделям. В новой статье они подробно описали, как задача превращается в вектор, как прогнозируются качество, цена и время ответа, а также как система обучается на отзывах пользователей.
Библиотека FAIRouter, представленная ранее, предназначена для автоматического выбора исполнителя среди языковых моделей (LLM) на основе анализа задачи. В новом материале авторы сосредоточились на математической основе маршрутизации, которая ранее была описана лишь в общих чертах. Статья разбита на восемь частей: первые шесть посвящены работе маршрутизатора и судьи, седьмая содержит описание эксперимента, а восьмая — планы по развитию. Основная цель — показать, как система принимает решение о том, какой модели доверить выполнение запроса, и как она адаптируется на основе обратной связи.
Процесс маршрутизации начинается с извлечения из текста задачи спецификации — описания требований к ответу: объема, структуры, стиля, языка и других параметров. Затем строится векторное представление задачи, которое передается всем объектам маршрутизации. Каждый объект возвращает логит — ненормированную оценку того, насколько хорошо он справится с задачей. Из них отбираются K лучших, и на основе их оценок с помощью функции softmax с температурой строится распределение вероятностей. Исполнитель выбирается случайно в соответствии с этим распределением. Температура для каждого объекта рассчитывается отдельно и обратно пропорциональна корню из числа оценок, на которых он обучен: чем больше статистики, тем ниже температура и тем ближе выбор к аргмаксу (выбору лучшего объекта). Такой подход автоматически балансирует между исследованием новых вариантов и использованием уже проверенных. Все решения и их результаты (оценки цены, времени, качества от человека или автоматического критика) записываются в базу данных для последующего обучения.
Ключевым элементом является вектор задачи, который должен компактно описывать ее свойства. Он состоит из двух частей: первых семи позиций, отражающих свойства самой задачи (длина запроса, ожидаемая длина ответа, длина диалога, число ограничений, требуемая экспертность, сложность и опора на факты), и вектора спецификации ответа. Вектор спецификации включает коды «один из многих» для стиля (10 разрядов), предметной области (15), языка программирования (11), области науки (10), типа задачи (34), языка текста (10), а также 13 числовых метрик и признак ссылок на источники. Вместе с семью свойствами задачи получается вектор фиксированной размерности. Важно, что спецификация одного и того же вида может описывать как заказ, так и готовый ответ, что позволяет сравнивать их напрямую и использовать для автоматической оценки качества решения. Вектор нормируется к единичной длине, а для лучшего различения задач из него вычитается среднее по журналу ходов (центрирование). Это нововведение позволило увеличить число удачных запусков на контрольном тесте с 4 до 18 из 20.
Одним из важных решений стала логарифмическая шкала для объемов и счетчиков. Изначально такие величины попадали в вектор в линейном масштабе, но тестирование показало, что объем в символах занимает 98% длины вектора, подавляя остальные признаки. Кроме того, для этих величин важнее отношение, чем разность. Поэтому каждое поле делится на типичный масштаб под логарифмом, что позволяет сжать динамический диапазон и сделать признаки более сбалансированными. Например, читаемость делится на 100, а доля терминологии и формальность уже лежат в отрезке от 0 до 1 и входят без изменений. Такой подход обеспечивает более равномерный вклад различных характеристик в итоговый вектор.
Прогноз качества, цены и времени ответа осуществляется с помощью обучаемых векторов кандидатов той же размерности, что и вектор задачи. Каждый кандидат имеет свой вектор, который при скалярном произведении с вектором задачи дает логит — оценку пригодности. Эти логиты затем преобразуются в вероятности с учетом температуры. Система также использует автоматического критика (судью), который оценивает качество ответа, сравнивая спецификацию заказа и спецификацию готового ответа. Это позволяет обучать маршрутизатор без постоянного участия человека. Обучение происходит на основе отзывов: после получения обратной связи от пользователя или критика вычисляется градиент по всей цепочке и обновляются векторы исполнителей и матрица проекции критика. Таким образом, система постоянно совершенствуется, учитывая реальные данные биллинга и замеры времени.
В контексте российского рынка подобные разработки представляют интерес, поскольку позволяют оптимизировать затраты на использование языковых моделей, выбирая наиболее подходящую по соотношению цена-качество. Хотя FAIRouter пока поддерживает только LLM, в планах добавление инструментов и агентов, что расширит возможности маршрутизации. На фоне растущего числа доступных моделей (как открытых, так и коммерческих) автоматический выбор исполнителя становится важной задачей для компаний, внедряющих ИИ-решения. Описанная математическая база может быть полезна и другим разработчикам, создающим собственные системы оркестрации. В отличие от простых правил или ручного выбора, подход FAIRouter обеспечивает адаптивность и обучение на данных, что особенно ценно в условиях быстро меняющегося ландшафта ИИ-сервисов.
В дальнейшем авторы планируют расширить функциональность библиотеки, добавив поддержку инструментов и агентов, а также усовершенствовать механизмы обучения. Открытыми остаются вопросы масштабирования на большее число исполнителей, обработки неопределенности в спецификациях и интеграции с внешними системами оценки. Тем не менее уже сейчас FAIRouter демонстрирует работоспособный подход к маршрутизации, основанный на векторном представлении задач и обучении с подкреплением на отзывах. Развитие таких систем способствует повышению эффективности использования языковых моделей и снижению затрат на их эксплуатацию.