Transformers documentation

xLSTM

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

نُشر هذا النموذج في أوراق HF في 2024-05-07، وأُضيف إلى Hugging Face Transformers في 2025-07-25.

xLSTM

نظرة عامة

قُدِّم نموذج xLSTM في xLSTM: Extended Long Short-Term Memory بواسطة ماكسيميليان بيك، كوربينيان بوبل، ماركوس سبانرينغ، أندرياس أوغر، أولكساندرا برودنيكوفا، مايكل كوب، غونتر كلامباور، يوهانيس برانستتر، وسيب هوشرايتير. يحدّث xLSTM بنية LSTM الأصلية لتنافس نماذج Transformer من خلال إدخال البوابات الأسّية، وتوسيع الذاكرة المصفوفية، والتدريب والاستيعاب القابلين للتوازي.

تم تدريب متغير نموذج 7B بواسطة فريق xLSTM: ماكسيميليان بيك، وكوربينيان بوبل، وفيليب ليب، وريتشارد كورل، وباتريك بليس، وسيباستيان بويك، وسيب هوشرايتير، في NXAI.

المستخلص من الورقة البحثية هو كالتالي:

في التسعينيات، تم تقديم دوّار الخطأ الثابت والبوابات كأفكار مركزية في ذاكرة المدى الطويل القصير (LSTM). ومنذ ذلك الحين، صمدت نماذج LSTM أمام اختبار الزمن وساهمت في العديد من قصص النجاح في التعلم العميق، إذ شكّلت على وجه الخصوص أول نماذج اللغة الكبيرة (LLMs). ومع ذلك، أدّى ظهور تقنية Transformer التي تعتمد في جوهرها على الانتباه الذاتي القابل للتوازي إلى فجر حقبة جديدة، متفوقةً على نماذج LSTM عند توسيع نطاقها. نطرح الآن سؤالاً بسيطاً: إلى أي مدى يمكننا الوصول في نمذجة اللغة عند توسيع نطاق نماذج LSTM إلى مليارات المعاملات، مع الاستفادة من أحدث التقنيات من نماذج LLM الحديثة، ولكن مع التخفيف من القيود المعروفة لنماذج LSTM؟ أولاً، نعرّف البوابات الأسية مع تقنيات تطبيع واستقرار مناسبة. ثانياً، نعدّل بنية الذاكرة في LSTM، فنحصل على: (i) sLSTM بذاكرة قياسية وتحديث قياسي وخلط ذاكرة جديد، (ii) mLSTM القابل للتوازي بالكامل بذاكرة مصفوفية وقاعدة تحديث تباين. يؤدي دمج هذه الامتدادات لـ LSTM في هياكل كتل متبقية إلى كتل xLSTM التي تُرصّ بعد ذلك بشكل متبقٍ في هياكل xLSTM. تعزّز البوابات الأسية وبنى الذاكرة المعدّلة قدرات xLSTM لتؤدّي أداءً مواتياً عند مقارنتها بأحدث نماذج Transformer ونماذج فضاء الحالة، من حيث الأداء والتوسّع.

تمت مساهمة هذا النموذج من قِبل NX-AI. يمكن العثور على الكود الأصلي هنا.

ملاحظات

  • استخدم التعبئة اليسرى (left padding) للتوليد المجمّع. راجع جانب التعبئة.

xLSTMConfig

فئة transformers.xLSTMConfig

< >

( 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 = 50304hidden_size: int = 4096embedding_dim: int | None = Nonenum_hidden_layers: int = 32num_blocks: int | None = Nonenum_heads: int = 8use_bias: bool = Falsenorm_reduction_force_float32: bool = Truetie_word_embeddings: bool = Falseadd_out_norm: bool = Truenorm_eps: float = 1e-06qk_dim_factor: float = 0.5v_dim_factor: float = 1.0chunkwise_kernel: typing.Literal['chunkwise--native_autograd', 'parallel--native_autograd'] = 'chunkwise--native_autograd'sequence_kernel: typing.Literal['native_sequence__native'] = 'native_sequence__native'step_kernel: typing.Literal['native'] = 'native'mode: typing.Literal['train', 'train_with_padding', 'inference'] = 'inference'chunk_size: int = 64return_last_states: bool = Trueautocast_kernel_dtype: typing.Literal['float32', 'bfloat16', 'float16'] = 'bfloat16'eps: float = 1e-06inference_state_dtype: typing.Literal['float32', 'bfloat16', 'float16'] = 'float32'ffn_proj_factor: float = 2.667ffn_round_up_to_multiple_of: int = 64gate_soft_cap: float = 15.0output_logit_soft_cap: float = 30.0weight_mode: typing.Literal['single', 'fused'] = 'single'use_cache: bool = Truepad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2max_inference_chunksize: int = 16384 )

المعاملات

  • vocab_size (int، اختياري، القيمة الافتراضية 50304) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة input_ids.
  • hidden_size (int، اختياري، القيمة الافتراضية 4096) — أبعاد التمثيلات المخفية.
  • embedding_dim (int، اختياري) — أبعاد التضمينات والحالات المخفية.
  • num_hidden_layers (int، اختياري، القيمة الافتراضية 32) — عدد الطبقات المخفية في مُفكِّك Transformer.
  • num_blocks (int, اختياري، اختياري، القيمة الافتراضية 32) — عدد الكتل في نموذج xLSTM، استخدم num_hidden_layers إذا كانت القيمة None.
  • num_heads (int, اختياري، اختياري، القيمة الافتراضية 8) — عدد الرؤوس لطبقة/خلية xLSTM.
  • use_bias (bool, اختياري، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام الانحيازات في نموذج xLSTM.
  • norm_reduction_force_float32 (bool, اختياري، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إجبار عملية اختزال norm على أن تتم بدقة fp32.
  • tie_word_embeddings (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم ربط ترميزات الأوزان وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.
  • add_out_norm (bool, اختياري، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إضافة تطبيع للمخرج بعد الكتل وقبل LMHead.
  • norm_eps (float, اختياري، القيمة الافتراضية 1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.
  • qk_dim_factor (float, اختياري، اختياري، القيمة الافتراضية 0.5) — معامل المقياس لبُعد الاستعلام والمفتاح.
  • v_dim_factor (float, اختياري، اختياري، القيمة الافتراضية 1.0) — معامل المقياس لبُعد القيمة.
  • chunkwise_kernel (ChunkwiseKernelType، اختياري، اختياري، القيمة الافتراضية "chunkwise--native_autograd") — نوع النواة (Kernel) لوضع المعالجة المقسمة (chunkwise).
  • sequence_kernel (SequenceKernelType، اختياري، اختياري، القيمة الافتراضية "native_sequence__native") — نوع النواة (Kernel) لوضع معالجة التسلسل.
  • step_kernel (StepKernelType، اختياري، اختياري، القيمة الافتراضية "native") — نوع النواة (Kernel) لوضع معالجة الخطوات.
  • mode (BackendModeType، اختياري، اختياري، القيمة الافتراضية "inference") — وضع التشغيل (يُطلب وضع الاستدلال للتوليد).
  • chunk_size (int، اختياري، اختياري، القيمة الافتراضية 64) — حجم المقطع الداخلي.
  • return_last_states (bool, اختياري، اختياري، القيمة الافتراضية True) — هل يُعاد إرجاع الحالات/الذاكرة المؤقتة الأخيرة داخليًا. يجب أن تكون القيمة True لتوليد النص.
  • autocast_kernel_dtype (DtypeType، اختياري، اختياري، القيمة الافتراضية "bfloat16") — نوع البيانات (dtype) الخاص بالنواة (kernel) للحالات.
  • eps (float، اختياري، القيمة الافتراضية 1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.
  • inference_state_dtype (DtypeType، اختياري، اختياري، القيمة الافتراضية "float32") — نوع البيانات (dtype) للنواة (Kernel) للحالات أثناء الاستدلال.
  • ffn_proj_factor (float, اختياري، اختياري، القيمة الافتراضية 2.667) — معامل حجم شبكة التغذية العكسية البوابة (gated Feed Forward network) الخاصة بالمشروع بعد التوسيع (post-up projection).
  • ffn_round_up_to_multiple_of (int, اختياري، اختياري، القيمة الافتراضية 64) — عامل حجم القيمة المستديرة لشبكة التغذية الأمامية البوابة بعد الإسقاط التصاعدي.
  • gate_soft_cap (float, اختياري، اختياري، القيمة الافتراضية 15.0) — مقياس الحد الأقصى الناعم للبوابة.
  • output_logit_soft_cap (float, اختياري، اختياري، القيمة الافتراضية 30.0) — مقياس الحد الأقصى الناعم لقيم logit في المخرجات.
  • weight_mode (Literal، اختياري، القيمة الافتراضية "single") — ما إذا كانت الطبقات الخطية المتوازية مفصولة أو مدمجة (single).
  • use_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان config.is_decoder=True أو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.
  • pad_token_id (int، اختياري، القيمة الافتراضية 1) — معرّف الرمز المستخدم للتعبئة في المفردات.
  • bos_token_id (int, اختياري، القيمة الافتراضية 0) — معرّف الرمز المستخدم لبدء البث في المفردات.
  • eos_token_id (Union[int, list[int]]، اختياري، القيمة الافتراضية 2) — معرّف الرمز المستخدم لنهاية التدفق في المفردات.
  • max_inference_chunksize (int, اختياري، اختياري، القيمة الافتراضية 16384) — تقييد حجم المقطع للاستدلال (Inference) لتوفير الذاكرة.

هذه فئة الإعدادات المخزنة لإعدادات نموذج xLSTMModel. تُستخدم لاستحداث نموذج Xlstm وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ NX-AI/xLSTM-7b

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

مثال:

>>> from transformers import xLSTMConfig, xLSTMModel

>>> # Initializing a xLSTM configuration
>>> configuration = xLSTMConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = xLSTMModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

xLSTMModel

فئة transformers.xLSTMModel

< >

( config: xLSTMConfig )

المعاملات

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

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

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.LongTensor] = Nonecache_params: transformers.models.xlstm.modeling_xlstm.xLSTMCache | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → xLSTMOutput or tuple(torch.Tensor)

المعاملات

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

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

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

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

يعيد

xLSTMOutput أو tuple(torch.Tensor)

xLSTMOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعدادات (xLSTMConfig) والمدخلات.

تُعيد طريقة xLSTMModel الأمامية تعريف الطريقة الخاصة __call__.

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

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

  • cache_params (~models.xlstm.modeling_xlstm.xLSTMCache، اختياري) — حالة النموذج عند آخر خطوة زمنية. يمكن استخدامه في طريقة الأمامية مع input_ids التالية لتجنب تقديم input_ids القديمة.

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

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

xLSTMLMHeadModel

فئة transformers.xLSTMForCausalLM

< >

( config: xLSTMConfig )

المعاملات

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

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

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_params: transformers.models.xlstm.modeling_xlstm.xLSTMCache | None = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → xLSTMCausalLMOutput or tuple(torch.Tensor)

المعاملات

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

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

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

  • inputs_embeds (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير input_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس input_ids إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.
  • cache_params (xLSTMCache، اختياري) — كائن xLSTMCache الذي يحمل حالات RNN.
  • 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).

يعيد

xLSTMCausalLMOutput أو tuple(torch.Tensor)

xLSTMCausalLMOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (xLSTMConfig) والمدخلات.

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

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

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

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

  • cache_params (xLSTMCache، اختياري، يحمل حالات RNN) — حالة النموذج عند خطوة الزمن الأخيرة. يمكن استخدامه في طريقة الأمامية مع input_ids التالية لتجنب تقديم input_ids القديمة.

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

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

مثال:

Update on GitHub