Transformers documentation
JEV
该模型于 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-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) — 针对所有问题类型,由输出层进行评分的单 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 配置:来自其配置文件,用于描述随权重一同发布的带有 JEV 头的检查点。
JevForDecision
类 transformers.JevForDecision
< source >( config: JevConfig )
参数
- config (JevConfig) — 包含模型所有参数的模型配置类。通过配置文件进行初始化不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
JEV(autotrust/JEV-9B):该仓库的模型以及一个决策头,对每个问题中<|mark|>标记前一个 token 处的单 token 标签进行线性打分,其输出像语言模型头的 logits 一样经过软截断。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
forward
< source >( 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()。
- 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实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。