Transformers documentation
Switch Transformers
نُشر هذا النموذج في أوراق HF في 11 يناير 2021، وأُضيف إلى مكتبة Hugging Face Transformers في 15 نوفمبر 2022.
Switch Transformers
Switch Transformers هو نموذج T5 متناثر حيث يُستبدل طبقة MLP بخلطة من الخبراء (Mixture-of-Experts). يربط آلية التوجيه كل رمز بخبير، وكل خبير هو MLP كثيف. يتيح التناثر تحجيمًا أفضل، وتسمح آلية التوجيه للنموذج باختيار الأوزان ذات الصلة على الفور، مما يزيد من سعة النموذج.
يمكنك العثور على جميع نقاط التفتيش الأصلية لنماذج Switch Transformers ضمن مجموعة Switch Transformer.
تمت مساهمة هذا النموذج من قِبل ybelkada و ArthurZ.
انقر على نماذج Switch Transformers في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق Switch Transformers على مهام مختلفة في معالجة اللغة الطبيعية.
يُبيّن المثال أدناه كيفية التنبؤ بالرمز المقنّع باستخدام Pipeline وAutoModel ومن سطر الأوامر.
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("google/switch-base-8")
model = AutoModelForSeq2SeqLM.from_pretrained("google/switch-base-8", device_map="auto")
input_text = "The capital of France is <extra_id_0>."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to(0)
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))تقلل عملية التكميم العبء على الذاكرة في النماذج الكبيرة من خلال تمثيل الأوزان بدقة أقل. راجع نظرة عامة على التكميم للاطلاع على المزيد من واجهات التكميم المتاحة.
يستخدم المثال أدناه bitsandbytes لاختزال الأوزان إلى 8 بتات فقط.
# pip install bitsandbytes
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BitsAndBytesConfig
tokenizer = AutoTokenizer.from_pretrained("google/switch-base-8")
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
model = AutoModelForSeq2SeqLM.from_pretrained("google/switch-base-8", device_map="auto", quantization_config=quantization_config)
input_text = "The capital of France is <extra_id_0>."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to(0)
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))SwitchTransformersConfig
فئة transformers.SwitchTransformersConfig
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truevocab_size: int = 32128d_model: int = 768d_kv: int = 64d_ff: int = 2048expert_capacity: int = 64num_layers: int = 12num_sparse_encoder_layers: int = 3num_decoder_layers: int | None = 12num_sparse_decoder_layers: int = 3num_heads: int = 12num_experts: int = 8router_bias: bool = Falserouter_jitter_noise: int | float = 0.01router_dtype: typing.Literal['float32', 'float16', 'bfloat16'] = 'float32'router_ignore_padding_tokens: bool = Falserelative_attention_num_buckets: int = 32relative_attention_max_distance: int = 128dropout_rate: float | int = 0.1layer_norm_epsilon: float = 1e-06router_z_loss_coef: float = 0.001router_aux_loss_coef: float = 0.001initializer_factor: float = 1.0dense_act_fn: str = 'relu'add_router_probs: bool = Falseuse_cache: bool = Truepad_token_id: int | None = 0eos_token_id: int | list[int] | None = 1bos_token_id: int | None = Nonetie_word_embeddings: bool = Trueis_decoder: bool = Falseadd_cross_attention: bool = False )
المعاملات
- is_encoder_decoder (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا. - vocab_size (
int، اختياري، القيمة الافتراضية32128) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةinput_ids. - d_model (
int، اختياري، القيمة الافتراضية768) — حجم طبقات المُشفِّر وطبقة المُجمِّع. - d_kv (
int، اختياري، القيمة الافتراضية64) — حجم إسقاطات المفتاح والاستعلام والقيمة لكل رأس انتباه. سيتم تعريفinner_dimلطبقة الإسقاط على أنهnum_heads * d_kv. - d_ff (
int، اختياري، القيمة الافتراضية2048) — بعد تمثيلات MLP. - expert_capacity (
int، اختياري، القيمة الافتراضية64) — عدد الرموز التي يمكن لكل خبير معالجتها. إذا كانتNone، فسيتم تعيينexpert_capacityإلى(sequence_length / num_experts) * capacity_factor. - num_layers (
int، اختياري، القيمة الافتراضية12) — عدد الطبقات المخفية في مُفكِّك Transformer. - num_sparse_encoder_layers (
int، اختياري، القيمة الافتراضية 3) — عدد طبقات المخفي الكثيفة النادرة (MoE) في طبقة مُشفِّر Transformer. ملاحظة: عند ضبطه على 0 معnum_layers=1، قد تنشئ النسخة الحالية طبقة نادرة على الرغم من ذلك بسبب حساب الخطوة النادرة. ولا يُصادف هذا الحدّ في نقاط التفتيش الموجودة. - num_decoder_layers (
int، اختياري، القيمة الافتراضية12) — عدد الطبقات المخفية في مُفكِّك Transformer. سيُستخدم نفس قيمةnum_layersإذا لم يتم ضبطه. - num_sparse_decoder_layers (
int، اختياري، القيمة الافتراضية 3) — عدد طبقات المخفي الكثيف المتناثر (MoE) في طبقة فك الترميز الخاصة بـ Transformer. ملاحظة: عند ضبطه على 0 معnum_decoder_layers=1، قد تنشئ النسخة الحالية طبقة متناثرة لا تزال بسبب حساب الخطوة المتناثرة. لا يُصادف هذا الحدّ في نقاط التفتيش الموجودة. - num_heads (
int، اختياري، القيمة الافتراضية12) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - num_experts (
int، اختياري، القيمة الافتراضية8) — عدد الخبراء الموجَّهين في طبقات MoE. - router_bias (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إضافة انحياز إلى الموجّه. - router_jitter_noise (
Union[int, float]، اختياري، القيمة الافتراضية0.01) — كمية الضوضاء المضافة إلى قيم التوجيه (logits) أثناء التدريب لتحسين توازن الأحمال. - router_dtype (
str، اختياري، القيمة الافتراضية"float32") —dtypeالمستخدم للموجّهات. يُفضّل إبقاءdtypeعلى"float32"كما هو محدد في مناقشة الدقة الانتقائية في الورقة البحثية. - router_ignore_padding_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم تجاهل رموز الحشو عند التوجيه. - relative_attention_num_buckets (
int، اختياري، القيمة الافتراضية 32) — عدد الدلاء المستخدمة في كل طبقة انتباه. - relative_attention_max_distance (
int, اختياري، القيمة الافتراضية 128) — أقصى مسافة للتسلسلات الأطول لفصل الدلاء. - dropout_rate (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — النسبة لجميع طبقات dropout. - layer_norm_epsilon (
float, اختياري، القيمة الافتراضية1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - router_z_loss_coef (
float، اختياري، القيمة الافتراضية0.001) — معامل لخسارة راوتر z، والتي تعاقب قيم logits الكبيرة للراوتر لتحسين استقرار التدريب. - router_aux_loss_coef (
float، اختياري، القيمة الافتراضية0.001) — معامل خسارة موازنة الحمل المساعدة. يُستخدم لعقابلة التوجيه غير المتساوي للخبراء في نماذج MoE. - initializer_factor (
float، اختياري، القيمة الافتراضية1.0) — عامل لتجميع جميع مصفوفات الأوزان (يجب إبقاؤه عند 1، ويُستخدم داخليًا لاختبارات التهيئة). - dense_act_fn (
string، اختياري، القيمة الافتراضية"relu") — نوع طبقة التقدّم الأمامي المستخدمة. يجب أن تكون واحدة من"relu"أو"gated-gelu". يستخدم"gated-gelu"في SwitchTransformersv1.1. بينما يستخدم SwitchTransformers الأصلي"relu". - add_router_probs (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إخراج احتمالات الموجّه (router) لحساب خسارة الموجّه المساعدة. - use_cache (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كانconfig.is_decoder=Trueأو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط. - pad_token_id (
int، اختياري، القيمة الافتراضية0) — معرّف الرمز المستخدم للتعبئة في المفردات. - eos_token_id (
Union[int, list[int]]، اختياري، القيمة الافتراضية1) — معرّف الرمز المستخدم لنهاية التدفق في المفردات. - bos_token_id (
int, اختياري) — معرّف الرمز المستخدم لبدء البث في المفردات. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطةtied_weights_keysالخاصة بالنموذج. - is_decoder (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان النموذج يُستخدم كمفكّك (decoder) أم لا. إذا كانت القيمةFalse، يُستخدم النموذج كمُرمِّز (encoder). - add_cross_attention (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إضافة طبقات الانتباه المتقاطع إلى النموذج.
هذه فئة الإعدادات المخزنة لإعدادات نموذج SwitchTransformersModel. تُستخدم لتوليد نموذج Switch Transformers وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ google/switch-base-8
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
SwitchTransformersTop1Router
يستخدم الموجّه الرموز لاختيار تعيين الخبراء الأوائل.
يستخدم هذا الموجِّه الآلية نفسها المستخدمة في Switch Transformer (https://huggingface.co/papers/2101.03961) وV-MoE (https://huggingface.co/papers/2106.05974): حيث تختار الرموز (tokens) خبرائها المفضلين. تُرتَّب العناصر حسب router_probs ثم تُوجَّه إلى الخبير الذي اختارته حتى يتم بلوغ expert_capacity الخاص بالخبير. لا يوجد ضمان بأن كل رمز (token) يُعالَج بواسطة خبير، أو بأن كل خبير يستقبل رمزاً واحداً على الأقل.
forward
< source >( hidden_states: Tensor ) → expert_index (torch.Tensor)
المعاملات
- hidden_states (
torch.Tensor) — (batch_size, sequence_length, hidden_dim) تُحسب منها احتمالات الموجّه.
يعيد
expert_index (torch.Tensor)
قناع توجيه أحادي الترميز (One-hot dispatch mask) من الشكل (batch_size, sequence_length, num_experts) حيث يتم إخفاء الرموز الموجهة إلى خبير يتجاوز سعته.
router_probs (torch.Tensor):
مصفوفة من الشكل (batch_size, sequence_length, 1) تحتوي على احتمال الخبير المختار لكل رمز. تُستخدم لتقليص مخرجات الخبراء.
router_logits (torch.Tensor):
مصفوفة القيم الخام (Logits) من الشكل (batch_size, sequence_length, num_experts) المقابلة لقيم التوجيه الخام. تُستخدم لاحقًا لحساب خسارة التوجيه (router z-loss).
يُحسب احتمالات الموجّه من حالات الإخفاء المدخلة.
SwitchTransformersSparseMLP
SwitchTransformersModel
فئة transformers.SwitchTransformersModel
< source >( config: SwitchTransformersConfig )
المعاملات
- config (SwitchTransformersConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Switch Transformers الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqMoEModelOutput 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 للرموز التي تم إخفاؤها.
- decoder_input_ids (
torch.LongTensorبشكل(batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس الكلمات.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- decoder_attention_mask (
torch.BoolTensorمن الشكل(batch_size, target_sequence_length)، اختياري) — قناع لتجنّب تنفيذ الانتباه على فهارس رموز معينة. افتراضياً، يُستخدم قناع سببي (causal mask) للتأكد من أن النموذج لا يستطيع النظر إلا إلى المدخلات السابقة من أجل التنبؤ بالمستقبل. - encoder_outputs (
tuple[tuple[torch.Tensor]]، اختياري) — مجموعة (توبل) تتكون من (last_hidden_state، اختياري:hidden_states، اختياري:attentions)last_hidden_stateذو الشكل(batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية (hidden-states) عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) داخل المُفكِّك (decoder). - 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إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - decoder_inputs_embeds (
torch.Tensorمن الشكل(batch_size, target_sequence_length, hidden_size), اختياري) — اختياريًا، بدلاً من تمريرdecoder_input_idsيمكنك اختيار تمرير تمثيل مضمّن مباشرة. إذاpast_key_valuesمستخدم، فاختياريًا يكفي إدخال آخرdecoder_inputs_embedsفقط (انظرpast_key_values). هذا مفيد إذا كنت تريد مزيدًا من التحكم في كيفية تحويلdecoder_input_idsفهارس إلى المتجهات المرتبطة بها مقارنةً بمصفوفة البحث التضمينية الداخلية للنموذج.إذا لم يتم تعيين كلٍّ من
decoder_input_idsوdecoder_inputs_embeds، فإنdecoder_inputs_embedsيأخذ قيمةinputs_embeds.
يعيد
Seq2SeqMoEModelOutput أو tuple(torch.Tensor)
Seq2SeqMoEModelOutput أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (None) والمدخلات.
تتجاوز طريقة SwitchTransformersModel الخاصة بالتقديم (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 (
EncoderDecoderCache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع EncoderDecoderCache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل
past_key_values) لتسريع فك الترميز التسلسلي.decoder_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات المخفية (Hidden-states) للوحدة الترميزية (decoder) عند مخرج كل طبقة، بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
decoder_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
decoder_router_logits (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_router_logits=Trueأو عند تعيينconfig.add_router_probs=True) — مجموعة منtorch.Tensor(واحد لكل طبقة) بأبعاد(batch_size, sequence_length, num_experts).قيمات التوجيه (Router logits) لنموذج المُفكِّك، وهي مفيدة لحساب الخسارة المساعدة (auxiliary loss) لنماذج مزيج الخبراء (Mixture of Experts).
cross_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه لطبقة الانتباه المتقاطع في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.
encoder_last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.encoder_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
encoder_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُشفِّر، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
encoder_router_logits (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_router_logits=Trueأو عند تعيينconfig.add_router_probs=True) — مجموعة منtorch.Tensor(واحد لكل طبقة) بأبعاد(batch_size, sequence_length, num_experts).قيمات التوجيه (Router logits) لنموذج المُشفِّر، وهي مفيدة لحساب الخسارة المساعدة (auxiliary loss) والخسارة z_loss للوحدات المتناثرة (sparse modules).
SwitchTransformersForConditionalGeneration
فئة transformers.SwitchTransformersForConditionalGeneration
< source >( config: SwitchTransformersConfig )
المعاملات
- config (SwitchTransformersConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
SWITCH_TRANSFORMERS Model with a language modeling head on top.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneoutput_router_logits: bool | None = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqMoEOutput 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 للرموز التي تم إخفاؤها.
- decoder_input_ids (
torch.LongTensorبشكل(batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس الكلمات.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- decoder_attention_mask (
torch.BoolTensorمن الشكل(batch_size, target_sequence_length)، اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز معينة. افتراضيًا، يُستخدم قناع سببي (causal mask) للتأكد من أن النموذج يمكنه النظر إلى المدخلات السابقة فقط من أجل التنبؤ بالمستقبل. - encoder_outputs (
tuple[tuple[torch.Tensor]]، اختياري) — مجموعة (توبل) تتكون من (last_hidden_state، اختياري:hidden_states، اختياري:attentions)last_hidden_stateذو الشكل(batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية (hidden-states) عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) داخل المُفكِّك (decoder). - 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إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - decoder_inputs_embeds (
torch.Tensorمن الشكل(batch_size, target_sequence_length, hidden_size), اختياري) — اختياريًا، بدلاً من تمريرdecoder_input_idsيمكنك اختيار تمرير تمثيل مضمّن مباشرة. إذاpast_key_valuesمستخدم، فاختياريًا يكفي إدخال آخرdecoder_inputs_embedsفقط (انظرpast_key_values). هذا مفيد إذا كنت تريد مزيدًا من التحكم في كيفية تحويلdecoder_input_idsفهارس إلى المتجهات المرتبطة بها مقارنةً بمصفوفة البحث التضمينية الداخلية للنموذج.إذا لم يتم تعيين كلٍّ من
decoder_input_idsوdecoder_inputs_embeds، فإنdecoder_inputs_embedsيأخذ قيمةinputs_embeds. - labels (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن[0, ..., config.vocab_size]أو -100 (انظرinput_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-100(مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن[0, ..., config.vocab_size]. - output_router_logits (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع قيم اللوجيت (logits) لجميع الموجّهات (routers) أم لا. تُعدّ هذه القيم مفيدة لحساب خسارة الموجّه (router loss)، ولا ينبغي إرجاعها أثناء الاستدلال (inference).
يعيد
Seq2SeqMoEOutput أو tuple(torch.Tensor)
Seq2SeqMoEOutput أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (None) والمدخلات.
تتجاوز طريقة SwitchTransformersForConditionalGeneration الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة نمذجة اللغة.logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).past_key_values (
EncoderDecoderCache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع EncoderDecoderCache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل
past_key_values) لتسريع فك الترميز التسلسلي.decoder_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات المخفية (Hidden states) لمفكّك الترميز (decoder) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).
decoder_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
decoder_router_logits (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_router_logits=Trueأو عند تعيينconfig.add_router_probs=True) — مجموعة منtorch.Tensor(واحد لكل طبقة) بأبعاد(batch_size, sequence_length, num_experts).قيمات التوجيه (Router logits) لنموذج المُفكِّك، وهي مفيدة لحساب الخسارة المساعدة (auxiliary loss) لنماذج مزيج الخبراء (Mixture of Experts).
cross_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه لطبقة الانتباه المتقاطع في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.
encoder_last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.encoder_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.
encoder_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُشفِّر، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
encoder_router_logits (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_router_logits=Trueأو عند تعيينconfig.add_router_probs=True) — مجموعة منtorch.Tensor(واحد لكل طبقة) بأبعاد(batch_size, sequence_length, num_experts).قيمات التوجيه (Router logits) لنموذج المُشفِّر، وهي مفيدة لحساب الخسارة المساعدة (auxiliary loss) والخسارة z_loss لنماذج مزيج الخبراء (Mixture of Experts).
SwitchTransformersEncoderModel
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoEModelOutput 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 للرموز التي تم إخفاؤها.
- inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values).
يعيد
MoEModelOutput أو tuple(torch.Tensor)
MoEModelOutput أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (None) والمدخلات.
تتجاوز طريقة SwitchTransformersEncoderModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.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_probs (
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).احتمالات الموجّه الخام التي تُحسب بواسطة موجّهات MoE، وتُستخدم هذه المصطلحات لحساب الخسارة المساعدة (auxiliary loss) والخسارة z_loss لنماذج مزيج الخبراء (Mixture of Experts).