Diffusers documentation
AutoPipeline
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 instanceAutoPipelineForImage2Image 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:
- AutoPipelineForText2Image
- AutoPipelineForImage2Image
- AutoPipelineForInpainting
- AutoPipelineForText2Audio
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.