# النماذج

🤗 يوفر Diffusers نماذج مُدرَّبة مسبقًا لخوارزميات شائعة ووحدات لإنشاء أنظمة انتشار مخصصة. الوظيفة الأساسية للنماذج هي إزالة الضوضاء من عينة مدخلات كما تم نمذجتها بواسطة التوزيع \\(p_{\theta}(x_{t-1}|x_{t})\\).

تُبنى جميع النماذج من الفئة الأساسية [ModelMixin](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin) وهي [`torch.nn.Module`](https://pytorch.org/docs/stable/generated/torch.nn.Module.html) توفر الوظائف الأساسية لحفظ النماذج وتحميلها، محليًا ومن Hugging Face Hub.

## ModelMixin[[diffusers.ModelMixin]]

#### diffusers.ModelMixin[[diffusers.ModelMixin]]

```python
diffusers.ModelMixin()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L240)

الفئة الأساسية لجميع النماذج.

يتولى [ModelMixin](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin) مهمة تخزين إعدادات النموذج، ويوفر طرقًا لتحميل النماذج وتنزيلها وحفظها.

- **config_name** (`str`) -- اسم الملف الذي يُحفظ به النموذج عند استدعاء [save_pretrained()](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin.save_pretrained).

#### compile_repeated_blocks[[diffusers.ModelMixin.compile_repeated_blocks]]

```python
compile_repeated_blocks(*args, **kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L1646)

يُجمّع *فقط* الوحدات الفرعية المتكررة بشكل متكرر في النموذج (مثل طبقات Transformer) بدلاً من تجميع النموذج بأكمله. يمكن لهذه التقنية—التي تُعرف غالباً بـ**التجميع الإقليمي** (انظر وصفة PyTorch https://docs.pytorch.org/tutorials/recipes/regional_compilation.html) أن تقلل زمن التجميع من البداية إلى النهاية بشكل كبير، مع الحفاظ على تسريع وقت التشغيل الذي تتوقعه من `torch.compile` الكامل.

يتم اكتشاف مجموعة الوحدات الفرعية التي يجب تجميعها من خلال وجود خاصية **`_repeated_blocks`** في تعريف النموذج. عرّف هذه الخاصية على فئة النموذج الفرعية الخاصة بك على أنها قائمة/مجموعة من أسماء الفئات (نصوص). سيتم تجميع كل وحدة يطابق اسم فئتها أحد هذه الأسماء.

بمجرد اكتشافها، يُجمَّع كل وحدة فرعية مطابقة عن طريق استدعاء `submodule.compile(*args, **kwargs)`. أي معاملات موضعية أو معاملات مُسمّاة تُمرّرها إلى `compile_repeated_blocks` تُمرَّر كما هي إلى `torch.compile`.

#### cuda[[diffusers.ModelMixin.cuda]]

```python
cuda(*args, **kwargs)
```

قيمة وهمية لمسار منقّط (مثل `torch.float32`): سلاسل الوصول إلى السمات، والاستدعاءات تتصرف كمُزيّنات (decorators) مرّرة، و`repr` هو المسار المنقّط، وعند استخدامه كصنف أساسي يُستبدل بصنف أساسي من نوع `type` عادي (بموجب `__mro_entries__` في PEP 560)، بحيث تحتفظ الصنوف الفرعية الحقيقية بفئة ميتا (metaclass) عادية، وتقرأ `inspect.signature` دالة `__init__` الحقيقية الخاصة بها بدلاً من تلك الوهمية.

#### إلغاء التكميم[[diffusers.ModelMixin.dequantize]]

```python
dequantize()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L890)

قد يلزم إلغاء تكميم النموذج في حال تم تكميمه بطريقة تكميم تدعم إلغاء التكميم.

#### disable_gradient_checkpointing[[diffusers.ModelMixin.disable_gradient_checkpointing]]

```python
disable_gradient_checkpointing()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L323)

يعطّل نقطة التفتيش للتدرجات (gradients) للنموذج الحالي (قد يُشار إليها باسم *نقطة التفتيش للتفعيلات* أو *نقاط تفتيش التفعيلات* في أطر عمل أخرى).

#### disable_npu_flash_attention[[diffusers.ModelMixin.disable_npu_flash_attention]]

```python
disable_npu_flash_attention()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L354)

تعطيل npu flash attention من torch_npu

#### disable_xformers_memory_efficient_attention[[diffusers.ModelMixin.disable_xformers_memory_efficient_attention]]

```python
disable_xformers_memory_efficient_attention()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L437)

تعطيل الانتباه الموفّر للذاكرة من [xFormers](https://facebookresearch.github.io/xformers/).

#### disable_xla_flash_attention[[diffusers.ModelMixin.disable_xla_flash_attention]]

```python
disable_xla_flash_attention()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L384)

تعطيل نواة flash attention pallals لـ torch_xla.

#### enable_gradient_checkpointing[[diffusers.ModelMixin.enable_gradient_checkpointing]]

```python
enable_gradient_checkpointing(gradient_checkpointing_func: typing.Optional[typing.Callable] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L294)

**المعاملات:**

gradient_checkpointing_func (`Callable`، *اختياري*) : الدالة المستخدمة للتدقيق التدرّجي (gradient checkpointing). إذا كانت `None`، تُستخدم دالة التدقيق التدرّجي الافتراضية في PyTorch (`torch.utils.checkpoint.checkpoint`).

يُفعّل فحص التدرّجات (gradient checkpointing) للنموذج الحالي (قد يُشار إليه باسم *فحص التفعيلات* أو *فحص التفعيلات* في أطر عمل أخرى).

#### enable_group_offload[[diffusers.ModelMixin.enable_group_offload]]

```python
enable_group_offload(onload_device: device, offload_device: device = torch.device(), offload_type: str = 'block_level', num_blocks_per_group: int | None = None, non_blocking: bool = False, use_stream: bool = False, record_stream: bool = False, low_cpu_mem_usage = False, offload_to_disk_path: str | None = None, block_modules: str | None = None, exclude_kwargs: str | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L528)

يُفعّل تفريغ المجموعات للنموذج الحالي.

راجع [apply_group_offloading()](/docs/diffusers/v0.43.0/ar/api/utilities#diffusers.hooks.apply_group_offloading) لمزيد من المعلومات.

مثال:

```python
>>> from diffusers import CogVideoXTransformer3DModel

>>> transformer = CogVideoXTransformer3DModel.from_pretrained(
...     "THUDM/CogVideoX-5b", subfolder="transformer", torch_dtype=torch.bfloat16
... )

>>> transformer.enable_group_offload(
...     onload_device=torch.device("cuda"),
...     offload_device=torch.device("cpu"),
...     offload_type="leaf_level",
...     use_stream=True,
... )
```

#### enable_layerwise_casting[[diffusers.ModelMixin.enable_layerwise_casting]]

```python
enable_layerwise_casting(storage_dtype: dtype = torch.float8_e4m3fn, compute_dtype: typing.Optional[torch.dtype] = None, skip_modules_pattern: tuple[str, ...] | None = None, skip_modules_classes: tuple[typing.Type[torch.nn.Module], ...] | None = None, non_blocking: bool = False)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L443)

**المعاملات:**

storage_dtype (`torch.dtype`) : نوع البيانات الذي يجب تحويل النموذج إليه للتخزين.

compute_dtype (`torch.dtype`) : نوع البيانات الذي يجب تحويل أوزان النموذج إليه أثناء المرور الأمامي.

skip_modules_pattern (`tuple[str, ...]`، *اختياري*) : قائمة أنماط لمطابقة أسماء الوحدات التي يجب تجاوزها أثناء عملية الصب على مستوى الطبقات. إذا تم ضبطه على `None`، تُستخدم أنماط التجاوز الافتراضية لتجاهل بعض الطبقات الداخلية للوحدات وطبقات PEFT.

skip_modules_classes (`tuple[Type[torch.nn.Module], ...]`، *اختياري*) : قائمة بفئات الوحدات التي يجب تجاوزها أثناء عملية الصب على مستوى الطبقات.

non_blocking (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت `True`، فإن عمليات تحويل الأوزان غير حاصِرة.

يُفعّل الإقحام على مستوى الطبقات للنموذج الحالي.

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

بشكل افتراضي، تُعيّن معظم النماذج في diffusers الخاصية `_skip_layerwise_casting_patterns` لتجاهل طبقات تضمين البقع (patch embedding) وتضمين الموضع (positional embedding) وطبقات التطبيع (normalization). والسبب في ذلك أن هذه الطبقات غالباً ما تكون حساسة للدقة من حيث الجودة. إذا كنت ترغب في تغيير هذا السلوك، يمكنك تعيين الخاصية `_skip_layerwise_casting_patterns` إلى `None`، أو استدعاء [apply_layerwise_casting()](/docs/diffusers/v0.43.0/ar/api/utilities#diffusers.hooks.apply_layerwise_casting) بحجج مخصصة.

مثال:

باستخدام [enable_layerwise_casting()](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin.enable_layerwise_casting):

```python
>>> from diffusers import CogVideoXTransformer3DModel

>>> transformer = CogVideoXTransformer3DModel.from_pretrained(
...     "THUDM/CogVideoX-5b", subfolder="transformer", torch_dtype=torch.bfloat16
... )

>>> # Enable layerwise casting via the model, which ignores certain modules by default
>>> transformer.enable_layerwise_casting(storage_dtype=torch.float8_e4m3fn, compute_dtype=torch.bfloat16)
```

#### enable_npu_flash_attention[[diffusers.ModelMixin.enable_npu_flash_attention]]

```python
enable_npu_flash_attention()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L347)

تفعيل npu flash attention من torch_npu

#### enable_xformers_memory_efficient_attention[[diffusers.ModelMixin.enable_xformers_memory_efficient_attention]]

```python
enable_xformers_memory_efficient_attention(attention_op: typing.Optional[typing.Callable] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L405)

**المعاملات:**

attention_op (`Callable`، *اختياري*) : تجاوز المشغّل الافتراضي `None` لاستخدامه كحجة `op` في دالة [`memory_efficient_attention()`](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.memory_efficient_attention) الخاصة بـ xFormers.

تفعيل الانتباه الموفّر للذاكرة من [xFormers](https://facebookresearch.github.io/xformers/).

عند تمكين هذا الخيار، يجب أن تلاحظ انخفاضًا في استخدام ذاكرة وحدة معالجة الرسوميات (GPU) وتسريعًا محتملًا أثناء الاستدلال. لا يُضمن حدوث تسريع أثناء التدريب.

> [!WARNING] > ⚠️ عند تفعيل كل من الانتباه الموفّر للذاكرة والانتباه المقطّع، يكون الانتباه الموفّر
تتمتع attention بأولوية أعلى.

أمثلة:

```py
>>> import torch
>>> from diffusers import UNet2DConditionModel
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> model = UNet2DConditionModel.from_pretrained(
...     "stabilityai/stable-diffusion-2-1", subfolder="unet", torch_dtype=torch.float16
... )
>>> model = model.to("cuda")
>>> model.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
```

#### enable_xla_flash_attention[[diffusers.ModelMixin.enable_xla_flash_attention]]

```python
enable_xla_flash_attention(partition_spec: typing.Optional[typing.Callable] = None, **kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L378)

تفعيل نواة flash attention pallals لـ torch_xla.

#### from_pretrained[[diffusers.ModelMixin.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None, **kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L902)

**المعاملات:**

pretrained_model_name_or_path (`str` أو `os.PathLike`، *اختياري*) : يمكن أن يكون أحد ما يلي: - نص، وهو *معرف النموذج* (مثل `google/ddpm-celebahq-256`) لنموذج مُدرَّب مسبقًا مستضاف على Hub. - مسار إلى *مجلد* (مثل `./my_model_directory`) يحتوي على أوزان النموذج المحفوظة باستخدام [save_pretrained()](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin.save_pretrained).

cache_dir (`str | os.PathLike`، *اختياري*) : مسار إلى مجلد حيث تُخزَّن مؤقتًا إعدادات النموذج المُسبق التحميل المُحمَّل إذا لم يُستخدم التخزين المؤقت القياسي.

dtype (`torch.dtype`، *اختياري*) : تجاوز `torch.dtype` الافتراضي وتحميل النموذج بنوع بيانات آخر.

force_download (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا إذا كانت موجودة.

proxies (`dict[str, str]`، *اختياري*) : قاموس لخوادم الوكيل (proxy servers) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال، `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`. تُستخدم هذه الوكلاء في كل طلب.

output_loading_info (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع قاموس يحتوي على المفاتيح المفقودة والمفاتيح غير المتوقعة ورسائل الأخطاء أم لا.

local_files_only(`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تحميل أوزان النموذج وملفات الإعداد المحلية فقط أم لا. إذا تم ضبطه على `True`، فلن يتم تنزيل النموذج من Hub.

token (`str` أو *bool*، *اختياري*) : الرمز الذي يُستخدم كتوكن مصادقة HTTP bearer للملفات البعيدة. إذا كان `True`، يُستخدم التوكن المولّد من `diffusers-cli login` (المخزَّن في `~/.huggingface`).

revision (`str`، *اختياري*، القيمة الافتراضية `"main"`) : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن، أو أي معرّف مسموح به بواسطة Git.

subfolder (`str`، *اختياري*، القيمة الافتراضية `""`) : موقع المجلد الفرعي لملف النموذج داخل مستودع نموذج أكبر على Hub أو محليًا.

mirror (`str`، *اختياري*) : مصدر مرآة لحل مشاكل إمكانية الوصول إذا كنت تقوم بتنزيل نموذج في الصين. نحن لا نضمن حداثة المصدر أو أمانه، وينبغي لك الرجوع إلى موقع المرآة لمزيد من المعلومات.

device_map (`int | str | torch.device` أو `dict[str, int | str | torch.device]`، *اختياري*) : خريطة تحدد المكان الذي يجب أن يذهب إليه كل وحدة فرعية. لا حاجة لتحديدها لكل اسم معامل/مخزن مؤقت؛ فبمجرد أن يكون اسم وحدة معينة داخلها، سيتم إرسال كل وحدة فرعية منها إلى نفس الجهاز. القيمة الافتراضية هي `None`، مما يعني أن النموذج سيُحمَّل على وحدة المعالجة المركزية (CPU). أمثلة: ```py >>> from diffusers import AutoModel >>> import torch  >>> # This works. >>> model = AutoModel.from_pretrained( ...     "stabilityai/stable-diffusion-xl-base-1.0", subfolder="unet", device_map="cuda" ... ) >>> # This also works (integer accelerator device ID). >>> model = AutoModel.from_pretrained( ...     "stabilityai/stable-diffusion-xl-base-1.0", subfolder="unet", device_map=0 ... ) >>> # Specifying a supported offloading strategy like "auto" also works. >>> model = AutoModel.from_pretrained( ...     "stabilityai/stable-diffusion-xl-base-1.0", subfolder="unet", device_map="auto" ... ) >>> # Specifying a dictionary as `device_map` also works. >>> model = AutoModel.from_pretrained( ...     "stabilityai/stable-diffusion-xl-base-1.0", ...     subfolder="unet", ...     device_map={"": torch.device("cuda")}, ... ) ``` اضبط `device_map="auto"` ليحسب 🤗 Accelerate تلقائيًا `device_map` الأكثر تحسينًا. لمزيد من المعلومات حول كل خيار، راجع [تصميم خريطة الأجهزة](https://huggingface.co/docs/accelerate/en/concept_guides/big_model_inference#the-devicemap). يمكنك أيضًا الرجوع إلى [التوثيق الخاص بـ Diffusers](https://huggingface.co/docs/diffusers/main/en/optimization/device_map) للحصول على أمثلة أكثر تحديدًا.

max_memory (`Dict`، *اختياري*) : قاموس معرّف الجهاز للذاكرة القصوى. إذا لم يتم ضبطه، فسيتم افتراضياً استخدام أقصى ذاكرة متاحة لكل وحدة معالجة رسومية (GPU) والذاكرة العشوائية المتاحة للمعالج المركزي (CPU).

offload_folder (`str` أو `os.PathLike`، *اختياري*) : المسار لتفريغ الأوزان إذا احتوى `device_map` على القيمة `"disk"`.

offload_state_dict (`bool`, *اختياري*) : إذا كان `True`، يتم نقل حالة المعالج المركزي (CPU state dict) مؤقتًا إلى القرص الصلب لتجنب نفاد ذاكرة المعالج المركزي (CPU RAM) إذا لم يتسع وزن حالة المعالج المركزي (CPU state dict) بالإضافة إلى أكبر شريحة (shard) من نقطة الحفظ (checkpoint). القيمة الافتراضية هي `True` عند وجود أي نقل إلى القرص (disk offload).

low_cpu_mem_usage (`bool`، *اختياري*، القيمة الافتراضية هي `True` إذا كانت إصدار torch >= 1.9.0 وإلا `False`) : تسريع تحميل النموذج من خلال تحميل الأوزان المُسبقة التدريب فقط دون تهيئة الأوزان. كما يحاول هذا الخيار عدم استخدام أكثر من 1x حجم النموذج في ذاكرة المعالج المركزي (بما في ذلك الذروة) أثناء تحميل النموذج. مدعوم فقط لـ PyTorch >= 1.9.0. إذا كنت تستخدم إصدارًا أقدم من PyTorch، فإن تعيين هذا الحجة إلى `True` سيؤدي إلى رفع خطأ.

variant (`str`، *اختياري*) : تحميل الأوزان من ملف `variant` محدد مثل `"fp16"` أو `"ema"`.

use_safetensors (`bool`، *اختياري*، القيمة الافتراضية `None`) : إذا تم تعيينه إلى `None`، يتم تنزيل أوزان `safetensors` إذا كانت متاحة **و** إذا كانت مكتبة `safetensors` مثبتة. إذا تم تعيينه إلى `True`، يتم تحميل النموذج قسريًا من أوزان `safetensors`. إذا تم تعيينه إلى `False`، لا يتم تحميل أوزان `safetensors`.

disable_mmap ('bool', *اختياري*، القيمة الافتراضية هي 'False') : ما إذا كان سيتم تعطيل mmap عند تحميل نموذج Safetensors. يمكن أن يؤدي هذا الخيار إلى أداء أفضل عندما يكون النموذج على وحدة تخزين شبكية أو قرص صلب، حيث قد لا تتعامل هذه الوسائط بشكل جيد مع طبيعة عمليات البحث (seek) التي يتطلبها mmap.

use_flashpack (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا تم ضبطه على `True`، يتم تحميل النموذج من أوزان `flashpack`.

flashpack_kwargs(`dict[str, Any]`، *اختياري*، القيمة الافتراضية `{}`) : معاملات إضافية تُمرَّر إلى [`flashpack.deserialization.assign_from_file`](https://github.com/fal-ai/flashpack/blob/f1aa91c5cd9532a3dbf5bcc707ab9b01c274b76c/src/flashpack/deserialization.py#L408-L422)

أنشئ نموذج PyTorch مُدرَّب مسبقًا من تكوين نموذج مُدرَّب مسبقًا.

يُضبط النموذج على وضع التقييم - `model.eval()` - افتراضيًا، وتُعطَّل وحدات الإسقاط العشوائي (dropout). لتدريب النموذج، أعد ضبطه على وضع التدريب باستخدام `model.train()`.

> [!TIP] > لاستخدام النماذج الخاصة أو [النماذج المُقيَّدة](https://huggingface.co/docs/hub/models-gated#gated-models)، سجّل الدخول
باستخدام `hf > auth login`. يمكنك أيضًا تفعيل وضع ["offline-mode"](https://huggingface.co/diffusers/installation.html#offline-mode) الخاص لاستخدام هذه الطريقة في بيئة محمية بجدار ناري.

مثال:

```py
from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", subfolder="unet")
```

إذا ظهرت لك رسالة الخطأ أدناه، فأنت بحاجة إلى ضبط الأوزان لمهمتك التالية:

```bash
Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
```

#### get_memory_footprint[[diffusers.ModelMixin.get_memory_footprint]]

```python
get_memory_footprint(return_buffers = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L2154)

**المعاملات:**

return_buffers (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع حجم تينسورات المخزن المؤقت في حساب البصمة الذاكرة. المخازن المؤقتة هي تينسورات لا تتطلب تدرجات ولم تُسجَّل كمعاملات. على سبيل المثال، المتوسط والانحراف المعياري في طبقات تطبيع الدفعة. يرجى الاطلاع على: https://discuss.pytorch.org/t/what-pytorch-means-by-buffers/120266/2

احصل على بصمة الذاكرة لنموذج. سيعيد هذا البصمة الذاكرة للنموذج الحالي بالبايت. مفيد لمعايرة بصمة الذاكرة للنموذج الحالي وتصميم بعض الاختبارات. الحل مستوحى من نقاشات PyTorch: https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2

#### num_parameters[[diffusers.ModelMixin.num_parameters]]

```python
num_parameters(only_trainable: bool = False, exclude_embeddings: bool = False)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L2090)

**المعاملات:**

only_trainable (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إرجاع عدد المعاملات القابلة للتدريب فقط.

exclude_embeddings (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إرجاع عدد معاملات غير التضمين فقط.

**يعيد:** `int`

عدد المعاملات.

احصل على عدد (المعاملات القابلة للتدريب أو غير التضمينية) في الوحدة.

مثال:

```py
from diffusers import UNet2DConditionModel

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
unet = UNet2DConditionModel.from_pretrained(model_id, subfolder="unet")
unet.num_parameters(only_trainable=True)
859520964
```

#### reset_attention_backend[[diffusers.ModelMixin.reset_attention_backend]]

```python
reset_attention_backend()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L663)

يعيد تعيين واجهة الانتباه الخلفية للنموذج. ستستخدم الاستدعاءات اللاحقة لـ`forward` الافتراضي البيئي، إذا كان مضبوطاً، أو الانتباه الأصلي المقيّم لنقطة الضرب في torch.

#### save_pretrained[[diffusers.ModelMixin.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, is_main_process: bool = True, save_function: typing.Optional[typing.Callable] = None, safe_serialization: bool = True, variant: str | None = None, max_shard_size: int | str = '10GB', push_to_hub: bool = False, use_flashpack: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L682)

**المعاملات:**

save_directory (`str` أو `os.PathLike`) : المجلد الذي سيتم حفظ النموذج وملف إعداده فيه. سيتم إنشاؤه إذا لم يكن موجودًا.

is_main_process (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان العملية التي تستدعي هذا هي العملية الرئيسية أم لا. مفيد أثناء التدريب الموزع عندما تحتاج إلى استدعاء هذه الدالة على جميع العمليات. في هذه الحالة، اضبط `is_main_process=True` على العملية الرئيسية فقط لتجنب حالات السباق.

save_function (`Callable`) : الدالة المستخدمة لحفظ قاموس الحالة. مفيدة أثناء التدريب الموزع عندما تحتاج إلى استبدال `torch.save` بطريقة أخرى. يمكن ضبطها باستخدام متغير البيئة `DIFFUSERS_SAVE_MODE`.

safe_serialization (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم حفظ النموذج باستخدام `safetensors` أو بالطريقة التقليدية الخاصة بـ PyTorch باستخدام `pickle`.

variant (`str`، *اختياري*) : إذا تم تحديده، تُحفظ الأوزان بالتنسيق `pytorch_model.<variant>.bin`.

max_shard_size (`int` أو `str`، القيمة الافتراضية هي `"10GB"`) : الحد الأقصى لحجم نقطة التفتيش قبل تقسيمها إلى أجزاء. ستكون نقاط التفتيش المقسمة بعد ذلك كل منها بحجم أقل من هذا الحجم. إذا تم التعبير عنها كنص، فيجب أن تتكون من أرقام تليها وحدة (مثل `"5GB"`). إذا تم التعبير عنها كعدد صحيح، فإن الوحدة هي البايت. لاحظ أن هذا الحد الأقصى سيُخفَّض بعد فترة زمنية معينة (بدءًا من أكتوبر 2024) للسماح للمستخدمين بالترقية إلى أحدث إصدار من `diffusers`. وذلك لإرساء حجم افتراضي مشترك لهذا الحجة عبر مكتبات مختلفة في منظومة Hugging Face (مثل `transformers`، و`accelerate`).

push_to_hub (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم رفع نموذجك إلى Hugging Face Hub بعد حفظه. يمكنك تحديد المستودع الذي تريد الرفع إليه باستخدام `repo_id` (سيكون الافتراضي هو اسم `save_directory` ضمن نطاقك).

kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية تُمرَّر إلى طريقة [push_to_hub()](/docs/diffusers/v0.43.0/ar/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub).

احفظ النموذج وملف إعداده في مجلد بحيث يمكن إعادة تحميله باستخدام طريقة الفئة [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin.from_pretrained).

#### set_attention_backend[[diffusers.ModelMixin.set_attention_backend]]

```python
set_attention_backend(backend: str)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L604)

**المعاملات:**

backend (`str`) : اسم الخلفية (backend) التي سيتم تعيينها. يجب أن يكون أحد الخلفيات المتاحة المعرّفة في `AttentionBackendName`. يمكن العثور على الخلفيات المتاحة في `diffusers.attention_dispatch.AttentionBackendName`. الافتراضي هو استخدام الانتباه الأصلي المقيّم بنقطة الضرب (scaled dot product attention) من torch كخلفية.

اضبط واجهة الانتباه للنموذج.

#### set_use_npu_flash_attention[[diffusers.ModelMixin.set_use_npu_flash_attention]]

```python
set_use_npu_flash_attention(valid: bool)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_utils.py#L331)

اضبط المفتاح الخاص بـ npu flash attention.

#### إلى[[diffusers.ModelMixin.to]]

```python
to(*args, **kwargs)
```

قيمة وهمية لمسار منقّط (مثل `torch.float32`): سلاسل الوصول إلى السمات، والاستدعاءات تتصرف كمُزيّنات (decorators) مرّرة، و`repr` هو المسار المنقّط، وعند استخدامه كصنف أساسي يُستبدل بصنف أساسي من نوع `type` عادي (بموجب `__mro_entries__` في PEP 560)، بحيث تحتفظ الصنوف الفرعية الحقيقية بفئة ميتا (metaclass) عادية، وتقرأ `inspect.signature` دالة `__init__` الحقيقية الخاصة بها بدلاً من تلك الوهمية.

## PushToHubMixin[[diffusers.utils.PushToHubMixin]]

#### diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]

```python
diffusers.utils.PushToHubMixin()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/utils/hub_utils.py#L491)

مزيج (Mixin) لدفع نموذج أو مجدول أو خط أنابيب إلى Hugging Face Hub.

#### push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/utils/hub_utils.py#L526)

**المعاملات:**

repo_id (`str`) : اسم المستودع الذي تريد دفع ملفات النموذج أو المجدول أو خط الأنابيب إليه. يجب أن يحتوي على اسم مؤسستك عند الدفع إلى مؤسسة. يمكن أن يكون `repo_id` أيضًا مسارًا إلى مجلد محلي.

commit_message (`str`، *اختياري*) : الرسالة التي سيتم الالتزام بها أثناء الدفع. الافتراضي هو `"Upload {object}"`.

private (`bool`، *اختياري*) : ما إذا كان سيتم جعل المستودع خاصًا. إذا كان `None` (الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي الخاص بالمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل.

token (`str`، *اختياري*) : الرمز الرمزي (التوكن) المستخدم كترخيص HTTP bearer للملفات البعيدة. الرمز الرمزي الذي يتم إنشاؤه عند تشغيل `hf auth login` (يُخزَّن في `~/.huggingface`).

create_pr (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم إنشاء طلب سحب (PR) مع الملفات المرفوعة أم الالتزام مباشرة.

safe_serialization (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم تحويل أوزان النموذج إلى صيغة `safetensors` أم لا.

variant (`str`، *اختياري*) : إذا تم تحديده، تُحفظ الأوزان بالتنسيق `pytorch_model.<variant>.bin`.

ارفع ملفات النموذج أو المجدول أو خط الأنابيب إلى 🤗 Hugging Face Hub.

أمثلة:

```python
from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")

# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")

# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")
```

