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

Este modelo foi contribuído para o Hugging Face Transformers em 2026-11-09.

JEV

Os modelos de decisão, o pipeline decision e o DecisionConfig são experimentais: sua API pode mudar a qualquer momento, sem depreciação.

JEV é uma cabeça de decisão que pontua rótulos de token único com uma camada linear no último token do prompt, com limite suave (soft-cap) semelhante aos logits de uma cabeça de modelo de linguagem. Foi introduzido por JEV e também é usado por GEV.

JevForDecision é o modelo do checkpoint e sua cabeça, assim como ForCausalLM é o modelo e seu lm_head. Ele lê os arquivos que o checkpoint distribui junto com sua cabeça, ao lado de seus pesos (readout.safetensors e decision_config.json para modelos de decisão do vLLM, head.safetensors e judge_config.json para 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?"}},
    }
)

Veja o pipeline de decisão para ativos de imagem.

Sem o pipeline, os modelos de decisão são usados como generate: a configuração de decisão renderiza um prompt por pergunta (ou um para todas elas) com o template de chat, decide pontua as opções de cada pergunta e Question.answer converte as pontuações em respostas:

from_pretrained não carrega o LoRA de checkpoints que o mantêm em uma subpasta (decision_config.adapter, por exemplo, adapter/ para JEV). O pipeline carrega para você; sem o pipeline, chame load_adapter você mesmo, conforme abaixo, ou o modelo responderá com os pesos base.

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

A mesma head lê os 255 códigos de resposta de pplx-decider e d3, cujo backbone Qwen3.5 atende ao prompt inteiro (is_causal=False no text_config do seu JevForDecision). Sua head (readout.safetensors) e configurações (decision_config.json) são lidas como estão, ao lado de seus pesos:

pipeline("decision", model="vllm-sr/d3")(request)  # or perplexity-ai/pplx-decider-v1.1-27b

JevConfig

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

Parâmetros

  • hidden_size (int, opcional, padrão 4096) — Dimensão das representações ocultas.
  • num_verbalizers (int, opcional, padrão 24) — Número de rótulos de token único pontuados pela cabeça, para todos os tipos de pergunta.
  • offsets (dict[str, int], opcional, padrão {"noul" -- 0, "score": 2, "choice": 8}): Linha do primeiro rótulo de cada tipo de pergunta: as opções de uma pergunta são pontuadas pelas linhas a partir de offsets[question.type], em ordem.
  • softcap (float, opcional) — Limite suave das pontuações, softcap * tanh(scores / softcap), como os logits de uma cabeça de modelo de linguagem.
  • text_config (dict ou PreTrainedConfig, opcional) — Configuração do modelo que a head lê, o config.json do repositório dele.
  • initializer_range (float, opcional, padrão 0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.

Esta é a classe de configuração para armazenar a configuração de um JevModel. Ela é usada para instanciar um modelo Jev de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do autotrust/JEV-9B

Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.

Exemplo:

>>> from transformers import JevConfig, JevForDecision

>>> model = JevForDecision(JevConfig(hidden_size=4096))

decision_config

< >

( head_configs: dicttext_config: dict )

A configuração de decisão de um checkpoint que inclui uma cabeça JEV ao lado de seus pesos, obtida de seus arquivos de configuração.

JevForDecision

classe transformers.JevForDecision

< >

( config: JevConfig )

Parâmetros

  • config (JevConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

JEV (autotrust/JEV-9B): o modelo do seu repositório e uma cabeça de decisão, com pontuações lineares de rótulos de token único no token antes do <|mark|> de cada pergunta, com limite suave (soft-capped) como os logits de uma cabeça de modelo de linguagem.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

forward

< >

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

Parâmetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length)) — Índices dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão. Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes. O que são IDs de entrada?

    Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada?

  • marks (torch.LongTensor de forma (num_marks,)) — Posições registradas pelo <|mark|> de um modelo de decisão: o número de tokens do prompt antes de cada um deles.
  • num_options (torch.LongTensor de forma (num_questions,)) — Número de opções de cada pergunta do prompt.
  • question_type_ids (torch.LongTensor de forma (num_questions,)) — Tipo de cada pergunta do prompt, como seu índice em Question.questions_types.

O método forward de JevForDecision substitui o método especial __call__.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de Module em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

Update on GitHub