Hugging Face опубликовал материал о decision-моделях и инструментах, которые для них добавил. Цель - общий интерфейс, который может реализовать любая такая модель независимо от архитектуры.
Что делает decision-модель
Модель получает состояние: это может быть строка или структурированный JSON-объект. Кроме того, она получает один или несколько именованных вопросов, у каждого из которых фиксированный набор допустимых ответов. На выходе - типизированное решение и вероятности, при этом текст не генерируется. В примере ответа из публикации число выходных токенов равно нулю.
Вопросы бывают трёх типов:
- Choice выбирает один вариант, например какая команда должна обработать тикет, и возвращает вероятность для каждого варианта.
- Score оценивает что-то по упорядоченной шкале, например срочность - низкую, среднюю или высокую, - и возвращает ожидаемое значение уровня.
- Noul, название идёт от Бернулли, отвечает на вопрос «да/нет» одной вероятностью, скажем, просит ли клиент вернуть деньги.
Для Choice и Score ответ также содержит значение уверенности: оно показывает, насколько сконцентрированы вероятности.
Сквозной пример в публикации - обращение в поддержку о двойном списании. Одним запросом можно узнать отдел, срочность и намерение вернуть платёж. Отдел определяется как биллинг с вероятностью, близкой к единице.
Чем это отличается от привычных подходов
Авторы сравнивают decision-модели с двумя более старыми подходами. У обычного классификатора метки зашиты в модель, поэтому новая категория означает переобучение. Zero-shot-классификация принимает метки в момент запроса, но работает с одним типом вопросов. Hugging Face оговаривает, что метки на лету и вероятностный вывод придумали не decision-модели. Новое здесь - единый интерфейс сразу для выбора, упорядоченных оценок и вопросов «да/нет».
В публикации перечислены и слабые места запроса к LLM с ответом в JSON. Вывод может не соответствовать схеме, ограниченное декодирование всё равно требует дополнительных вычислений, а генерация полного ответа - лишняя работа, когда приложению нужно лишь выбрать вариант.
Что выпущено
- Transformers получил decision-конвейер, класс AutoModelForDecision и класс DecisionConfig. Он также может локально поднимать эндпоинт /v1/systemone.
- llama.cpp отдаёт GGUF-версии decision-моделей через тот же API /v1/systemone.
- Hub получил тег для decision-моделей. В списке модели с разными основами: от энкодеров в стиле ModernBERT до более крупных генеративных.
- Обучение: decision-модели можно дообучать через Trainer API. В публикации приведён намеренно небольшой пример маршрутизации обращений в поддержку с кросс-энтропией по вариантам.
Кроме того, через decision-интерфейс можно запускать совместимые авторегрессионные языковые модели. Transformers сам собирает промпты, считывает логиты для меток ответов и применяет softmax без генерации текста, так что интерфейс можно попробовать, не обучая новую модель.
Оговорки
Hugging Face называет decision-модели молодой и быстро меняющейся областью, а сравнительных замеров с промптингом LLM в публикации нет. В примерах используются модели, опубликованные под именами autotrust и ggml-org. Точность на ваших собственных тикетах остаётся непроверенной, пока вы не запустите модель сами.