Transformers documentation
JEV
Ce modèle a été contribué à Hugging Face Transformers le 2026-11-09.
JEV
Les modèles de décision, le pipeline
decisionetDecisionConfigsont 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_pretrainedne charge pas le LoRA des points de contrôle qui le conservent dans un sous-dossier (decision_config.adapter, par exempleadapter/pour JEV). Le pipeline le charge pour vous ; sans le pipeline, appelezload_adaptervous-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-27bJevConfig
classe 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 )
Paramètres
- hidden_size (
int, facultatif, par défaut4096) — 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 lignesoffsets[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 (
dictouPreTrainedConfig, facultatif) — Configuration du modèle que la tête lit, leconfig.jsonde son dépôt. - initializer_range (
float, facultatif, par défaut0.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))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
< source >( 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
< source >( input_ids: LongTensormarks: LongTensornum_options: LongTensorquestion_type_ids: LongTensor**kwargs )
Paramètres
- input_ids (
torch.LongTensorde 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.
- marks (
torch.LongTensorde 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.LongTensorde forme(num_questions,)) — Nombre d'options de chaque question du prompt. - question_type_ids (
torch.LongTensorde forme(num_questions,)) — Type de chaque question du prompt, sous forme de son index dansQuestion.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
Moduleplutô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.