Transformers documentation
JEV
تمت مساهمة هذا النموذج في Hugging Face Transformers في 2026-11-09.
JEV
نماذج اتخاذ القرار، وخط أنابيب
decision، وDecisionConfigتجريبية: قد يتغير واجهة برمجة التطبيقات الخاصة بها في أي وقت، دون إصدار تحذير مسبق.
JEV هو رأس قرار يقوم بتقييم التسميات أحادية الرمز باستخدام طبقة خطية عند الرمز الأخير في الاستدعاء، مع حد أقصى ناعم مشابه لقيم اللوجيت في رأس نموذج اللغة. تم تقديمه بواسطة JEV ويُستخدم أيضًا بواسطة GEV.
JevForDecision هو نموذج نقطة التفتيش ورأسه، تمامًا كما أن ForCausalLM هو النموذج ورأسه lm_head. يقوم بقراءة الملفات التي تُشحن مع رأس نقطة التفتيش، إلى جانب أوزانها (readout.safetensors وdecision_config.json لنماذج قرار vLLM، وhead.safetensors وjudge_config.json لـ 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?"}},
}
)راجع خط أنابيب اتخاذ القرار لأصول الصور.
بدون خط الأنابيب، تُستخدم نماذج اتخاذ القرار على غرار generate: حيث يقوم تكوين القرار بإنشاء موجه لكل سؤال (أو موجه واحد لجميع الأسئلة) باستخدام قالب المحادثة، ثم يقوم decide بتقييم خيارات كل سؤال، ويحوّل Question.answer هذه التقييمات إلى إجابات:
from_pretrainedلا يُحمّل LoRA من نقاط التفتيش التي تحتفظ به في مجلد فرعي (decision_config.adapter، مثلadapter/لـ JEV). يقوم خط الأنابيب بتحميله نيابةً عنك؛ وبدون خط الأنابيب، استدعِ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)}تقرأ الرأس نفسه رموز الإجابة الـ 255 الخاصة بـ pplx-decider و d3، حيث يولي العمود الفقري Qwen3.5 اهتمامه بالموجّه الكامل
(is_causal=False في text_config الخاص بـ JevForDecision لهما). تُقرأ رأسهما (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)، على غرار القيم المنطقية (logits) لرأس نموذج اللغة. - text_config (
dictأوPreTrainedConfig، اختياري) — إعدادات النموذج الذي يقرأه الرأس، أي ملفconfig.jsonالخاص بمستودعه. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
هذه فئة الإعدادات المخزنة لإعدادات نموذج JevModel. تُستخدم لاستحداث نموذج Jev وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ autotrust/JEV-9B
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> from transformers import JevConfig, JevForDecision
>>> model = JevForDecision(JevConfig(hidden_size=4096))إعدادات القرار لنقطة تحقق تُشحن مع رأس JEV إلى جانب أوزانها، من ملفات الإعداد الخاصة بها.
JevForDecision
فئة transformers.JevForDecision
< source >( config: JevConfig )
المعاملات
- config (JevConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
JEV (autotrust/JEV-9B): نموذج مستودعه ورأس قرار، درجات خطية لوسوم أحادية الرمز عند الرمز الذي يسبق <|mark|> لكل سؤال، مقيدة ناعماً مثل قيم logits لرأس نموذج اللغة.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق 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() للتفاصيل. ما هي معرّفات الإدخال؟يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- marks (
torch.LongTensorمن الشكل(num_marks,)) — المواضع المسجلة بواسطة<|mark|>في قالب القرار: عدد الرموز في الاستدعاء قبل كل منها. - num_options (
torch.LongTensorمن الشكل(num_questions,)) — عدد الخيارات لكل سؤال في الاستعلام. - question_type_ids (
torch.LongTensorمن الشكل(num_questions,)) — نوع كل سؤال في الاستعلام، كمؤشره فيQuestion.questions_types.
تتجاوز طريقة JevForDecision الأمامية (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.