Transformers documentation
JEV
이 모델은 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-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) — 모든 질문 유형에 대해 헤드에서 점수를 매기는 단일 토큰 레이블의 수. - 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는 가중치와 함께 JEV 헤드를 포함하는 체크포인트의 config 파일에서 가져옵니다.
JevForDecision
클래스 transformers.JevForDecision
< source >( config: JevConfig )
매개변수
- config (JevConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
JEV (autotrust/JEV-9B): 해당 저장소의 모델과 결정 헤드로, 각 질문의 <|mark|> 바로 앞 토큰에서 단일 토큰 라벨에 대한 선형 점수를 계산하며, 언어 모델 헤드의 로짓처럼 소프트 캡이 적용됩니다.
이 모델은 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)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- 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인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.