AnyJev: превращает LLM в типизированные модели принятия решений
AnyJev — библиотека, позволяющая превращать любые LLM в модели принятия решений в стиле Jev, обеспечивая типизированные решения и реальные вероятности без необходимости в дообучении.
Проект направлен на упрощение работы с вероятностными моделями, где тебе не требуется много меток для обучения. AnyJev позволяет получать точные результаты с минимальными затратами, что выгодно отличает его от традиционных подходов. Эта библиотека будет полезна разработчикам, занимающимся машинным обучением, которые хотят интегрировать LLM в свои проекты для принятия информированных решений на основе данных.
AnyJev написан на Python и доступен через PyPI, что облегчает установку с помощью команды pip install anyjev. Тем не менее, он может иметь ограничения в зависимости от качества исходного LLM, поэтому учти это при использовании.
AnyJev — это проект, который позволяет преобразовать любую открытую языковую модель (LLM) в модель принятия решений в стиле Jev. Данный инструмент помогает получать типизированные решения с вероятностями, которые можно использовать для принятия автоматических решений, без необходимости в дообучении моделей. Основная особенность AnyJev заключается в том, что он исправляет неустойчивые ответы моделей, обеспечивая высокую вероятность правильного выбора.
Как это работает
AnyJev предлагает несколько уровней моделей (L0, L1, L2), которые различаются по необходимости меток и способу получения решений:
- raw: не требует меток и использует ограниченный софтмакс для выбора ответов.
- L0: работает без меток, усредняя смещение позиций, но не дает уверенности в качестве.
- L1: требует от 100 до 500 меток для калибровки неопределенности и позволяет изменять ранжирование.
- L2: очень эффективен, требует от 100 до 300 меток и использует закрытую форму для принятия решения.
Решения возвращаются без генерации или парсинга, а вместо этого просто считываются из распределения следующего токена модели. Это позволяет получать более надежные результаты даже при изменении порядка вариантов ответа.
Установка и запуск
Чтобы установить AnyJev, используй команду:
pip install "anyjev[hf]"
Затем, для того чтобы создать решение на основе модели, выполните следующие команды:
python -m anyjev.truncate Qwen/Qwen2.5-7B-Instruct 18 ./qwen-b18
vllm serve ./qwen-b18 --task embed --override-pooler-config '{"pooling_type":"LAST","normalize":false,"softmax":false}'
После этого можно использовать библиотеку чтобы задавать вопросы и получать решения:
from anyjev import Decider, Question
from anyjev.backends.vllm import VLLMBackend
d = Decider(VLLMBackend("http://localhost:8000", "./qwen-b18"), level="L2")
route = Question.choice("Which team should handle this?", ["billing", "technical", "sales", "other"], name="route")
d.fit_head(route, states, labels, layers=[-1])
d.decide(ticket, [route])["route"].distribution
Ограничения
В AnyJev есть несколько ограничений:
- Модели требуют наличия состояния скрытых переменных, что доступно только для некоторых архитектур (например, transformers и vLLM).
- Каждый уровень (в частности L2) требует настроек под конкретный вопрос и модель, поэтому голова модели, обученная для одного вопроса, не будет работать для другого.
- Калибровка не может сделать модель надежной, если она не отвечает корректно изначально.
- Некоторые операции могут негативно сказаться на точности, например, использование только одной метки при наличии доминирующего варианта.
Заключение
AnyJev предоставляет мощный инструмент для интеграции языковых моделей в задачи принятия решений с высокой степенью надежности. Он позволяет значительно повысить качество автоматизации процессов, которые требуют выбора между несколькими вариантами, без необходимости в большом количестве меток для обучения.
Открыть на GitHub: nokia-applied-research/AnyJev →
RepoRadar