Transformers documentation
HRM-Text
نُشر هذا النموذج في أوراق HF في 26 يونيو 2025، وأُضيف إلى مكتبة Hugging Face Transformers في 18 مايو 2026.
HRM-Text
نظرة عامة
HRM-Text هو المتغيّر المحسّن لنمذجة اللغة التلقائية من نموذج الاستدلال الهرمي (HRM، نموذج الاستدلال الهرمي) من فريق Sapient AI. وهو نموذج أساسي يستخدم تقدّمًا هرميًا تكراريًا — حيث يُعاد استخدام مكدّسين من محوّلات (H للتخطيط البطيء والمجرّد، وL للحساب السريع والمفصّل) داخل تكرار متداخل:
for h in range(H_cycles):
for l in range(L_cycles):
z_L = L(z_L + z_H)
z_H = H(z_H + z_L)سمات البنية المعمارية:
- انتباه PrefixLM: تتفاعل رموز التعليمات ثنائي الاتجاه، بينما تتفاعل رموز الاستجابة بشكل سببي. يتم التحكم في ذلك عبر
config.prefix_lm(الافتراضيTrue)؛ راجع مدونة 4D-masks / مدونة FlexAttention للحصول على الصيغة القياسية. - بوابة مخرجات سيجمويد لكل رأس تُطبَّق على مخرجات الانتباه قبل
o_proj(على غرار Qwen3-Next؛ انظرQwen3NextAttention). تُقسَّم نقاط التفتيش القديمة المخزّنة كـgqkv_projمدمج واحد إلىgate_proj/q_proj/k_proj/v_projعند التحميل بواسطة خريطة تحويل نقاط تفتيش HRM-Text المسجّلة. - تطبيع RMS بدون معاملات —
F.rms_normبدون مقياس قابل للتعلم. L_bp_cycles— حيلة k-step grad trick من HRM. أثناء التدريب، تنتشر التدرجات فقط فيL_bp_cycles[i]الأخيرة من تكرارات المستوى المنخفضL_cycles؛ أما التكرارات السابقة فتُنفَّذ ضمنtorch.no_grad()حتى لا تُخزَّن تنشيطاتها. لا يوجد أي تأثير عند الاستدلال.
الاستخدام
نموذج HRM-Text-1B هو نموذج لغوي أساسي. لا يتضمن chat_template، ولا يُدعم apply_chat_template عمدًا في هذا الإصدار — إذ لا يزال تنسيق المحفّز المستخدم أثناء التدريب المسبق قيد التطوير، وسيُطرح لاحقًا في إصدار منفصل متغير مُهيّأ بالأوامر يتضمن قالب محادثة مستقر. قم بتشغيل النموذج الأساسي عبر AutoTokenizer العادي + AutoModelForCausalLM.generate(...):
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("sapientinc/HRM-Text-1B")
model = AutoModelForCausalLM.from_pretrained(
"sapientinc/HRM-Text-1B", device_map="auto",
)
inputs = tokenizer("The quick brown fox", return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=16, do_sample=False)
print(tokenizer.decode(out[0], skip_special_tokens=True))واجهات الخلفية للانتباه
"sdpa" هو الخيار الافتراضي، وهو الأنسب لمعظم أحمال العمل. يُدعم "flex_attention" ويحقق مكاسب في السياقات الطويلة — لكنه يتحمل تكلفة ثابتة لبناء BlockMask في كل تمريرة أمامية لا تتوزع بما يكفي لتحقيق المكسب الذي قد تتوقعه من إعادة استخدام المكدس التكراري في HRM-Text. زمن التأخير التقريبي للمعالجة الأولية (prefill) على وحدة H100 واحدة باستخدام نقطة الفحص الأساسية 1.2B المنشورة والقيم الافتراضية H_cycles=2 وL_cycles=3:
| seq_len | sdpa | flex_attention | توصية |
|---|---|---|---|
| 64 | 41 مللي ثانية | 70 مللي ثانية | sdpa |
| 256 | 41 مللي ثانية | 70 مللي ثانية | sdpa |
| 1024 | 42 مللي ثانية | 69 مللي ثانية | sdpa |
| 2048 | 85 مللي ثانية | 78 مللي ثانية | flex (≈ 1.1x) |
لذا اختر البنية التحتية (Backend) بناءً على عبء العمل:
# Default — short / medium context
model = AutoModelForCausalLM.from_pretrained("sapientinc/HRM-Text-1B", device_map="auto")
# Long context (≥ 2K tokens) — FlexAttention's per-block sparsity overtakes SDPA
model = AutoModelForCausalLM.from_pretrained(
"sapientinc/HRM-Text-1B", device_map="auto", attn_implementation="flex_attention",
)تنتج كلا الواجهتين الخلفيتين قيم logits مكافئة (تم التحقق من تطابق 100% في أعلى ترتيب واحد من البداية إلى النهاية مقابل مرجع torch). يُدعم "eager" وينتج نفس قيم logits، لكنه نادرًا ما يكون الخيار الأسرع على الأجهزة الحديثة. استخداماته الرئيسية هي output_attentions=True — حيث لا تُرجع SDPA / FlexAttention أوزان الانتباه لكل رأس، لذا يجب تشغيل المسارات التي تحتاج إليها للتحليل أو التصور باستخدام attn_implementation="eager".
تُرفض أي نسخة من FlashAttention — بما في ذلك FA 2/3/4 وتنفيذات النواة على HF Hub التي قد لا تتبع تسمية
flash_attention_*— بواسطة HrmTextModel عند التهيئة، طالما أنconfig.prefix_lm=True(القيمة الافتراضية). فواجهات FA تقبل فقط أقنعة سببية وغير سببية، ولا تستطيع تمثيل طبقة PrefixLM رباعية الأبعاد. استخدم"sdpa"(الافتراضي) أو"flex_attention"لـ PrefixLM. أما ضبطconfig.prefix_lm=Falseفيجعل القناع سببيًا بحتًا ويعيد تفعيل FA — وهو مفيد لمسارات الضبط الدقيق أو الاستدلال السببي فقط حيث يكون FA الخيار الأسرع.
تدريب PrefixLM
لإجراء الضبط الدقيق الإشرافي الذي يحترم الحد الفاصل بين التعليم والاستجابة، يجب إصدار token_type_ids من مُجمِّع البيانات (data collator) إلى جانب input_ids — حيث تُمنح المواضع داخل التعليم القيمة 1، بينما تُمنح الاستجابة والتعبئة (padding) القيمة 0. يعامل النموذج كل موضع تكون فيه token_type_ids == 1 كجزء من كتلة ثنائية الاتجاه واحدة؛ بينما تبقى بقية المواضع سببية:
import torch
def collate_prefixlm(batch, pad_token_id=0, ignore_label_id=-100):
"""`batch[i] = {"instruction_ids": [...], "response_ids": [...]}`."""
full_ids = [b["instruction_ids"] + b["response_ids"] for b in batch]
prefix_lens = [len(b["instruction_ids"]) for b in batch]
max_len = max(len(ids) for ids in full_ids)
input_ids = torch.full((len(batch), max_len), pad_token_id, dtype=torch.long)
token_type_ids = torch.zeros_like(input_ids)
labels = torch.full_like(input_ids, ignore_label_id)
attention_mask = torch.zeros_like(input_ids)
for i, (ids, plen) in enumerate(zip(full_ids, prefix_lens)):
input_ids[i, : len(ids)] = torch.tensor(ids)
token_type_ids[i, :plen] = 1 # bidirectional prefix
labels[i, plen : len(ids)] = input_ids[i, plen : len(ids)] # loss on response only
attention_mask[i, : len(ids)] = 1
return {
"input_ids": input_ids,
"token_type_ids": token_type_ids,
"attention_mask": attention_mask,
"labels": labels,
}راجع HrmTextModel.forward() لمعرفة الشكل المقبول.
HrmTextConfig
فئة transformers.HrmTextConfig
< 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 = Nonevocab_size: int = 151808hidden_size: int = 1536intermediate_size: int = 4096num_hidden_layers: int = 16num_attention_heads: int = 12hidden_act: str = 'silu'max_position_embeddings: int = 2048initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonetie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: int | float | None = 0.0mlp_bias: bool = Falsehead_dim: int = 128H_cycles: int = 2L_cycles: int = 3L_bp_cycles: list[int] | None = Noneembedding_scale: float | None = Noneprefix_lm: bool = Truenum_layers_per_stack: int | None = None )
المعاملات
- vocab_size (
int، اختياري، القيمة الافتراضية151808) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةinput_ids. - hidden_size (
int، اختياري، القيمة الافتراضية1536) — أبعاد التمثيلات المخفية. - intermediate_size (
int، اختياري، القيمة الافتراضية4096) — أبعاد تمثيلات MLP. - num_hidden_layers (
int، اختياري، القيمة الافتراضية16) — عدد الطبقات المخفية في مُفكِّك Transformer. - num_attention_heads (
int، اختياري، القيمة الافتراضية12) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - hidden_act (
str، اختياري، القيمة الافتراضيةsilu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - max_position_embeddings (
int، اختياري، القيمة الافتراضية2048) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - rms_norm_eps (
float، اختياري، القيمة الافتراضية1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع rms. - use_cache (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كانconfig.is_decoder=Trueأو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط. - pad_token_id (
int, اختياري) — معرّف الرمز المستخدم للتعبئة في المفردات. - bos_token_id (
int, اختياري) — معرّف الرمز المستخدم لبدء البث في المفردات. - eos_token_id (
Union[int, list[int]], اختياري) — معرّف الرمز المستخدم لنهاية التدفق في المفردات. - 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) — ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي. - attention_dropout (
Union[int, float]، اختياري، القيمة الافتراضية0.0) — نسبة الإسقاط (dropout) لاحتمالات الانتباه. - mlp_bias (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام انحياز في طبقات up_proj وdown_proj وgate_proj ضمن طبقات MLP. - head_dim (
int، اختياري، القيمة الافتراضية128) — بعد رأس الانتباه. إذا كانت القيمة None، فستكون القيمة الافتراضية هي hidden_size // num_attention_heads - H_cycles (
int، اختياري، القيمة الافتراضية 2) — عدد دورات المستوى العالي. - L_cycles (
int، اختياري، القيمة الافتراضية 3) — عدد دورات المستوى المنخفض لكل دورة H. - L_bp_cycles (
list[int]، اختياري، القيمة الافتراضية[2]) — قائمة توجيه التدرجات أثناء التدريب؛ يتم ملؤها من اليسار بـ1حتىL_cyclesداخل النموذج. لا يؤدي أي إجراء أثناء الاستدلال. - embedding_scale (
float, اختياري) — معامل مضاعفة تضمين الرموز. إذا كانNone، فإن القيمة الافتراضية هي1 / initializer_range. - prefix_lm (
bool، اختياري، القيمة الافتراضيةTrue) — تعمل رموز التعليمات بشكل ثنائي الاتجاه، بينما تعمل رموز الاستجابة بشكل سببي. - num_layers_per_stack (
int, اختياري) — العدد الفعلي لكتل التحويل (transformer blocks) داخل كل من أكوام H / L. يتم ضبطه تلقائيًا عند الإنشاء الأول: حيث يُحفظ القيمة المُمررة كـnum_hidden_layersهنا، ثم يُعاد كتابةnum_hidden_layersإلىnum_layers_per_stack * H_cycles * (L_cycles + 1)بحيث يقومDynamicCache(config=...)بحجز مسبق لموضع واحد لكل استدعاء فريد لانتباه (attention) تحت الأمامي المتكرر (recurrent forward). لا تضبط هذا مباشرةً عند الإنشاء الأول — بل مرّر العدد الفعلي لكل كومة كـnum_hidden_layersودع__post_init__يقوم بتقسيمه.
هذه فئة الإعدادات المخزنة لإعدادات نموذج HrmTextModel. تُستخدم لاستحداث نموذج Hrm Text وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ sapientinc/HRM-Text-1B
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
HrmTextModel
فئة transformers.HrmTextModel
< source >( config: HrmTextConfig )
المعاملات
- config (HrmTextConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Hrm Text Text الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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 = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast 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). - token_type_ids (
torch.LongTensorمن الشكل(batch, seq_len)، اختياري) — مؤشر ثنائي الاتجاه/السببي لكل موضع. الرموز التي يكون فيهاtoken_type_ids == 1تشكل كتلة ثنائية الاتجاه واحدة؛ أما جميع المواضع الأخرى فهي سببية. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values).
يعيد
BaseModelOutputWithPast أو tuple(torch.Tensor)
BaseModelOutputWithPast أو مجموعة (tuple) من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (HrmTextConfig) والمدخلات.
تُعيد طريقة HrmTextModel الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.إذا تم استخدام
past_key_values، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل(batch_size, 1, 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
HrmTextForCausalLM
فئة transformers.HrmTextForCausalLM
< source >( config: HrmTextConfig )
المعاملات
- config (HrmTextConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Hrm Text لنمذجة اللغة السببية.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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 = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = 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'> ) → CausalLMOutputWithPast 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). - token_type_ids (
torch.LongTensorمن الشكل(batch, seq_len)، اختياري) — مؤشر ثنائي الاتجاه/السببي لكل موضع. الرموز التي يكون فيهاtoken_type_ids == 1تشكل كتلة ثنائية الاتجاه واحدة؛ أما جميع المواضع الأخرى فهي سببية. - 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_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-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) (بعد واحد لكل من الدفعة وطول التسلسل).
يعيد
CausalLMOutputWithPast أو tuple(torch.Tensor)
CausalLMOutputWithPast أو مجموعة (tuple) من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (HrmTextConfig) والمدخلات.
تُعيد طريقة HrmTextForCausalLM الأمامية تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.