# AutoPipeline

[AutoPipeline](../api/pipelines/auto_pipeline) adalah pipeline *task-and-model* yang secara otomatis memilih subclass pipeline yang benar berdasarkan tugasnya. Komponen ini menangani kompleksitas memuat subclass pipeline yang berbeda tanpa perlu mengetahui nama subclass pipeline yang spesifik.

Hal ini berbeda dengan [DiffusionPipeline](/docs/diffusers/main/id/api/pipelines/overview#diffusers.DiffusionPipeline), sebuah pipeline *hanya-model* yang secara otomatis memilih subclass pipeline berdasarkan model.

```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/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image) mengembalikan subclass yang spesifik untuk tugas (misalnya, [StableDiffusionXLImg2ImgPipeline](/docs/diffusers/main/id/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLImg2ImgPipeline)), yang hanya dapat digunakan untuk tugas image-to-image.

```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",
#   ...
# }
```

Memuat model yang sama dengan [DiffusionPipeline](/docs/diffusers/main/id/api/pipelines/overview#diffusers.DiffusionPipeline) mengembalikan subclass teks-ke-gambar default, yaitu [StableDiffusionXLPipeline](/docs/diffusers/main/id/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline). Pipeline tersebut ditujukan untuk teks-ke-gambar. Untuk gambar-ke-gambar atau inpainting, muat AutoPipeline tugas seperti [AutoPipelineForImage2Image](/docs/diffusers/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image) atau [AutoPipelineForInpainting](/docs/diffusers/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForInpainting), atau subclass spesifik tugas yang sesuai.

```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",
#   ...
# }
```

## Ganti tugas dengan from_pipe

Muat tugas AutoPipeline sekali, lalu ganti tugas dengan [from_pipe()](/docs/diffusers/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image.from_pipe) tanpa mengunduh bobotnya lagi. Komponen digunakan ulang dari pipeline sumber.

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

Lihat [Memanfaatkan ulang model dalam beberapa pipeline](../using-diffusers/loading#reusing-models-in-multiple-pipelines) untuk detail lebih lanjut.

Periksa [mappings](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/auto_pipeline.py) untuk melihat apakah suatu model didukung atau tidak. Mencoba memuat model yang tidak didukung akan mengembalikan error.

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

Ada empat jenis kelas [AutoPipeline](../api/pipelines/auto_pipeline):

- [AutoPipelineForText2Image](/docs/diffusers/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Image)
- [AutoPipelineForImage2Image](/docs/diffusers/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image)
- [AutoPipelineForInpainting](/docs/diffusers/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForInpainting)
- [AutoPipelineForText2Audio](/docs/diffusers/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Audio)

Setiap kelas ini memiliki pemetaan yang telah ditentukan sebelumnya, yang menghubungkan pipeline ke subkelas spesifik tugas mereka.

Ketika [from_pretrained()](/docs/diffusers/main/id/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Image.from_pretrained) dipanggil, ia mengekstrak nama kelas dari file `model_index.json` dan memilih subkelas pipeline yang sesuai untuk tugas tersebut berdasarkan pemetaan.

