# DiT

[نماذج الانتشار القابلة للتوسع باستخدام التحويلات](https://huggingface.co/papers/2212.09748) (DiT) من تأليف ويليام بيبلس وسانيغ شيي.

ملخص الورقة البحثية هو:

*نستكشف فئة جديدة من نماذج الانتشار (Diffusion) مبنية على معمارية الترانسفورمر. نقوم بتدريب نماذج انتشار كامنة (Latent) للصور، حيث نستبدل العمود الفقري U-Net الشائع الاستخدام بترانسفورمر يعمل على بقع كامنة (Latent patches). نحلل قابلية التوسع لنماذج الانتشار الترانسفورمرية (DiTs) من خلال عدسة تعقيد المرور الأمامي (Forward pass) كما يُقاس بوحدة Gflops. وجدنا أن نماذج DiTs ذات قيم Gflops أعلى — سواء من خلال زيادة عمق/عرض الترانسفورمر أو زيادة عدد الرموز المدخلة — تمتلك بشكل متسق قيمة FID أدنى. بالإضافة إلى امتلاكها خصائص توسع جيدة، تتفوق أكبر نماذجنا DiT-XL/2 على جميع نماذج الانتشار السابقة في معايير ImageNet الشرطية على الفئة (Class-conditional) بدقة 512x512 و256x256، محققةً قيمة FID متقدمة تبلغ 2.27 في الحالة الأخيرة.*

يمكن العثور على قاعدة الكود الأصلية في [facebookresearch/dit](https://github.com/facebookresearch/dit).

> [!TIP]
> تأكد من الاطلاع على [دليل المجدولين](../../using-diffusers/schedulers) لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، واطّلع على قسم [إعادة استخدام المكونات عبر خطوط الأنابيب](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) لمعرفة كيفية تحميل نفس المكونات بكفاءة في خطوط أنابيب متعددة.

## DiTPipeline[[diffusers.DiTPipeline]]

#### diffusers.DiTPipeline[[diffusers.DiTPipeline]]

```python
diffusers.DiTPipeline(transformer: DiTTransformer2DModel, vae: AutoencoderKL, scheduler: KarrasDiffusionSchedulers, id2label: dict[int, str] | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/dit/pipeline_dit.py#L38)

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

transformer ([DiTTransformer2DModel](/docs/diffusers/main/ar/api/models/dit_transformer2d#diffusers.DiTTransformer2DModel)) : فئة `DiTTransformer2DModel` مشروطة لإزالة الضوضاء من كامنات الصورة المُرمّزة. نُشرت في الأصل باسم [`Transformer2DModel`](https://huggingface.co/facebook/DiT-XL-2-256/blob/main/transformer/config.json#L2) في الإعدادات، لكن يمكن تجاهل هذا الاختلاف.

vae ([AutoencoderKL](/docs/diffusers/main/ar/api/models/autoencoderkl#diffusers.AutoencoderKL)) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.

scheduler ([DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler)) : مُجدول يُستخدم بالاقتران مع `transformer` لإزالة الضوضاء من كامنات الصورة المُرمّزة.

خط أنابيب لتوليد الصور يعتمد على هيكل Transformer بدلاً من UNet.

يرث هذا النموذج من [DiffusionPipeline](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة المُنفَّذة لجميع خطوط الأنابيب (التنزيل، الحفظ، التشغيل على جهاز معين، إلخ).

#### __call__[[diffusers.DiTPipeline.__call__]]

```python
__call__(class_labels: list, guidance_scale: float = 4.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, num_inference_steps: int = 50, output_type: str | None = 'pil', return_dict: bool = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/dit/pipeline_dit.py#L101)

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

class_labels (list[int]) : قائمة بتسميات فئات ImageNet للصور التي سيتم توليدها.

guidance_scale (`float`، *اختياري*، القيمة الافتراضية 4.0) : كلما زادت قيمة مقياس التوجيه، شجّع النموذج على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt` على حساب انخفاض جودة الصورة. يتم تفعيل مقياس التوجيه عندما يكون `guidance_scale > 1`.

generator (`torch.Generator`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا.

num_inference_steps (`int`، *اختياري*، القيمة الافتراضية 250) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.

output_type (`str`، *اختياري*، الافتراضي `"pil"`) : صيغة الصورة المولّدة. اختر بين `"pil"` (`PIL.Image`) أو `"np"` (`np.array`) أو `"pt"` (`torch.Tensor`).

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [ImagePipelineOutput](/docs/diffusers/main/ar/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) بدلاً من tuple عادي.

**يعيد:** [ImagePipelineOutput](/docs/diffusers/main/ar/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) أو `tuple`

إذا كان `return_dict` هو `True`، يُعاد [ImagePipelineOutput](/docs/diffusers/main/ar/api/pipelines/consistency_models#diffusers.ImagePipelineOutput)، وإلا يُعاد `tuple` يكون عنصره الأول قائمة بالصور المولّدة

دالة الاستدعاء call لخط الأنابيب pipeline الخاص بالتوليد.

أمثلة:

```py
>>> from diffusers import DiTPipeline, DPMSolverMultistepScheduler
>>> import torch

>>> pipe = DiTPipeline.from_pretrained("facebook/DiT-XL-2-256", torch_dtype=torch.float16)
>>> pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
>>> pipe = pipe.to("cuda")

>>> # pick words from Imagenet class labels
>>> pipe.labels  # to print all available words

>>> # pick words that exist in ImageNet
>>> words = ["white shark", "umbrella"]

>>> class_ids = pipe.get_label_ids(words)

>>> generator = torch.manual_seed(33)
>>> output = pipe(class_labels=class_ids, num_inference_steps=25, generator=generator)

>>> image = output.images[0]  # label 'white shark'
```

#### get_label_ids[[diffusers.DiTPipeline.get_label_ids]]

```python
get_label_ids(label: str | list[str])
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/dit/pipeline_dit.py#L76)

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

label (`str` أو `dict` من `str`) : نصوص التسميات التي سيتم تعيينها إلى معرّفات الفئات.

**يعيد:** `list` من `int`

معرفات الفئات التي ستعالجها خط المعالجة.

خريطة نصوص التسميات من ImageNet إلى معرفات الفئات المقابلة.

## ImagePipelineOutput[[diffusers.ImagePipelineOutput]]

#### diffusers.ImagePipelineOutput[[diffusers.ImagePipelineOutput]]

```python
diffusers.ImagePipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray)
```

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

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

images (`List[PIL.Image.Image]` أو `np.ndarray`) : قائمة من صور PIL منزوعة الضوضاء بطول `batch_size` أو مصفوفة NumPy بأبعاد `(batch_size, height, width, num_channels)`.

فئة الإخراج لخطوط أنابيب الصور.

