# AutoPipeline

[AutoPipeline](../api/pipelines/auto_pipeline) هو خط أنابيب *مهمة ونموذج* يختار تلقائيًا الفئة الفرعية الصحيحة لخط الأنابيب بناءً على المهمة. يتعامل مع تعقيد تحميل فئات خطوط الأنابيب الفرعية المختلفة دون الحاجة إلى معرفة اسم الفئة الفرعية المحدد لخط الأنابيب.

وهذا يختلف عن [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline)، وهو خط أنابيب *للنموذج فقط* يختار تلقائيًا الفئة الفرعية للخط الأنابيب بناءً على النموذج.

```text
AutoPipelineForImage2Image.from_pretrained(model_id)
        |
        +-- read model_index.json  (e.g. StableDiffusionXLPipeline)
        +-- task mapping           (image-to-image)
        |
        v
StableDiffusionXLImg2ImgPipeline   // returned instance
```

يعيد [AutoPipelineForImage2Image](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image) الفئة الفرعية الخاصة بالمهمة (على سبيل المثال، [StableDiffusionXLImg2ImgPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLImg2ImgPipeline))، والتي يمكن استخدامها فقط لمهام تحويل الصورة إلى صورة.

```py
import torch
from diffusers import AutoPipelineForImage2Image

pipeline = AutoPipelineForImage2Image.from_pretrained(
  "RunDiffusion/Juggernaut-XL-v9", dtype=torch.bfloat16, device_map="cuda",  # or "mps", "xpu", "cpu"
)
print(pipeline)
# StableDiffusionXLImg2ImgPipeline {
#   "_class_name": "StableDiffusionXLImg2ImgPipeline",
#   ...
# }
```

عند تحميل النموذج نفسه باستخدام [DiffusionPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/overview#diffusers.DiffusionPipeline)، يُعاد الفرع الفرعي الافتراضي لتحويل النص إلى صورة، وهو [StableDiffusionXLPipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline). هذا الخطّ الأنابيب مخصص لتحويل النص إلى صورة. أما لتحويل الصورة إلى صورة أو لإعادة التلوين (Inpainting)، فحمّل خطّ أنابيب تلقائيًا للمهمة مثل [AutoPipelineForImage2Image](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image) أو [AutoPipelineForInpainting](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForInpainting)، أو الفرع الفرعي المحدد للمهمة المطابق.

```py
import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
  "RunDiffusion/Juggernaut-XL-v9", dtype=torch.bfloat16, device_map="cuda",  # or "mps", "xpu", "cpu"
)
print(pipeline)
# StableDiffusionXLPipeline {
#   "_class_name": "StableDiffusionXLPipeline",
#   ...
# }
```

## التبديل بين المهام باستخدام from_pipe

Load a task AutoPipeline once, then switch tasks with [from_pipe()](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image.from_pipe) without downloading the weights again. Components are reused from the source pipeline.

```py
import torch
from diffusers import AutoPipelineForText2Image, AutoPipelineForImage2Image

pipeline_t2i = AutoPipelineForText2Image.from_pretrained(
  "RunDiffusion/Juggernaut-XL-v9", dtype=torch.bfloat16, device_map="cuda",  # or "mps", "xpu", "cpu"
)
pipeline_i2i = AutoPipelineForImage2Image.from_pipe(pipeline_t2i)
```

راجع [إعادة استخدام النماذج في خطوط أنابيب متعددة](../using-diffusers/loading#reusing-models-in-multiple-pipelines) لمزيد من التفاصيل.

تحقق من [الخرائط](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/auto_pipeline.py) لمعرفة ما إذا كان النموذج مدعوماً أم لا. محاولة تحميل نموذج غير مدعوم تعيد خطأً.

```py
import torch
from diffusers import AutoPipelineForImage2Image

pipeline = AutoPipelineForImage2Image.from_pretrained(
    "openai/shap-e-img2img", dtype=torch.float16,
)
"ValueError: AutoPipeline can't find a pipeline linked to ShapEImg2ImgPipeline for None"
```

هناك أربعة أنواع من فئات [AutoPipeline](../api/pipelines/auto_pipeline):

- [AutoPipelineForText2Image](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Image)
- [AutoPipelineForImage2Image](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image)
- [AutoPipelineForInpainting](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForInpainting)
- [AutoPipelineForText2Audio](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Audio)

لكلٍّ من هذه الفئات تعيين مسبق، يربط خط الأنابيب بفئة فرعية مخصصة للمهمة الخاصة بها.

عند استدعاء [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Image.from_pretrained)، يستخرج اسم الفئة من ملف `model_index.json` ويختار فئة خط الأنابيب الفرعية المناسبة للمهمة بناءً على الترميز.

