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

该模型于 2026-11-09 贡献至 Hugging Face Transformers。

JEV

决策模型、decision 流水线以及 DecisionConfig 均为实验性功能:其 API 可能会随时变更,且不会经过弃用流程。

JEV 是一个决策头,它在提示的最后一个 token 处使用线性层对单 token 标签进行评分,其输出像语言模型头的 logits 一样经过软截断。它由 JEV 提出,也被 GEV 使用。

JevForDecision 是检查点及其头部的模型,类似于 ForCausalLM 是模型及其 lm_head。它会读取检查点随附的头部文件,这些文件与其权重文件并列存放(对于 vLLM 决策模型,为 readout.safetensors 和 decision_config.json;对于 JEV,为 head.safetensors 和 judge_config.json)。

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:决策配置通过聊天模板为每个问题(或所有问题)渲染一个提示词,decide 对每个问题的选项进行评分,而 Question.answer 则将评分转换为答案:

from_pretrained 不会加载将 LoRA 保存在子文件夹中的检查点(decision_config.adapter,例如 JEV 的 adapter/)。流水线会为您加载它;如果不使用流水线,请像下面这样自行调用 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)}

同一个 head 读取 pplx-decider 和 d3 的 255 个答案代码,它们的 Qwen3.5 主干会关注整个提示词(在其 JevForDecision 的 text_config 中设置 is_causal=False)。它们的 head(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) — 针对所有问题类型,由输出层进行评分的单 token 标签数量。
  • offsets (dict[str, int],可选,默认为 {"noul" -- 0, "score": 2, "choice": 8}): 每种问题类型中第一个标签所在的行:问题的选项按顺序从 offsets[question.type] 行开始进行评分。
  • softcap (float, 可选) — 分数的软上限,softcap * tanh(scores / softcap),类似于语言模型头的 logits。
  • text_config (dict 或 PreTrainedConfig,可选) — 头部所读取的模型的配置,即其仓库中的 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 )

decision 配置:来自其配置文件,用于描述随权重一同发布的带有 JEV 头的检查点。

JevForDecision

类 transformers.JevForDecision

< >

( config: JevConfig )

参数

  • config (JevConfig) — 包含模型所有参数的模型配置类。通过配置文件进行初始化不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

JEV(autotrust/JEV-9B):该仓库的模型以及一个决策头,对每个问题中<|mark|>标记前一个 token 处的单 token 标签进行线性打分,其输出像语言模型头的 logits 一样经过软截断。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_ids: LongTensormarks: LongTensornum_options: LongTensorquestion_type_ids: LongTensor**kwargs )

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length)) — 输入序列中各 token 在词汇表中的索引。默认情况下,填充(padding)将被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • marks(形状为 (num_marks,) 的 torch.LongTensor)— 决策模板中 <|mark|> 所记录的位置:每个标记之前提示词中的 token 数量。
  • num_options(形状为 (num_questions,) 的 torch.LongTensor)— 提示中每个问题的选项数量。
  • question_type_ids (torch.LongTensor,形状为 (num_questions,)) — 提示中每个问题的类型,即其在 Question.questions_types 中的索引。

JevForDecision 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

Update on GitHub