Diffusers documentation

AutoPipeline

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoPipeline

AutoPipeline 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, sebuah pipeline hanya-model yang secara otomatis memilih subclass pipeline berdasarkan model.

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

AutoPipelineForImage2Image mengembalikan subclass yang spesifik untuk tugas (misalnya, StableDiffusionXLImg2ImgPipeline), yang hanya dapat digunakan untuk tugas image-to-image.

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 mengembalikan subclass teks-ke-gambar default, yaitu StableDiffusionXLPipeline. Pipeline tersebut ditujukan untuk teks-ke-gambar. Untuk gambar-ke-gambar atau inpainting, muat AutoPipeline tugas seperti AutoPipelineForImage2Image atau AutoPipelineForInpainting, atau subclass spesifik tugas yang sesuai.

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() tanpa mengunduh bobotnya lagi. Komponen digunakan ulang dari pipeline sumber.

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 untuk detail lebih lanjut.

Periksa mappings untuk melihat apakah suatu model didukung atau tidak. Mencoba memuat model yang tidak didukung akan mengembalikan error.

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:

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

Ketika from_pretrained() dipanggil, ia mengekstrak nama kelas dari file model_index.json dan memilih subkelas pipeline yang sesuai untuk tugas tersebut berdasarkan pemetaan.

Update on GitHub