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

Ce modèle a été contribué à Hugging Face Transformers le 2026-11-09.

JEV

Les modèles de décision, le pipeline decision et DecisionConfig sont expérimentaux : leur API peut changer à tout moment, sans période de non-recommandation.

JEV est une tête de décision qui attribue des scores aux étiquettes mono-jeton à l’aide d’une couche linéaire sur le dernier jeton du prompt, avec une limite douce, de la même manière que les logits d’une tête de modèle de langage. Elle a été introduite par JEV et est également utilisée par GEV.

JevForDecision est le modèle du point de contrôle et de sa tête, de la même manière qu’un ForCausalLM est le modèle et son lm_head. Il lit les fichiers que le point de contrôle fournit avec sa tête, à côté de ses poids (readout.safetensors et decision_config.json pour les modèles de décision vLLM, head.safetensors et judge_config.json pour 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?"}},
    }
)

Consultez le pipeline de décision pour les assets d’images.

Sans le pipeline, les modèles de décision sont utilisés comme generate : la configuration de décision génère un prompt par question (ou un seul pour toutes) avec le modèle de chat, decide évalue les options de chaque question, et Question.answer convertit les scores en réponses :

from_pretrained ne charge pas le LoRA des points de contrôle qui le conservent dans un sous-dossier (decision_config.adapter, par exemple adapter/ pour JEV). Le pipeline le charge pour vous ; sans le pipeline, appelez load_adapter vous-même comme ci-dessous, sinon le modèle répond avec les poids de 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)}

La même tête lit les 255 codes de réponse de pplx-decider et d3, dont l'architecture Qwen3.5 porte son attention sur l'ensemble du prompt (is_causal=False dans le text_config de leur JevForDecision). Leur tête (readout.safetensors) et leurs paramètres (decision_config.json) sont lus tels quels, à côté de leurs poids :

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 )

Paramètres

  • hidden_size (int, facultatif, par défaut 4096) — Dimension des représentations cachées.
  • num_verbalizers (int, facultatif, valeur par défaut 24) — Nombre d'étiquettes monotoniques évaluées par la tête, pour tous les types de questions.
  • offsets (dict[str, int], facultatif, par défaut {"noul" -- 0, "score": 2, "choice": 8}) : Ligne du premier libellé de chaque type de question : les options d’une question sont notées à partir des lignes offsets[question.type], dans l’ordre.
  • softcap (float, facultatif) — Plafond doux des scores, softcap * tanh(scores / softcap), comme les logits d'une tête de modèle de langage.
  • text_config (dict ou PreTrainedConfig, facultatif) — Configuration du modèle que la tête lit, le config.json de son dépôt.
  • initializer_range (float, facultatif, par défaut 0.02) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids.

Ceci est la classe de configuration destinée à stocker la configuration d'un JevModel. Elle est utilisée pour instancier un modèle Jev en fonction des arguments spécifiés, définissant ainsi l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de autotrust/JEV-9B

Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.

Exemple :

>>> from transformers import JevConfig, JevForDecision

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

decision_config

< >

( head_configs: dicttext_config: dict )

La configuration de décision d'un point de contrôle qui inclut une tête JEV à côté de ses poids, issue de ses fichiers de configuration.

JevForDecision

classe transformers.JevForDecision

< >

( config: JevConfig )

Paramètres

  • config (JevConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.

JEV (autotrust/JEV-9B) : le modèle de son dépôt et une tête de décision, des scores linéaires de libellés mono-jeton au jeton avant le <|mark|> de chaque question, plafonnés de manière douce comme les logits d’une tête de modèle de langage.

Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)

Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.

forward

< >

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

Paramètres

  • input_ids (torch.LongTensor de forme (batch_size, sequence_length)) — Indices des jetons de la séquence d'entrée dans le vocabulaire. Le bourrage (padding) sera ignoré par défaut.

    Les indices peuvent être obtenus à l'aide de AutoTokenizer. Consultez PreTrainedTokenizer.encode() et PreTrainedTokenizer.call() pour plus de détails.

    Qu'est-ce que les identifiants d'entrée ?

  • marks (torch.LongTensor de forme (num_marks,)) — Positions enregistrées par le <|mark|> d'un modèle de décision : le nombre de jetons du prompt avant chacun d'entre eux.
  • num_options (torch.LongTensor de forme (num_questions,)) — Nombre d'options de chaque question du prompt.
  • question_type_ids (torch.LongTensor de forme (num_questions,)) — Type de chaque question du prompt, sous forme de son index dans Question.questions_types.

La méthode forward de JevForDecision remplace la méthode spéciale __call__.

Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance Module plutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.

Update on GitHub