# خطوط الأنابيب

توفّر خطوط الأنابيب طريقة بسيطة لتشغيل نماذج الانتشار المتقدمة في الاستدلال عن طريق تجميع جميع المكونات اللازمة (نماذج مدرّبة بشكل مستقل، ومجدولات، ومعالجات) في فئة واحدة شاملة من البداية إلى النهاية. خطوط الأنابيب مرنة ويمكن تكييفها لاستخدام مجدولات مختلفة أو حتى مكونات نماذج مختلفة.

تُبنى جميع خطوط الأنابيب من الفئة الأساسية [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline) التي توفر الوظائف الأساسية لتحميل جميع المكونات وتنزيلها وحفظها. يتم اكتشاف أنواع خطوط الأنابيب المحددة (مثل [StableDiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline)) التي يتم تحميلها باستخدام [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) تلقائيًا، وتُحمَّل مكونات خط الأنابيب وتُمرَّر إلى دالة `__init__` الخاصة بخط الأنابيب.

> [!WARNING]
> لا ينبغي استخدام فئة [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline) للتدريب. تُدرَّب المكونات الفردية (مثل [UNet2DModel](/docs/diffusers/v0.43.0/ar/api/models/unet2d#diffusers.UNet2DModel) و [UNet2DConditionModel](/docs/diffusers/v0.43.0/ar/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) في خطوط أنابيب الانتشار عادةً بشكل مستقل، لذا نقترح العمل معها مباشرةً بدلاً من ذلك.
>
> 
>
> لا توفر خطوط الأنابيب أي وظيفة للتدريب. ستلاحظ أن autograd في PyTorch معطّل من خلال تزيين طريقة `__call__()` بمُزيّن [`torch.no_grad`](https://pytorch.org/docs/stable/generated/torch.no_grad.html) لأن خطوط الأنابيب لا ينبغي استخدامها للتدريب. إذا كنت مهتمًا بالتدريب، فيرجى الاطلاع على أدلة [التدريب](../../training/overview) بدلاً من ذلك!

Use **API > Pipelines** in the sidebar to browse all pipeline references by modality. For task-oriented workflows, start with the [Quickstart](../../quicktour) or a guide such as [text-to-image](../../using-diffusers/conditional_image_generation), [image-to-image](../../using-diffusers/img2img), [inpainting](../../using-diffusers/inpaint), or [video generation](../../using-diffusers/text-img2vid).

## DiffusionPipeline[[diffusers.DiffusionPipeline]]

#### diffusers.DiffusionPipeline[[diffusers.DiffusionPipeline]]

```python
diffusers.DiffusionPipeline()
```

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

الفئة الأساسية لجميع خطوط الأنابيب.

تُخزّن [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline) جميع المكونات (النماذج، والمجدولون، والمعالجات) لخطوط أنابيب الانتشار، وتوفر طرقًا لتحميل النماذج وتنزيلها وحفظها. كما تتضمن طرقًا لـ:

- نقل جميع وحدات PyTorch إلى الجهاز الذي تختاره
- تفعيل/تعطيل شريط التقدم لتكرار إزالة الضوضاء

خصائص الفئة:

- **config_name** (`str`) -- اسم ملف الإعداد الذي يخزّن أسماء الفئات والوحدات لجميع مكوّنات خط أنابيب الانتشار.
- **_optional_components** (`List[str]`) -- قائمة بجميع المكونات الاختيارية التي لا يجب تمريرها إلى خط الأنابيب حتى يعمل (يجب أن تُستبدل بواسطة الفئات الفرعية).

#### __call__[[diffusers.DiffusionPipeline.__call__]]

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

استدعاء self كدالة.

#### device[[diffusers.DiffusionPipeline.device]]

```python
device()
```

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

**يعيد:** `torch.device`

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

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

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

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

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

dtype (`torch.dtype`، *اختياري*) : يعيد خط أنابيب مع [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype) المحدد

device (`torch.Device`، *اختياري*) : يعيد خط أنابيب مع [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device) المحدد

silence_dtype_warnings (`str`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب تجاهل التحذيرات إذا لم يكن `dtype` المستهدف متوافقًا مع `device` المستهدف.

**يعيد:** [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline)

تم تحويل خط الأنابيب إلى `dtype` و/أو `dtype` المحدد.

يُنفّذ تحويل نوع البيانات (dtype) و/أو الجهاز (device) الخاص بـ Pipeline. يتم استنتاج torch.dtype وtorch.device من معاملات `self.to(*args, **kwargs).`

> [!TIP] > إذا كان خط الأنابيب يحتوي بالفعل على torch.dtype وtorch.device الصحيحين، فإنه يُعاد كما هو.
وإلا، > فإن خط الأنابيب المُعاد هو نسخة من self مع torch.dtype وtorch.device المطلوبين.

إليك طرق استدعاء `to`:

- `to(dtype, silence_dtype_warnings=False) → DiffusionPipeline` لإرجاع خط أنابيب بالـ [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype) المحدد
- `to(device, silence_dtype_warnings=False) → DiffusionPipeline` لإرجاع خط أنابيب مع [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device) المحدد
- `to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline` لإرجاع خط أنابيب مع [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device) و [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype) المحددين

#### المكونات[[diffusers.DiffusionPipeline.components]]

```python
components()
```

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

يمكن أن يكون الخاصية `self.components` مفيدةً لتشغيل خطوط أنابيب مختلفة بنفس الأوزان والإعدادات دون إعادة تخصيص ذاكرة إضافية.

Returns (`dict`): قاموس يحتوي على جميع الوحدات اللازمة لتهيئة خط الأنابيب.

أمثلة:

```py
>>> from diffusers import (
...     StableDiffusionPipeline,
...     StableDiffusionImg2ImgPipeline,
...     StableDiffusionInpaintPipeline,
... )

>>> text2img = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
>>> inpaint = StableDiffusionInpaintPipeline(**text2img.components)
```

#### disable_attention_slicing[[diffusers.DiffusionPipeline.disable_attention_slicing]]

```python
disable_attention_slicing()
```

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

تعطيل حساب الانتباه المقطّع. إذا كان `enable_attention_slicing` قد تم استدعاؤه سابقًا، يتم حساب الانتباه في خطوة واحدة.

#### disable_xformers_memory_efficient_attention[[diffusers.DiffusionPipeline.disable_xformers_memory_efficient_attention]]

```python
disable_xformers_memory_efficient_attention()
```

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

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

#### تنزيل[[diffusers.DiffusionPipeline.download]]

```python
download(pretrained_model_name, **kwargs)
```

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

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

pretrained_model_name (`str` أو `os.PathLike`، *اختياري*) : نص، أو *معرّف المستودع* (مثل `CompVis/ldm-text2im-large-256`) لخط أنابيب مُدرَّب مسبقًا مستضاف على Hub.

custom_pipeline (`str`, *اختياري*) : يمكن أن يكون أحد ما يلي:  - نص، وهو *معرّف المستودع* (مثل `CompVis/ldm-text2im-large-256`) لخط أنابيب مُدرَّب مسبقًا مستضاف على Hub. يجب أن يحتوي المستودع على ملف يُسمى `pipeline.py` يحدد خط الأنابيب المخصص.  - نص، وهو *اسم الملف* لخط أنابيب مجتمعي مستضاف على GitHub تحت [Community](https://github.com/huggingface/diffusers/tree/main/examples/community). يجب أن تتطابق أسماء الملفات الصالحة مع اسم الملف وليس مع سكربت خط الأنابيب (`clip_guided_stable_diffusion` بدلاً من `clip_guided_stable_diffusion.py`). يتم دائمًا تحميل خطوط الأنابيب المجتمعية من فرع `main` الحالي على GitHub.  - مسار إلى *مجلد* (`./my_pipeline_directory/`) يحتوي على خط أنابيب مخصص. يجب أن يحتوي المجلد على ملف يُسمى `pipeline.py` يحدد خط الأنابيب المخصص.  > [!WARNING] > 🧪 هذه ميزة تجريبية وقد تتغير في المستقبل.  لمزيد من المعلومات حول كيفية تحميل خطوط الأنابيب المخصصة وإنشائها، راجع [كيفية المساهمة بخط أنابيب مجتمعي](https://huggingface.co/docs/diffusers/main/en/using-diffusers/contribute_pipeline).

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.

custom_revision (`str`، *اختياري*، القيمة الافتراضية `"main"`) : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف commit مشابه لـ`revision` عند تحميل خط أنابيب مخصص من Hub. يمكن أن يكون إصدار 🤗 Diffusers عند تحميل خط أنابيب مخصص من GitHub، وإلا فإن القيمة الافتراضية تكون `"main"` عند التحميل من Hub.

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

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

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

use_onnx (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا تم ضبطه على `True`، فسيتم تنزيل أوزان ONNX دائمًا إذا كانت موجودة. إذا تم ضبطه على `False`، فلن يتم تنزيل أوزان ONNX أبدًا. افتراضيًا، تكون القيمة الافتراضية لـ`use_onnx` هي سمة الفئة `_is_onnx` وهي `False` لخطوط الأنابيب غير ONNX و`True` لخطوط الأنابيب ONNX. تشمل أوزان ONNX كلا الملفين المنتهي بـ`.onnx` و`.pb`.

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

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

**يعيد:** `os.PathLike`

مسار إلى خط المعالجة الذي تم تنزيله.

تنزيل خط أنابيب انتشار PyTorch وتخزينه مؤقتاً من أوزان خط أنابيب مُسبقة التدريب.

> [!TIP] > لاستخدام النماذج الخاصة أو [النماذج المُقيَّدة](https://huggingface.co/docs/hub/models-gated#gated-models)، سجّل الدخول
مع hf > auth login

#### enable_attention_slicing[[diffusers.DiffusionPipeline.enable_attention_slicing]]

```python
enable_attention_slicing(slice_size: str | int = 'auto')
```

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

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

slice_size (`str` أو `int`، *اختياري*، القيمة الافتراضية `"auto"`) : عند تعيين `"auto"`، يُنصَّف المدخل إلى رؤوس الانتباه، بحيث يُحسب الانتباه في خطوتين. إذا كانت القيمة `"max"`، فسيتم توفير أقصى قدر من الذاكرة من خلال تشغيل شريحة واحدة في كل مرة. إذا تم تقديم رقم، فسيتم استخدام عدد من الشرائح يساوي `attention_head_dim // slice_size`. في هذه الحالة، يجب أن يكون `attention_head_dim` مضاعفًا لـ `slice_size`.

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

> [!WARNING] > ⚠️ لا تفعّل تقطيع الانتباه إذا كنت تستخدم بالفعل `scaled_dot_product_attention` (SDPA)
من PyTorch > 2.0 أو xFormers. عمليات حساب الانتباه هذه فعّالة جداً من حيث الذاكرة، لذا لن تحتاج إلى تفعيل > هذه الوظيفة. إذا قمت بتفعيل تقطيع الانتباه مع SDPA أو xFormers، فقد يؤدي ذلك إلى تباطؤات جسيمة!

أمثلة:

```py
>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]
```

#### enable_group_offload[[diffusers.DiffusionPipeline.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, exclude_modules: str | list[str] | None = None)
```

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

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

onload_device (`torch.device`) : الجهاز الذي تُحمَّل عليه مجموعة الوحدات.

offload_device (`torch.device`، الافتراضي هو `torch.device("cpu")`) : الجهاز الذي يتم نقل مجموعة الوحدات إليه. يجب أن يكون هذا الجهاز عادةً وحدة المعالجة المركزية (CPU). الافتراضي هو وحدة المعالجة المركزية (CPU).

offload_type (`str` أو `GroupOffloadingType`، الافتراضي هو "block_level") : نوع الإزاحة (offloading) الذي سيتم تطبيقه. يمكن أن يكون أحد "block_level" أو "leaf_level". الافتراضي هو "block_level".

offload_to_disk_path (`str`، *اختياري*، القيمة الافتراضية `None`) : المسار إلى المجلد الذي سيتم فيه تفريغ المعاملات. قد يكون ضبط هذا الخيار مفيدًا في بيئات محدودة الذاكرة العشوائية (RAM) حيث يُرغب في تحقيق توازن معقول بين السرعة والذاكرة.

num_blocks_per_group (`int`, *اختياري*) : عدد الكتل في كل مجموعة عند استخدام offload_type="block_level". هذا مطلوب عند استخدام offload_type="block_level".

non_blocking (`bool`، القيمة الافتراضية `False`) : إذا كانت القيمة True، يتم تنفيذ عمليات الإزاحة (offloading) والتحميل (onloading) باستخدام نقل بيانات غير محجوز.

use_stream (`bool`، القيمة الافتراضية `False`) : إذا كانت القيمة True، يتم تنفيذ عمليات الإزاحة (offloading) والتحميل (onloading) بشكل غير متزامن باستخدام تدفق CUDA. قد يكون ذلك مفيدًا لتداخل العمليات الحسابية مع نقل البيانات.

record_stream (`bool`، القيمة الافتراضية `False`) : عند تفعيله مع `use_stream`، يُعلّم المصفوفة الحالية بأنها استُخدمت بواسطة هذا التيار. فهو أسرع على حساب زيادة طفيفة في استهلاك الذاكرة. راجع [التوثيق الرسمي لـ PyTorch](https://pytorch.org/docs/stable/generated/torch.Tensor.record_stream.html) لمزيد من التفاصيل.

low_cpu_mem_usage (`bool`، القيمة الافتراضية `False`) : إذا كانت القيمة True، يتم تقليل استخدام ذاكرة المعالج المركزي (CPU) عن طريق تثبيت المصفوفات (tensors) أثناء التشغيل بدلاً من تثبيتها مسبقاً. لا تهم هذه الخيارات إلا عند استخدام إزاحة المعالج المركزي (CPU) عبر البث (أي `use_stream=True`). قد يكون هذا مفيداً عندما تكون ذاكرة المعالج المركزي عنقاً زجاجة، لكنه قد يقاوم فوائد استخدام البث (streams).

exclude_modules (`Union[str, List[str]]`، القيمة الافتراضية `None`) : قائمة الوحدات التي يجب استبعادها من عملية الإزاحة.

يطبّق تفريغ المجموعات على الطبقات الداخلية لـ torch.nn.Module. لفهم ما هو تفريغ المجموعات، وأين يكون مفيداً، نحتاج أولاً إلى تقديم بعض السياق حول كيفية عمل طرق التفريغ الأخرى المدعومة.

عادةً، يتم تنفيذ الإزاحة على مستويين:
- على مستوى الوحدة: في Diffusers، يمكن تفعيل ذلك باستخدام طريقة `ModelMixin::enable_model_cpu_offload()`.
يعمل عن طريق نقل كل مكوّن من مكوّنات خط المعالجة إلى وحدة المعالجة المركزية (CPU) للتخزين، ثم تحميله إلى جهاز التسريع عند الحاجة إليه للحساب. هذه الطريقة أكثر كفاءة في استخدام الذاكرة من إبقاء جميع المكوّنات على جهاز التسريع، لكن متطلبات الذاكرة لا تزال مرتفعة إلى حد كبير. لكي تعمل هذه الطريقة، يجب توفر ذاكرة تعادل حجم النموذج في نوع البيانات (dtype) وقت التشغيل + حجم أكبر توترات (tensors) للتفعيلات الوسيطة، وذلك لإكمال مسار الأمامي (forward pass).
- على مستوى العُقد: في Diffusers، يمكن تفعيل ذلك باستخدام طريقة `ModelMixin::enable_sequential_cpu_offload()`.
يعمل عن طريق نقل معاملات المستوى الأدنى من الأوراق في رسم الحساب إلى وحدة المعالجة المركزية للتخزين، وتحميل الأوراق فقط إلى جهاز المعالج التسارعي لأغراض الحساب. يستخدم هذا الأسلوب أقل قدر من ذاكرة المعالج التسارعي، لكنه قد يكون أبطأ بسبب العدد المفرط من عمليات المزامنة بين الأجهزة.

يعتبر تفريغ المجموعات (Group offloading) حلًا وسطًا بين المنهجين المذكورين. يعمل هذا الأسلوب عن طريق تفريغ مجموعات من الطبقات الداخلية، (سواءً كانت `torch.nn.ModuleList` أو `torch.nn.Sequential`). يستخدم هذا الأسلوب ذاكرة أقل من تفريغ مستوى الوحدة (module-level offloading). كما أنه أسرع من تفريغ مستوى الورقة/التسلسلي (leaf-level/sequential offloading)، نظرًا لتقليل عدد مزامنات الأجهزة.

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

مثال:
```python
>>> from diffusers import DiffusionPipeline
>>> import torch

>>> pipe = DiffusionPipeline.from_pretrained("Qwen/Qwen-Image", dtype=torch.bfloat16)

>>> pipe.enable_group_offload(
...     onload_device=torch.device("cuda"),
...     offload_device=torch.device("cpu"),
...     offload_type="leaf_level",
...     use_stream=True,
... )
>>> image = pipe("a beautiful sunset").images[0]
```

#### enable_model_cpu_offload[[diffusers.DiffusionPipeline.enable_model_cpu_offload]]

```python
enable_model_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)
```

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

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

gpu_id (`int`, *اختياري*) : المعرّف الخاص بالمُسرِّع الذي سيُستخدم في الاستدلال. إذا لم يُحدَّد، فسيكون الافتراضي 0.

device (`torch.Device` أو `str`، *اختياري*، القيمة الافتراضية هي None) : نوع جهاز PyTorch للمُسرِّع الذي سيُستخدم في الاستدلال. إذا لم يُحدد، فسيتم اكتشاف المُسرِّع المتاح واستخدامه تلقائيًا.

ينقل جميع النماذج إلى وحدة المعالجة المركزية (CPU) باستخدام accelerate، مما يقلل من استهلاك الذاكرة مع تأثير ضئيل على الأداء. مقارنةً بـ `enable_sequential_cpu_offload`، تنقل هذه الطريقة نموذجًا كاملًا في كل مرة إلى المُسرِّع (accelerator) عند استدعاء طريقة `forward` الخاصة به، ويبقى النموذج في المُسرِّع حتى تشغيل النموذج التالي. تكون وفورات الذاكرة أقل مما هي عليه مع `enable_sequential_cpu_offload`، لكن الأداء يكون أفضل بكثير بسبب التنفيذ التكراري لـ `unet`.

#### enable_sequential_cpu_offload[[diffusers.DiffusionPipeline.enable_sequential_cpu_offload]]

```python
enable_sequential_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)
```

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

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

gpu_id (`int`, *اختياري*) : المعرّف الخاص بالمُسرِّع الذي سيُستخدم في الاستدلال. إذا لم يُحدَّد، فسيكون الافتراضي 0.

device (`torch.Device` أو `str`، *اختياري*، القيمة الافتراضية هي None) : نوع جهاز PyTorch للمُسرِّع الذي سيُستخدم في الاستدلال. إذا لم يُحدد، فسيتم اكتشاف المُسرِّع المتاح واستخدامه تلقائيًا.

ينقل جميع النماذج إلى وحدة المعالجة المركزية (CPU) باستخدام 🤗 Accelerate، مما يقلل من استهلاك الذاكرة بشكل كبير. عند الاستدعاء، تُحفظ قواميس الحالة (state dicts) لجميع مكونات `torch.nn.Module` (باستثناء تلك الموجودة في `self._exclude_from_cpu_offload`) على وحدة المعالجة المركزية ثم تُنقل إلى `torch.device('meta')` ولا تُحمَّل على المُسرِّع (accelerator) إلا عند استدعاء طريقة `forward` الخاصة بالوحدة الفرعية المعنية. يتم النقل على أساس الوحدات الفرعية. تكون وفورات الذاكرة أعلى مما هي عليه مع `enable_model_cpu_offload`، لكن الأداء يكون أدنى.

#### enable_xformers_memory_efficient_attention[[diffusers.DiffusionPipeline.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/pipelines/pipeline_utils.py#L1975)

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

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 DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)
```

#### from_pipe[[diffusers.DiffusionPipeline.from_pipe]]

```python
from_pipe(pipeline, **kwargs)
```

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

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

pipeline (`DiffusionPipeline`) : خط الأنابيب الذي سيتم منه إنشاء خط أنابيب جديد.

**يعيد:** `DiffusionPipeline`

خط أنابيب جديد بنفس الأوزان والإعدادات مثل `pipeline`.

أنشئ خط أنابيب جديدًا من خط أنابيب معيّن. يُعدّ هذا الأسلوب مفيدًا لإنشاء خط أنابيب جديد من مكوّنات خط الأنابيب الموجود دون تخصيص ذاكرة إضافية.

أمثلة:

```py
>>> from diffusers import StableDiffusionPipeline, StableDiffusionSAGPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> new_pipe = StableDiffusionSAGPipeline.from_pipe(pipe)
```

#### from_pretrained[[diffusers.DiffusionPipeline.from_pretrained]]

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

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

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

pretrained_model_name_or_path (`str` أو `os.PathLike`، *اختياري*) : يمكن أن يكون أحد ما يلي: - نص، وهو *repo id* (مثل `CompVis/ldm-text2im-large-256`) لخط أنابيب مُدرَّب مسبقًا مستضاف على Hub. - مسار إلى *مجلد* (مثل `./my_pipeline_directory/`) يحتوي على أوزان خط أنابيب محفوظة باستخدام [save_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline.save_pretrained).

dtype (`torch.dtype` أو `dict[str, Union[str, torch.dtype]]`، *اختياري*) : تجاوز `torch.dtype` الافتراضي وتحميل النموذج بنوع بيانات آخر. لتحميل النماذج الفرعية بأنواع بيانات مختلفة، مرّر `dict` (على سبيل المثال `{'transformer': torch.bfloat16, 'vae': torch.float16}`). اضبط نوع البيانات الافتراضي للمكونات غير المحددة باستخدام `default` (على سبيل المثال `{'transformer': torch.bfloat16, 'default': torch.float16}`). إذا لم يُحدد مكوّن ولم يُضبط نوع بيانات افتراضي، يُستخدم `torch.float32`.

custom_pipeline (`str`, *اختياري*) : > [!WARNING] > 🧪 هذه ميزة تجريبية وقد تتغير في المستقبل.  يمكن أن يكون:  - نصًا، وهو *repo id* (مثل `hf-internal-testing/diffusers-dummy-pipeline`) لخط أنابيب مخصص مستضاف على Hub. يجب أن يحتوي المستودع على ملف يُسمى pipeline.py يحدد خط الأنابيب المخصص. - نصًا، وهو *اسم الملف* لخط أنابيب مجتمعي مستضاف على GitHub تحت [Community](https://github.com/huggingface/diffusers/tree/main/examples/community). يجب أن تتطابق أسماء الملفات الصالحة مع اسم الملف وليس مع سكربت خط الأنابيب (`clip_guided_stable_diffusion` بدلاً من `clip_guided_stable_diffusion.py`). يتم تحميل خطوط الأنابيب المجتمعية دائمًا من فرع main الحالي على GitHub. - مسار إلى مجلد (`./my_pipeline_directory/`) يحتوي على خط أنابيب مخصص. يجب أن يحتوي المجلد على ملف يُسمى `pipeline.py` يحدد خط الأنابيب المخصص.  لمزيد من المعلومات حول كيفية تحميل وإنشاء خطوط أنابيب مخصصة، يرجى الاطلاع على [تحميل وإضافة خطوط أنابيب مخصصة](https://huggingface.co/docs/diffusers/using-diffusers/custom_pipeline_overview)

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

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

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.

custom_revision (`str`, *اختياري*) : إصدار النموذج المحدد للاستخدام. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن (commit id) مشابهًا لـ`revision` عند تحميل خط أنابيب مخصص من Hub. الافتراضي هو أحدث إصدار مستقر من 🤗 Diffusers.

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

device_map (`str`، *اختياري*) : الاستراتيجية التي تحدد كيفية توزيع المكونات المختلفة للخط الأنابيب على الأجهزة المتاحة. حاليًا، يتم دعم `device_map` "balanced" فقط. راجع [هذا](https://huggingface.co/docs/diffusers/main/en/tutorials/inference_with_big_models#device-placement) لمعرفة المزيد.

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` سيؤدي إلى رفع خطأ.

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

use_onnx (`bool`، *اختياري*، القيمة الافتراضية `None`) : إذا تم ضبطه على `True`، فسيتم تنزيل أوزان ONNX دائمًا إذا كانت موجودة. إذا تم ضبطه على `False`، فلن يتم تنزيل أوزان ONNX أبدًا. افتراضيًا، تكون القيمة الافتراضية لـ`use_onnx` هي سمة الفئة `_is_onnx` وهي `False` لخطوط الأنابيب غير ONNX و`True` لخطوط الأنابيب ONNX. تشمل أوزان ONNX كلا الملفين المنتهي بـ`.onnx` و`.pb`.

kwargs (باقي قاموس من معاملات الكلمات المفتاحية، *اختياري*) : يمكن استخدامه لتجاوز متغيرات التحميل والحفظ (مكونات خط الأنابيب الخاصة بفئة خط الأنابيب المحددة). تُمرَّر المكونات المُتجاوزة مباشرةً إلى طريقة `__init__` لخط الأنابيب. راجع المثال أدناه لمزيد من المعلومات.

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

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

أنشئ خط أنابيب انتشار PyTorch من أوزان خط أنابيب مُدرَّب مسبقًا.

يتم ضبط خط الأنابيب في وضع التقييم (`model.eval()`) افتراضيًا.

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

```
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.
```

> [!TIP] > لاستخدام النماذج الخاصة أو [المقيّدة](https://huggingface.co/docs/hub/models-gated#gated-models)، سجّل الدخول
باستخدام `hf > auth login`.

أمثلة:

```py
>>> from diffusers import DiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")

>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")

>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler

>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = scheduler
```

#### maybe_free_model_hooks[[diffusers.DiffusionPipeline.maybe_free_model_hooks]]

```python
maybe_free_model_hooks()
```

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

طريقة تنفّذ ما يلي:
- ينقل جميع المكونات.
- يزيل جميع خطافات النموذج التي أُضيفت عند استخدام `enable_model_cpu_offload`، ثم يطبقها مرة أخرى. في حال لم يتم نقل النموذج، تكون هذه الدالة بلا تأثير.
- يعيد تعيين خطافات `register_hook()` المضافة لمكونات إزالة الضوضاء (denoiser) التي تحتوي على حالة (stateful).

تأكد من إضافة هذه الدالة إلى نهاية دالة `__call__` في خط أنابيبك حتى تعمل بشكل صحيح عند تطبيق `enable_model_cpu_offload`.

#### numpy_to_pil[[diffusers.DiffusionPipeline.numpy_to_pil]]

```python
numpy_to_pil(images)
```

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

تحويل صورة NumPy أو دفعة من الصور إلى صورة PIL.

#### remove_all_hooks[[diffusers.DiffusionPipeline.remove_all_hooks]]

```python
remove_all_hooks()
```

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

يزيل جميع الخطافات التي أُضيفت عند استخدام `enable_sequential_cpu_offload` أو `enable_model_cpu_offload`.

#### reset_device_map[[diffusers.DiffusionPipeline.reset_device_map]]

```python
reset_device_map()
```

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

يعيد تعيين خرائط الأجهزة (إن وجدت) إلى None.

#### save_pretrained[[diffusers.DiffusionPipeline.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, safe_serialization: bool = True, variant: str | None = None, max_shard_size: int | str | None = None, push_to_hub: bool = False, use_flashpack: bool = False, **kwargs)
```

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

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

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

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

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

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

push_to_hub (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم دفع نموذجك إلى مركز نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدام `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).

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

#### diffusers.StableDiffusionMixin.enable_freeu[[diffusers.StableDiffusionMixin.enable_freeu]]

```python
diffusers.StableDiffusionMixin.enable_freeu(s1: float, s2: float, b1: float, b2: float)
```

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

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

s1 (`float`) : عامل التدرّج للمرحلة 1 لتخفيف مساهمات ميزات التخطي. يتم ذلك للتخفيف من "تأثير الإفراط في التنعيم" في عملية إزالة الضوضاء المعزّزة.

s2 (`float`) : معامل التدرّج للمرحلة 2 لتخفيف مساهمات الميزات المتجاوزة. يتم ذلك للتخفيف من "تأثير الإفراط في التنعيم" في عملية إزالة الضوضاء المعزّزة.

b1 (`float`) : معامل التوسيع للمرحلة 1 لتضخيم مساهمات ميزات الهيكل الأساسي.

b2 (`float`) : معامل التوسيع للمرحلة 2 لتضخيم مساهمات ميزات الهيكل الأساسي.

يُفعّل آلية FreeU كما هو موضح في https://huggingface.co/papers/2309.11497.

تمثل البادئات التي تلي معاملات التوسيع المراحل التي تُطبَّق فيها.

يرجى الرجوع إلى [المستودع الرسمي](https://github.com/ChenyangSi/FreeU) للاطلاع على التوليفات من القيم التي يُعرف أنها تعمل بشكل جيد لأنابيب مختلفة مثل Stable Diffusion v1 وv2 وStable Diffusion XL.

#### diffusers.StableDiffusionMixin.disable_freeu[[diffusers.StableDiffusionMixin.disable_freeu]]

```python
diffusers.StableDiffusionMixin.disable_freeu()
```

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

يعطّل آلية FreeU إذا كانت مفعّلة.

## 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")
```

## المكالمات العكسية[[diffusers.callbacks.PipelineCallback]]

#### diffusers.callbacks.PipelineCallback[[diffusers.callbacks.PipelineCallback]]

```python
diffusers.callbacks.PipelineCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```

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

الفئة الأساسية لجميع الاستدعاءات الخلفية الرسمية المستخدمة في خط المعالجة. توفر هذه الفئة هيكلًا لتنفيذ استدعاءات خلفية مخصصة، وتضمن أن جميع الاستدعاءات الخلفية تملك واجهة متسقة.

يرجى تنفيذ ما يلي: `tensor_inputs`: يجب أن يعيد هذا قائمةً بمدخلات المصفوفات (tensors) الخاصة بإجراء الاستدعاء (callback) الخاص بك. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك. `callback_fn`: يحدد هذا الإجراء الوظيفة الأساسية لإجراء الاستدعاء الخاص بك.

#### diffusers.callbacks.SDCFGCutoffCallback[[diffusers.callbacks.SDCFGCutoffCallback]]

```python
diffusers.callbacks.SDCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```

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

دالة الاستدعاء (Callback) لخطوط أنابيب Stable Diffusion. بعد عدد معين من الخطوات (المحدد بواسطة `cutoff_step_ratio` أو `cutoff_step_index`)، ستقوم هذه الدالة بتعطيل CFG.

ملاحظة: يعدّل هذا المستدعي خط الأنابيب عن طريق تغيير خاصية `_guidance_scale` إلى 0.0 بعد خطوة القطع.

#### diffusers.callbacks.SDXLCFGCutoffCallback[[diffusers.callbacks.SDXLCFGCutoffCallback]]

```python
diffusers.callbacks.SDXLCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```

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

دالة الاستدعاء (Callback) الخاصة بخطوط أنابيب Stable Diffusion XL الأساسية. بعد عدد معين من الخطوات (المحدد بواسطة `cutoff_step_ratio` أو `cutoff_step_index`)، ستقوم هذه الدالة بتعطيل CFG.

ملاحظة: يعدّل هذا المستدعي خط الأنابيب عن طريق تغيير خاصية `_guidance_scale` إلى 0.0 بعد خطوة القطع.

#### diffusers.callbacks.SDXLControlnetCFGCutoffCallback[[diffusers.callbacks.SDXLControlnetCFGCutoffCallback]]

```python
diffusers.callbacks.SDXLControlnetCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```

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

دالة الاستدعاء (Callback) لخطوط أنابيب Controlnet Stable Diffusion XL. بعد عدد معين من الخطوات (المحدد بواسطة `cutoff_step_ratio` أو `cutoff_step_index`)، ستقوم هذه الدالة بتعطيل CFG.

ملاحظة: يعدّل هذا المستدعي خط الأنابيب عن طريق تغيير خاصية `_guidance_scale` إلى 0.0 بعد خطوة القطع.

#### diffusers.callbacks.IPAdapterScaleCutoffCallback[[diffusers.callbacks.IPAdapterScaleCutoffCallback]]

```python
diffusers.callbacks.IPAdapterScaleCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```

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

دالة الاستدعاء (Callback) لأي خط أنابيب يرث `IPAdapterMixin`. بعد عدد معين من الخطوات (المحدد بواسطة `cutoff_step_ratio` أو `cutoff_step_index`)، ستقوم هذه الدالة بإعداد مقياس IP Adapter على `0.0`.

ملاحظة: يعدّل هذا المستدعي معالجات الانتباه الخاصة بمحوّل IP Adapter عن طريق تعيين المقياس إلى 0.0 بعد خطوة القطع.

#### diffusers.callbacks.SD3CFGCutoffCallback[[diffusers.callbacks.SD3CFGCutoffCallback]]

```python
diffusers.callbacks.SD3CFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```

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

دالة الاستدعاء (Callback) لخطوط أنابيب Stable Diffusion 3. بعد عدد معين من الخطوات (المحدد بواسطة `cutoff_step_ratio` أو `cutoff_step_index`)، ستقوم هذه الدالة بتعطيل CFG.

ملاحظة: يعدّل هذا المستدعي خط الأنابيب عن طريق تغيير خاصية `_guidance_scale` إلى 0.0 بعد خطوة القطع.

