Diffusers documentation

AutoPipeline

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoPipeline

AutoPipeline é um pipeline de tarefa-e-modelo que seleciona automaticamente a subclasse de pipeline correta com base na tarefa. Ele gerencia a complexidade de carregar diferentes subclasses de pipeline sem a necessidade de conhecer o nome específico da subclasse de pipeline.

Isso difere do DiffusionPipeline, um pipeline apenas de modelo que seleciona automaticamente a subclasse do pipeline com base no modelo.

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

AutoPipelineForImage2Image retorna a subclasse específica da tarefa (por exemplo, StableDiffusionXLImg2ImgPipeline), que pode ser usada apenas para tarefas de imagem para imagem.

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

Carregar o mesmo modelo com DiffusionPipeline retorna o subclasse padrão de texto para imagem, StableDiffusionXLPipeline. Esse pipeline é para texto para imagem. Para imagem para imagem ou inpainting, carregue um AutoPipeline de tarefa como AutoPipelineForImage2Image ou AutoPipelineForInpainting, ou o subclasse específico de tarefa correspondente.

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

Alterne tarefas com from_pipe

Carregue um AutoPipeline de tarefa uma vez e, em seguida, alterne entre tarefas com from_pipe() sem baixar os pesos novamente. Os componentes são reutilizados a partir do pipeline de origem.

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)

Veja Reutilizando modelos em vários pipelines para mais detalhes.

Verifique os mappings para ver se um modelo é suportado ou não. Tentar carregar um modelo não suportado retorna um erro.

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"

Existem quatro tipos de classes AutoPipeline:

Cada uma dessas classes possui um mapeamento predefinido, vinculando um pipeline à sua subclasse específica para a tarefa.

Quando from_pretrained() é chamado, ele extrai o nome da classe do arquivo model_index.json e seleciona a subclasse de pipeline apropriada para a tarefa com base no mapeamento.

Update on GitHub