Transformers documentation
JEV
Эта модель была добавлена в Hugging Face Transformers 09.11.2026.
JEV
Модели принятия решений, конвейер
decisionиDecisionConfigявляются экспериментальными: их API может измениться в любой момент без этапа устаревания.
JEV — это головной модуль принятия решений, который оценивает одно-токенные метки с помощью линейного слоя на последнем токене промпта, с мягким ограничением, аналогичным логитам языковой модели. Он был предложен в JEV и также используется в GEV.
JevForDecision — это модель контрольной точки и её головная часть, подобно тому как ForCausalLM представляет собой модель и её lm_head. Она
читает файлы, которые контрольная точка предоставляет вместе со своей головной частью, рядом с весами (readout.safetensors и decision_config.json для моделей принятия решений vLLM, head.safetensors и judge_config.json для JEV).
from transformers import pipeline
decide = pipeline("decision", model="autotrust/GEV-26B-Decide")
decide(
{
"state": "I was charged twice for my order and want a refund.",
"questions": {"refund": {"type": "noul", "instructions": "Is a refund requested?"}},
}
)См. конвейер принятия решений для графических ресурсов.
Без pipeline модели принятия решений используются так же, как generate: конфигурация решений с помощью chat template формирует промпт для каждого вопроса (или один общий для всех), decide оценивает варианты ответов для каждого вопроса, а Question.answer преобразует оценки в ответы:
from_pretrainedне загружает LoRA из чекпоинтов, где он хранится в подпапке (decision_config.adapter, например,adapter/для JEV). Пайплайн загружает его за вас; без пайплайнa вызовитеload_adapterсамостоятельно, как показано ниже, иначе модель будет отвечать с базовыми весами.
import torch
from transformers import AutoTokenizer, JevForDecision
repo = "autotrust/JEV-9B"
model = JevForDecision.from_pretrained(repo, dtype=torch.bfloat16, device_map="auto")
tokenizer, config = AutoTokenizer.from_pretrained(repo), model.decision_config # read from the checkpoint's files
if config.adapter: # JEV keeps its LoRA in a subfolder: `from_pretrained` doesn't load it, the pipeline does
model.load_adapter(repo, adapter_kwargs={"subfolder": config.adapter})
request = {
"state": "I was charged twice for my order and I want my money back today.",
"questions": {
"refund": {"type": "noul", "instructions": "Does the customer ask for a refund?"},
"urgency": {"type": "score", "criteria": ["Can wait", "This week", "Today", "Now"]},
},
}
answers = {}
for inputs, questions in config.prepare_inputs(request, tokenizer):
scores = model.decide(**inputs, decision_questions=questions)
answers |= {q.name: q.answer(s.softmax(-1).tolist()) for q, s in zip(questions, scores)}Та же самая головная часть считывает 255 кодов ответа моделей pplx-decider и d3, чей базовый блок Qwen3.5 обращается ко всему промпту
(is_causal=False в text_config их JevForDecision). Их головная часть (readout.safetensors) и настройки
(decision_config.json) читаются как есть, рядом с их весами:
pipeline("decision", model="vllm-sr/d3")(request) # or perplexity-ai/pplx-decider-v1.1-27bJevConfig
класс transformers.JevConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 4096num_verbalizers: int = 24offsets: dict[str, int] | None = Nonesoftcap: float | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02 )
Параметры
- hidden_size (
int, необязательный, по умолчанию4096) — Размерность скрытых представлений. - num_verbalizers (
int, необязательный, по умолчанию 24) — Количество односимвольных меток, оцениваемых головным слоем, для всех типов вопросов. - offsets (
dict[str, int], необязательный, по умолчанию{"noul" -- 0, "score": 2, "choice": 8}): Строка первого метки каждого типа вопроса: варианты ответа вопроса оцениваются по строкам начиная сoffsets[question.type], по порядку. - softcap (
float, необязательный) — Мягкое ограничение для оценок,softcap * tanh(scores / softcap), аналогично логитам головы языковой модели. - text_config (
dictилиPreTrainedConfig, необязательный) — Конфигурация модели, которую читает head,config.jsonиз её репозитория. - initializer_range (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
Это класс конфигурации для хранения настроек модели JevModel. Он используется для создания модели Jev в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации autotrust/JEV-9B
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> from transformers import JevConfig, JevForDecision
>>> model = JevForDecision(JevConfig(hidden_size=4096))Конфигурация решения контрольной точки, которая содержит голову JEV рядом с весами, из её файлов конфигурации.
JevForDecision
класс transformers.JevForDecision
< source >( config: JevConfig )
Параметры
- config (JevConfig) — Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
JEV (autotrust/JEV-9B): модель из её репозитория и head для принятия решений, линейные оценки одно-токеновых меток на токене перед <|mark|> каждого вопроса, с мягким ограничением, как у logits языковой модели.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: LongTensormarks: LongTensornum_options: LongTensorquestion_type_ids: LongTensor**kwargs )
Параметры
- input_ids (
torch.LongTensorформы(batch_size, sequence_length)) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- marks (
torch.LongTensorформы(num_marks,)) — Позиции, записанные<|mark|>шаблона принятия решений: количество токенов промпта до каждой из них. - num_options (
torch.LongTensorформы(num_questions,)) — Количество вариантов ответа для каждого вопроса в промпте. - question_type_ids (
torch.LongTensorформы(num_questions,)) — Тип каждого вопроса в промпте, представленный его индексом вQuestion.questions_types.
Метод JevForDecision forward переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.