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

이 모델은 2026-11-09에 Hugging Face Transformers에 기여되었습니다.

JEV

Decision 모델, decision 파이프라인 및 DecisionConfig는 실험적이며, 비추천(deprecation) 절차 없이 API가 언제든 변경될 수 있습니다.

JEV는 프롬프트의 마지막 토큰에서 선형 레이어를 사용하여 단일 토큰 라벨을 점수화하는 결정 헤드(decision head)입니다. 언어 모델 헤드의 로짓과 유사하게 소프트 캡(soft-cap)이 적용됩니다. JEV에서 도입되었으며 GEV에서도 사용됩니다.

JevForDecision은 체크포인트의 모델과 그 헤드입니다. ForCausalLM이 모델과 lm_head인 것과 유사합니다. 이는 체크포인트가 헤드를 함께 제공하는 파일들을 가중치 옆에서 읽습니다(vLLM decision 모델의 경우 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?"}},
    }
)

이미지 자산에 대한 decision pipeline을 참조하세요.

pipeline 없이 decision model은 generate처럼 사용됩니다: decision config가 chat template을 사용하여 질문별로(또는 전체에 대해 하나) 프롬프트를 렌더링하고, decide가 각 질문의 옵션을 점수화하며, Question.answer가 점수를 답변으로 변환합니다:

from_pretrained는 LoRA를 하위 폴더에 유지하는 체크포인트(decision_config.adapter, 예: JEV의 경우 adapter/)의 LoRA를 로드하지 않습니다. 파이프라인이 대신 로드해 주지만, 파이프라인 없이 사용할 경우 아래처럼 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 backbone은 전체 프롬프트에 주의를 기울입니다(각 모델의 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) — 모든 질문 유형에 대해 헤드에서 점수를 매기는 단일 토큰 레이블의 수.
  • offsets (dict[str, int], 선택 사항, 기본값 {"noul" -- 0, "score": 2, "choice": 8}): 각 질문 유형의 첫 번째 라벨이 있는 행: 질문의 옵션은 offsets[question.type]부터 순서대로 점수를 매깁니다.
  • softcap (float, 선택 사항) — 점수의 소프트 캡, 언어 모델 헤드의 로짓과 유사하게 softcap * tanh(scores / softcap)입니다.
  • text_config (dict 또는 PreTrainedConfig, 선택 사항) — 헤드가 읽는 모델의 설정, 해당 저장소의 config.json입니다.
  • initializer_range (float, 선택 사항, 기본값 0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.

이것은 JevModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Jev 모델을 초기화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 초기화하면 autotrust/JEV-9B와 유사한 구성이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

예:

>>> from transformers import JevConfig, JevForDecision

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

decision_config

< >

( head_configs: dicttext_config: dict )

decision config는 가중치와 함께 JEV 헤드를 포함하는 체크포인트의 config 파일에서 가져옵니다.

JevForDecision

클래스 transformers.JevForDecision

< >

( config: JevConfig )

매개변수

  • config (JevConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

JEV (autotrust/JEV-9B): 해당 저장소의 모델과 결정 헤드로, 각 질문의 <|mark|> 바로 앞 토큰에서 단일 토큰 라벨에 대한 선형 점수를 계산하며, 언어 모델 헤드의 로짓처럼 소프트 캡이 적용됩니다.

이 모델은 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)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • marks (torch.LongTensor, shape (num_marks,)) — 결정 템플릿의 <|mark|>에 의해 기록된 위치: 각 마크 앞의 프롬프트 토큰 수.
  • num_options (torch.LongTensor, shape (num_questions,)) — 프롬프트의 각 질문에 대한 선택지 수.
  • question_type_ids (torch.LongTensor, shape (num_questions,)) — 프롬프트의 각 질문의 유형을 Question.questions_types 내의 인덱스로 나타낸 값.

JevForDecision의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

Update on GitHub