Transformers documentation

Beam

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

تمت مساهمة هذا النموذج في Hugging Face Transformers في 2026-10-16.

FlashAttention SDPA Tensor parallelism Expert parallelism

Beam

نظرة عامة

Beam هو أول نموذج مفتوح الأوزان من Reflection، وهو نموذج لغة من نوع خليط الخبراء المتناثر (MoE) يضم 501 مليار معامل إجمالاً و23 مليار معامل نشط لكل رمز، وقد صُمم لأعباء العمل المتعلقة بالبرمجة والاستدلال والوكلاء. تم تدريبه مسبقاً على 23.8 تريليون رمز، ثم خضع لتدريب لاحق باستخدام التعلم المعزز غير المتزامن على نطاق واسع. نموذج Beam نصي فقط، وهو يستدل قبل كل إجابة. ويتحكم إعداد جهد الاستدلال في قالب المحادثة في مقدار هذا الجهد.

يحتوي Beam على 52 طبقة مُفكِّكة (decoder) ويجمع بين الميزات التالية:

  • انتباه هجين منزلق وكامل. تستخدم كل طبقة سادسة والطبقة الأخيرة الانتباه الكامل، بينما تركز الطبقات الأخرى على أحدث sliding_window (512) رمز. يحدد layer_types النمط.
  • تطبيق RoPE على الطبقات المنزلقة، وتطبيق NoPE على الطبقات الكاملة. يُفهرس rope_parameters حسب نوع الطبقة، ويُشير None إلى نوع طبقة لا يحتوي على ترميز موضعي. أما طبقات الانتباه الكاملة فتقوم بتوسيع الاستعلامات بدلاً من ذلك (softmax قابل للتوسع): حيث يُضرب الاستعلام الموجود في الموضع n (بدءاً من 1) في (1 + n / 2048) ** 0.1، مما يحافظ على انتباه غير مسطّح مع نمو السياق.
  • انتباه مُبوَّب. انتباه الاستعلامات المُجمَّعة مع 48 رأس استعلام و8 رؤوس مفتاح/قيمة، وتطبيع RMSNorm على كل رأس استعلام ومفتاح. بوابة سيجمويد محسوبة من مدخل الانتباه، مع انحياز متعلَّم لكل رأس، تُقيّم مخرجات الانتباه عنصرًا بعنصر قبل الإسقاط النهائي.
  • MoE المتناثر. تستخدم الطبقات الثلاث الأولى شبكة عصبية متعددة الطبقات (MLP) كثيفة من نوع SwiGLU، بينما تُوجّه الطبقات الأربع والخمسون المتبقية كل رمز إلى 8 من بين 256 خبيرًا، دون وجود خبير مشترك (حيث يحدد mlp_layer_types النمط). يقوم الموجّه بتقييم الخبراء باستخدام دالة sigmoid، ويوازن الحمل باستخدام انحياز متعلّم لكل خبير بدلاً من خسارة مساعدة، ويقيّد كل رمز بأفضل topk_group من مجموعات الخبراء n_group. تُطبَّع أوزان التوجيه، ويُضرب ناتج MoE في routed_scaling_factor.
  • معايير متوسطة مع بقايا مُقيَّمة حسب العمق. يُغلَّف كل كتلة انتباه وكتلة MLP بمعايير RMSNorm قبلها وبعدها. تُعاد مقياسية عمليات الجمع الباقية بحيث، بعد k مساهمة (مع احتساب التضمينات كأول مساهمة)، يكون تدفق البقايا هو مجموعها مقسومًا على sqrt(k).
  • تقييد اللوجيت النهائي. يتم تقييد اللوجيتات باستخدام 30 * tanh(logits / 30) (final_logit_softcapping).

تُحسب عملية توسيع RMSNorm، ودالة التنشيط SwiGLU، وRoPE، وتوسيع الاستعلامات، والتوجيه، والقصّ الناعم (softcapping) بدقة FP32 لمطابقة الأرقام التي تم تدريب Beam وتقديم الخدمة بها. وتُحفظ أوزان الموجّه (router) والانحياز الخاص بالخبراء بدقة FP32 عند التحميل، وتكون قيم logits المُعادَة دائمًا بدقة FP32.

يمكنك العثور على جميع نقاط التفتيش الأصلية الخاصة بـ Beam تحت منظمة Reflection.

تمت مساهمة هذا النموذج من قِبل yonigozlan.

أمثلة على الاستخدام

تنسّق قالب المحادثة في Beam المحادثات وفق تنسيق Harmony الخاص بـ Beam، بينما يحلّل قالب الاستجابة النص المولّد ويعيده إلى رسالة تحتوي على حقول thinking وcontent وtool_calls. تولّد الأمثلة أدناه ردّاً باستخدام Pipeline أو فئة AutoModelForCausalLM.

حجم نقطة التفتيش BF16 يبلغ حوالي 1 تيرابايت، لذا تقسم الأمثلة هذا الملف عبر 8 أجهزة، مع وضع خبراء التوجيه الكاملين على كل جهاز باستخدام توازي الخبراء. شغّلها باستخدام torchrun --nproc-per-node 8 <script.py>.

خط أنابيب
AutoModel
from transformers import DistributedConfig, pipeline

pipe = pipeline(
    task="text-generation",
    model="reflection/Beam-1.0-501B-A23B",
    model_kwargs={"distributed_config": DistributedConfig(tp_size=8, ep_size=8)},
)

messages = [{"role": "user", "content": "Explain in one sentence why the sky is usually blue."}]
output = pipe(messages, max_new_tokens=2048)
reply = output[0]["generated_text"][-1]
print(reply["thinking"])
print(reply["content"])

يُفضَّل استخدام هذا بدلاً من device_map="auto"، الذي يضع طبقات كاملة على كل جهاز، ويشغّلها جهازاً تلو الآخر، وقد يستنفد الذاكرة أثناء التحميل.

عينة توليد باستخدام temperature=0.7 وtop_p=0.99 الموصى بهما من Beam، حيث تُعيّن GenerationConfig الخاصة بالنقطة المرجعية هذه القيم كافتراضية. مرّر do_sample=False لفك الترميز بطريقة طمعانية.

جهد الاستدلال

مرّر reasoning_effort إلى apply_chat_template() للتحكم في مقدار ما يستهلكه Beam من جهد في الاستدلال. يقبل هذا المعامل ميزانية عددية صحيحة أو أحد التسميات أدناه. لم يتم تدريب Beam على جهود أقل من 8، لذا لا تُحترم القيم الأصغر.

التسميةminimallowmediumhighxhighmax
الجهد83264128256512

عندما لا يتم تعيين reasoning_effort، يستخدم القالب max. إذا نفدت max_new_tokens أثناء الاستدلال، فإن الرسالة المُحلَّلة تحتوي على thinking دون content.

المحادثات متعددة الأدوار

أضِف الرسالة المُحلَّلة إلى السجل كما هي. يتدهور مخرَج Beam في غياب استدلالاته السابقة، والتي يقرأها قالب المحادثة من thinking (يُقبل أيضاً reasoning_content وreasoning). افتراضياً، يُعرض دور المساعد الذي لا يحتوي على استدلال مع كتلة استدلال فارغة. مرِّر allow_missing_thinking=False لرفع خطأ بدلاً من ذلك عند add_generation_prompt=True، وهو ما يُوصى به عند تقديم Beam.

messages.append(message)
messages.append({"role": "user", "content": "And why are sunsets red?"})
inputs = tokenizer.apply_chat_template(
    messages, add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(model.device)

استدعاء الأدوات

مرّر tools إلى كلٍّ من apply_chat_template() وparse_response(). عند استخدام tools، تُحوَّل الحُجج المُحلَّلة إلى الأنواع المحددة في مخطط كل أداة؛ أما بدونها، فتكون جميع الحُجج من نوع نص.

def get_weather(city: str):
    """
    Get the current weather in a city.

    Args:
        city: The city name.
    """
    return "Sunny, 22 C"


messages = [{"role": "user", "content": "What's the weather like in Paris right now?"}]
inputs = tokenizer.apply_chat_template(
    messages, tools=[get_weather], add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=2048)
generated = tokenizer.decode(outputs[0, inputs["input_ids"].shape[1] :])
message = tokenizer.parse_response(generated, prefix=inputs["input_ids"][0], tools=[get_weather])
print(message["tool_calls"])
# [{'type': 'function', 'function': {'name': 'get_weather', 'arguments': {'city': 'Paris'}}}]

messages.append(message)
for call in message["tool_calls"]:
    result = get_weather(**call["function"]["arguments"])
    messages.append({"role": "tool", "name": call["function"]["name"], "content": result})

ثم أعد التوليد من messages للحصول على الإجابة النهائية. نداءات الأدوات المُحلَّلة لا تحتوي على id، ويتطابق التنسيق بين النتائج والنداءات حسب الموضع، لذا أعد نتائج الأدوات بنفس ترتيب النداءات. يتوقف التوليد بعد إجابة نهائية (<|return|>) أو نداء أداة (<|call|>)؛ ويذكر generation_config.json كلاهما.

للبث، تُعيد get_response_parser() محلّلًا يمكنك feed() إليه مقاطع النص كما يتم توليدها. راجع تحليل الاستجابة لمزيد من التفاصيل.

ملاحظات

  • حُجج القالب. إلى جانب reasoning_effort، يقبل قالب المحادثة model_identity (يحل محل السطر الأول من رسالة النظام)، وbuiltin_tools، وallow_missing_thinking. يجب أن يُسمّي builtin_tools أدوات search وbrowse فقط، وذلك فقط مع التعريفات التي تم تدريب Beam عليها. الأدوات الأخرى تحتاج فقط إلى tools. تُعرض رسائل system وdeveloper فقط في بداية المحادثة.
  • التدريب. يحدد قالب المحادثة مخرجات المساعد لـ apply_chat_template(..., return_dict=True, return_assistant_tokens_mask=True)، لذا يتدرب SFTConfig(assistant_only_loss=True) الخاص بـ TRL على رموز المساعد فقط. يغطي القناع استدعاءات الأدوات والإجابة والاستدلال لكل دور من أدوار المساعد.
  • لا توجد خسارة مساعدة. يقوم الموجِّه بتوازن عبء الخبراء من خلال انحيازه، لذا لا يحسب BeamForCausalLM أي خسارة لتوازن العبء. لا يزال output_router_logits=True يعيد قيم اللوجيتس الخاصة بالموجِّه.

BeamConfig

فئة transformers.BeamConfig

< >

( 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 = Nonevocab_size: int = 151936hidden_size: int = 5120intermediate_size: int = 20480num_hidden_layers: int = 52num_attention_heads: int = 48num_key_value_heads: int = 8hidden_act: str = 'silu'max_position_embeddings: int = 8192initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Truetie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falsesliding_window: int | None = 512attention_dropout: float | int = 0.0moe_intermediate_size: int = 2560num_experts_per_tok: int = 8num_experts: int = 256norm_topk_prob: bool = Trueoutput_router_logits: bool = Falsepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonehead_dim: int = 128layer_types: list[str] | None = Nonemlp_layer_types: list[str] | None = Nonen_group: int | None = 8topk_group: int | None = 4routed_scaling_factor: int | float = 2.5final_logit_softcapping: int | float | None = 30.0 )

المعاملات

  • vocab_size (int, اختياري، القيمة الافتراضية 151936) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة input_ids.
  • hidden_size (int، اختياري، القيمة الافتراضية 5120) — أبعاد التمثيلات المخفية.
  • intermediate_size (int، اختياري، القيمة الافتراضية 20480) — أبعاد تمثيلات MLP.
  • num_hidden_layers (int، اختياري، القيمة الافتراضية 52) — عدد الطبقات المخفية في مُفكِّك Transformer.
  • num_attention_heads (int، اختياري، القيمة الافتراضية 48) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer.
  • num_key_value_heads (int، اختياري، القيمة الافتراضية 8) — هذا هو عدد رؤوس key_value التي يجب استخدامها لتنفيذ Grouped Query Attention. إذا كان num_key_value_heads=num_attention_heads، فسيستخدم النموذج Multi Head Attention (MHA)، وإذا كان num_key_value_heads=1 فسيستخدم النموذج Multi Query Attention (MQA)، وإلا فسيتم استخدام GQA. عند تحويل نقطة تفتيش متعددة الرؤوس إلى نقطة تفتيش GQA، يجب بناء كل مجموعة من رؤوس key و value عن طريق تجميع المتوسط لجميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجع هذا الورقة. إذا لم يتم تحديد القيمة، فستكون القيمة الافتراضية هي num_attention_heads.
  • hidden_act (str، اختياري، القيمة الافتراضية silu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، "gelu"، "relu"، "silu"، وغيرها.
  • max_position_embeddings (int، اختياري، القيمة الافتراضية 8192) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج على الإطلاق.
  • initializer_range (float، اختياري، القيمة الافتراضية 0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
  • rms_norm_eps (float، اختياري، القيمة الافتراضية 1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع rms.
  • use_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان config.is_decoder=True أو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.
  • tie_word_embeddings (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم ربط ترميزات الأوزان وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], اختياري) — قائمة تحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن تحتوي القائمة على قيمة لـ rope_theta، ومعاملات اختيارية تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE مع max_position_embeddings أطول.
  • attention_bias (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي.
  • sliding_window (int، اختياري، القيمة الافتراضية 512) — حجم نافذة الانتباه المنزلقة. إذا كانت None، فلا تُطبَّق نافذة منزلقة.
  • attention_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه.
  • moe_intermediate_size (int، اختياري، القيمة الافتراضية 2560) — الحجم الوسيط لشبكات MLP الخاصة بالخبراء الموجَّهين.
  • num_experts_per_tok (int، اختياري، القيمة الافتراضية 8) — عدد الخبراء الذين يُوجَّه إليهم كل رمز. هذه هي قيمة top-k الخاصة بتوجيه اختيار الرموز.
  • num_experts (int، اختياري، القيمة الافتراضية 256) — عدد الخبراء الموجَّهين في طبقات MoE.
  • norm_topk_prob (bool، اختياري، القيمة الافتراضية True) — هل يتم تطبيع أوزان الخبراء الموجَّهين.
  • output_router_logits (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب على النموذج إرجاع قيم اللوجيتس الخاصة بالموجِّه (router). تمكين هذا الخيار سيتيح أيضًا للنموذج إخراج الخسارة المساعدة، بما في ذلك خسارة موازنة الحمل وخسارة z الخاصة بالموجِّه.
  • pad_token_id (int, اختياري) — معرّف الرمز المستخدم للتعبئة في المفردات.
  • bos_token_id (int, اختياري) — معرّف الرمز المستخدم لبدء البث في المفردات.
  • eos_token_id (Union[int, list[int]], اختياري) — معرّف الرمز المستخدم لنهاية التدفق في المفردات.
  • head_dim (int، اختياري، القيمة الافتراضية 128) — بعد رأس الانتباه. إذا كانت القيمة None، فستكون القيمة الافتراضية هي hidden_size // num_attention_heads
  • layer_types (list[str], اختياري) — قائمة تُقرن بشكل صريح كل فهرس طبقة بنوعها. إذا لم تُقدَّم، فسيتم توليدها تلقائيًا بناءً على قيم الإعداد.
  • mlp_layer_types (list[str], اختياري) — نوع طبقة MLP لكل طبقة، "dense" لـ MLP من نوع SwiGLU أو "sparse" للكتلة MoE. يجب أن يكون الطول مساوياً لـ num_hidden_layers. القيمة الافتراضية هي ثلاث طبقات dense تليها طبقات sparse.
  • n_group (int، اختياري، القيمة الافتراضية 8) — عدد المجموعات للخبراء الموجَّهين.
  • topk_group (int، اختياري، القيمة الافتراضية 4) — عدد المجموعات المختارة لكل رمز (لكل رمز، مع ضمان أن الخبراء المختارين يكونون ضمن topk_group مجموعات فقط).
  • routed_scaling_factor (Union[int, float]، اختياري، القيمة الافتراضية 2.5) — معامل التوسعة للخبراء الموجَّهين.
  • final_logit_softcapping (Union[int, float]، اختياري، القيمة الافتراضية 30.0) — قيمة التقييد الناعم المطبقة على القيم النهائية (logits) قبل حساب توزيع الاحتمالات. يتم تحجيم القيم النهائية (logits) باستخدام tanh(logit / cap) * cap.

هذه هي فئة الإعدادات (configuration class) لتخزين إعدادات نموذج BeamModel. تُستخدم لتوليد نموذج Beam وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ reflection/Beam-1.0-501B-A23B

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

>>> from transformers import BeamConfig

>>> # Initializing a Beam configuration
>>> configuration = BeamConfig()

BeamModel

فئة transformers.BeamModel

< >

( config: BeamConfig )

المعاملات

  • config (BeamConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج Beam العاري الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeModelOutputWithPast or tuple(torch.Tensor)

المعاملات

  • input_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.

    يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.

    ما هي معرّفات الإدخال؟

  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • position_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق [0, config.n_positions - 1].

    ما هي معرّفات المواقع؟

  • past_key_values (~cache_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً من past_key_values الذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندما use_cache=True أو config.use_cache=True.

    يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير past_key_values، فسيتم تهيئة DynamicCache افتراضياً.

    سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.

    عند استخدام past_key_values، يُتوقَّع من المستخدم إدخال input_ids غير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد (batch_size, unprocessed_length) بدلاً من جميع input_ids بأبعاد (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير input_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس input_ids إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).

يعيد

MoeModelOutputWithPast أو tuple(torch.Tensor)

MoeModelOutputWithPast أو مجموعة (tuple) من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على التهيئة (BeamConfig) والمدخلات.

تتجاوز طريقة BeamModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.

  • past_key_values (Cache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي، وفي كتل الانتباه المتقاطع اختياريًا إذا كان config.is_encoder_decoder=True) يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

  • attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • router_logits (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_router_probs=True وconfig.add_router_probs=True أو عند config.output_router_probs=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, sequence_length, num_experts).

    قيمات logits الخام (بعد تطبيق دالة softmax) التي يحسبها موجّهو MoE، وتُستخدم هذه القيم لحساب الخسارة المساعدة في نماذج مزيج الخبراء.

BeamForCausalLM

فئة transformers.BeamForCausalLM

< >

( config: BeamConfig )

المعاملات

  • config (BeamConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج Beam لنمذجة اللغة السببية.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeCausalLMOutputWithPast or tuple(torch.Tensor)

المعاملات

  • input_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.

    يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.

    ما هي معرّفات الإدخال؟

  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • position_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق [0, config.n_positions - 1].

    ما هي معرّفات المواقع؟

  • past_key_values (~cache_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً من past_key_values الذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندما use_cache=True أو config.use_cache=True.

    يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير past_key_values، فسيتم تهيئة DynamicCache افتراضياً.

    سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.

    عند استخدام past_key_values، يُتوقَّع من المستخدم إدخال input_ids غير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد (batch_size, unprocessed_length) بدلاً من جميع input_ids بأبعاد (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير input_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس input_ids إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.
  • labels (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن [0, ..., config.vocab_size] أو -100 (انظر input_ids docstring). يتم تجاهل الرموز التي فهارسها مضبوطة على -100 (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن [0, ..., config.vocab_size].
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).
  • logits_to_keep (Union[int, torch.Tensor]، اختياري، القيمة الافتراضية 0) — إذا كان int، يتم حساب logits لآخر logits_to_keep رموز. إذا كانت القيمة 0، يتم حساب logits لجميع input_ids (حالة خاصة). لا يُحتاج إلى logits إلا للرمز الأخير في عملية التوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة كبيرة، وهو أمر مهم بشكل ملحوظ للتسلسلات الطويلة أو حجم المفردات الكبير. إذا كان torch.Tensor، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول التسلسل. يكون هذا مفيدًا عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول التسلسل).

يعيد

MoeCausalLMOutputWithPast أو tuple(torch.Tensor)

MoeCausalLMOutputWithPast أو مجموعة (tuple) من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على التهيئة (BeamConfig) والمدخلات.

تتجاوز طريقة BeamForCausalLM الخاصة بـ forward الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).

  • aux_loss (torch.Tensor، اختياري، يُعاد عند تمرير output_router_logits=True أو عند config.output_router_logits=True، ويتدرب النموذج على مساره باستخدام خسارة توازن الأحمال) — خسارة مساعدة لتوازن الأحمال للوحدات المتناثرة. النماذج التي توازن خبرائها باستخدام انحياز المسار بدلاً من ذلك (DeepSeek-V3 والهندسات المشتقة منه) تعيد None هنا مع الاستمرار في إعادة router_logits.

  • router_logits (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_router_logits=True أو عند تعيين config.output_router_logits=True) — مجموعة من torch.Tensor (واحدة لكل طبقة متناثرة) ذات الشكل (batch_size * sequence_length, num_experts).

    قيمات التوجيه الخام (logits) التي تحسبها وحدات التوجيه في نماذج MoE. يمكن استخدامها لحساب خسارة موازنة الحمل أو لفحص كيفية توزيع الرموز على الخبراء.

  • past_key_values (Cache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

  • attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

Update on GitHub