Transformers documentation

JEV

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была добавлена в 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-27b

JevConfig

класс transformers.JevConfig

< >

( 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))

decision_config

< >

( head_configs: dicttext_config: dict )

Конфигурация решения контрольной точки, которая содержит голову JEV рядом с весами, из её файлов конфигурации.

JevForDecision

класс transformers.JevForDecision

< >

( config: JevConfig )

Параметры

  • config (JevConfig) — Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

JEV (autotrust/JEV-9B): модель из её репозитория и head для принятия решений, линейные оценки одно-токеновых меток на токене перед <|mark|> каждого вопроса, с мягким ограничением, как у logits языковой модели.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( 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, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

Update on GitHub