Transformers documentation

JEV

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