Transformers documentation

طبقات ومساعدات مخصصة

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

طبقات ومساعدات مخصصة

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

لا تُفيد معظم تلك العناصر إلا إذا كنت تدرس كود النماذج الموجودة في المكتبة.

WeightRenaming

فئة transformers.GroupWeightRename

< >

( source_patterns: list[str]target_patterns: list[str] )

يطبّق قائمة من تحويلات إعادة التسمية المزدوجة لـ WeightRenaming، وتُفعَّل بشكل كسول (lazy) بواسطة نمط المصدر الأول (نمط "الحارس"). استخدم هذا عندما تتشارك إعادة تسمية وسيطة اسمًا مشتركًا (مثل norm0→norm1 وnorm1→norm2) بحيث لا يُعاد تطبيق إعادة التسمية بشكل غير صحيح عند تحميل نقطة تحقق (checkpoint) تم تحويلها مسبقًا (التي تحتوي على norm1 وnorm2 ولا تحتوي على norm0).

NOTE: رتّب source_patterns بحيث يأتي النمط غير الموجود في نقطة التفتيش المحوّلة مسبقًا في المقدمة. يتم تكرار قاموس الحالة (state dict) بترتيب مفاتيح مرتبة، لذا يجب أن يكون نمط الحماية أصغر حروفية من الأنماط المعتمدة عليه. وإلا فسيتم تجاوز المعتمدات في المرور الأول ولن يُعاد تجربتها أبدًا.

WeightConverter

فئة transformers.WeightConverter

< >

( source_patterns: str | list[str]target_patterns: str | list[str]operations: list[ConversionOps]force_cpu: bool = False )

عمليات التحويل

فئة transformers.ConversionOps

< >

( )

الفئة الأساسية لعمليات تحويل الأوزان.

فئة transformers.Chunk

< >

( dim: int = 0num_shards_attribute: str | None = None )

قسّم متجهًا على طول dim إلى مقاطع متساوية الحجم. بالإضافة إلى ذلك، num_shards_attribute هو حقل إعدادات يُقرأ لمعرفة عدد المتجهات التي يجب تقسيمها إلى مقاطع. مفيد عند دمج عدد عشوائي من المتجهات.

فئة transformers.Concatenate

< >

( dim: int = 0num_shards_attribute: str | None = None )

تجميع المصفوفات على طول dim. بالإضافة إلى ذلك، إذا كان يتم تجميع عدد عشوائي من المصفوفات، فإن num_shards_attribute هو حقل في الإعدادات يُقرأ لمعرفة عدد المصفوفات التي يجب إعادة إنشائها عند استخدام العمليات المعاكسة.

فئة transformers.MergeModulelist

< >

( dim: int = 0 )

دمج قائمة من الموترات (tensors) في موتر واحد على طول البُعد الأول. نعرّف هذا صراحةً لأنه في حالة EP أو TP تريد التأكد من أنك تعرف ما تفعله!

فئة transformers.SplitModulelist

< >

( dim: int = 0 )

عكس MergeModulelist باستخدام أحجام تقسيم صريحة لكل مجموعة.

فئة transformers.PermuteForRope

< >

( subconfig_key: str | None = Nonepermute_layer_names: list[str] | None = Noneinverse: bool = False )

يطبّق التباديل المطلوبة لتحويل أوزان RoPE المركبة إلى تنسيق sin/cos المنفصل.

فئة transformers.VisionFuseAndPermuteForRope

< >

( dim: int = 0permute_layer_names: list[str] | None = Noneinverse: bool = True )

يطبّق الترتيب المطلوب لتحويل أوزان RoPE المركّبة إلى تنسيق sin/cos المنفصل على QKV المدمج. يُكافئ استدعاء PermuteForRope() + Concatenate() لكنه يتيح لنا استدعاء Permute على مجموعة فرعية من الموترات المقسّمة فقط.

ملاحظة: تنطبق هذه العملية على العمود الفقري البصري في النماذج متعددة الوسائط فقط، لأنها تفحص config.vision_config

فئة transformers.VisionUnfuseAndPermuteForRope

< >

( dim: int = 0permute_layer_names: list[str] | None = Noneinverse: bool = False )

يطبّق التباديل المطلوبة لتحويل أوزان RoPE المركبة إلى تنسيق sin/cos المنفصل على QKV المدمج. يُكافئ استدعاء Chunk() + PermuteForRope() لكنه يتيح لنا استدعاء Permute على مجموعة فرعية من الموترات المقسمة فقط.

ملاحظة: تنطبق هذه العملية على العمود الفقري البصري في النماذج متعددة الوسائط فقط، لأنها تفحص config.vision_config

الطبقات

فئة transformers.GradientCheckpointingLayer

< >

( *args**kwargs )

الفئة الأساسية للطبقات التي تستخدم فحص التدرجات.

تمكّن هذه الفئة من تفعيل خاصية فحص التدرّجات (gradient checkpointing) لطبقة. بشكل افتراضي، تكون خاصية فحص التدرّجات معطّلة (gradient_checkpointing = False). عند استدعاء model.set_gradient_checkpointing()، يتم تفعيل خاصية فحص التدرّجات من خلال تعيين gradient_checkpointing = True وتعيين دالة فحص التدرّجات إلى _gradient_checkpointing_func.

مهم:

عند استخدام نقطة التفتيش للتدرجات مع use_reentrant=True، يجب تمرير المدخلات التي تتطلب تدرجات (مثل الحالات المخفية) كحجج موضعية (*args) بدلاً من الحجج المسماة لضمان انتشار التدرجات بشكل صحيح.

مثال:

>>> # Correct - hidden_states passed as positional arg
>>> out = self.layer(hidden_states, attention_mask=attention_mask)

>>> # Incorrect - hidden_states passed as keyword arg
>>> out = self.layer(hidden_states=hidden_states, attention_mask=attention_mask)

دوال الانتباه

فئة transformers.AttentionInterface

< >

( )

كائن يشبه القاموس يتتبع دوال الانتباه المسموح بها. يمكنك بسهولة إضافة دالة انتباه جديدة عبر استدعاء register(). إذا احتاج نموذج إلى تجاوز دالة انتباه موجودة محليًا، مثل sdpa، فعليه أن يُعلن عن نسخة جديدة من هذا الفئة داخل modeling_<model>.py، ويُعلن عنها على تلك النسخة.

تسجيل

< >

( key: strvalue: Callable )

دوال قناع الانتباه

فئة transformers.AttentionMaskInterface

< >

( )

تسجيل

< >

( key: strvalue: Callable )

دوال تضمين الموضع الدوّار

transformers.dynamic_rope_update

< >

( rope_forward )

المعاملات

  • rope_forward (Callable) — مرور الأمامي لتنفيذ RoPE.

دالة مُزيِّنة لتحديث معاملات RoPE في مسار الأمامي، إذا كان النموذج يستخدم RoPE ديناميكيًا (أي تطبيق RoPE قد يعيد حساب تردداته في مسار الأمامي).

وحدات Pytorch المخصصة

فئة transformers.Conv1D

< >

( nfnx )

المعاملات

  • nf (int) — عدد ميزات الإخراج.
  • nx (int) — عدد ميزات الإدخال.

طبقة التمرير أحادية البُعد كما عرّفها رادفورد وآخرون لـ OpenAI GPT (والمستخدمة أيضاً في GPT-2).

يعمل بشكل أساسي كطبقة خطية لكن الأوزان تكون منقولة.

دوال مساعدة في PyTorch

transformers.apply_chunking_to_forward

< >

( forward_fn: Callable[..., torch.Tensor]chunk_size: intchunk_dim: int*input_tensors ) → torch.Tensor

المعاملات

  • forward_fn (Callable[..., torch.Tensor]) — دالة الأمامية للنموذج.
  • chunk_size (int) — حجم الجزء في متجه مقسّم إلى أجزاء: num_chunks = len(input_tensors[0]) / chunk_size.
  • chunk_dim (int) — البُعد الذي يجب تقسيم input_tensors على أساسه.
  • input_tensors (tuple[torch.Tensor]) — مصفوفات الإدخال الخاصة بـ forward_fn التي سيتم تقسيمها

يعيد

torch.Tensor

متجه (Tensor) بنفس الشكل الذي كان سيُنتجه forward_fn لو طُبّق`.

يقسم هذا الدالة input_tensors إلى أجزاء أصغر من تينسور الإدخال بحجم chunk_size على طول البُعد chunk_dim. ثم يطبق طبقة forward_fn على كل جزء بشكل مستقل لتوفير الذاكرة.

إذا كان forward_fn مستقلاً عبر chunk_dim، فإن هذه الدالة ستُنتج نفس النتيجة التي تُنتجها عند تطبيق forward_fn مباشرةً على input_tensors.

أمثلة:

# rename the usual forward() fn to forward_chunk()
def forward_chunk(self, hidden_states):
    hidden_states = self.decoder(hidden_states)
    return hidden_states


# implement a chunked forward function
def forward(self, hidden_states):
    return apply_chunking_to_forward(self.forward_chunk, self.chunk_size_lm_head, self.seq_len_dim, hidden_states)

transformers.pytorch_utils.prune_linear_layer

< >

( layer: nn.Linearindex: torch.LongTensordim: int = 0 ) → torch.nn.Linear

المعاملات

  • layer (torch.nn.Linear) — الطبقة التي سيتم تقليمها.
  • index (torch.LongTensor) — الفهارس التي يجب الإبقاء عليها في الطبقة.
  • dim (int، اختياري، القيمة الافتراضية 0) — البُعد الذي تُحفظ عليه الفهارس.

يعيد

torch.nn.Linear

الطبقة المُقصاة كطبقة جديدة مع requires_grad=True.

اقصّ طبقة خطية للاحتفاظ فقط بالقيم الموجودة في index.

يُستخدم لإزالة الرؤوس.

Update on GitHub