Diffusers documentation
AutoPipeline
AutoPipeline
AutoPipeline es un pipeline de tarea y modelo que selecciona automáticamente el subclase de pipeline correcto en función de la tarea. Gestiona la complejidad de cargar diferentes subclases de pipeline sin necesidad de conocer el nombre específico de la subclase de pipeline.
A diferencia de DiffusionPipeline, un pipeline de solo modelo que selecciona automáticamente la subclase del pipeline en función del modelo.
AutoPipelineForImage2Image.from_pretrained(model_id)
|
+-- read model_index.json (e.g. StableDiffusionXLPipeline)
+-- task mapping (image-to-image)
|
v
StableDiffusionXLImg2ImgPipeline // returned instanceAutoPipelineForImage2Image devuelve la subclase específica de la tarea (por ejemplo, StableDiffusionXLImg2ImgPipeline), que solo puede usarse para tareas de imagen a imagen.
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",
# ...
# }Cargar el mismo modelo con DiffusionPipeline devuelve el subclase predeterminado de texto a imagen, StableDiffusionXLPipeline. Ese pipeline es para texto a imagen. Para imagen a imagen o inpainting, cargue un AutoPipeline de tarea como AutoPipelineForImage2Image o AutoPipelineForInpainting, o el subclase específico de la tarea correspondiente.
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",
# ...
# }Cambiar de tareas con from_pipe
Carga un AutoPipeline de una tarea una vez y luego cambia de tareas con from_pipe() sin volver a descargar los pesos. Los componentes se reutilizan desde el pipeline de origen.
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)Consulte Reutilización de modelos en varios pipelines para obtener más detalles.
Consulte los mappings para ver si un modelo está soportado o no. Intentar cargar un modelo no soportado devuelve un 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"Hay cuatro tipos de clases AutoPipeline:
- AutoPipelineForText2Image
- AutoPipelineForImage2Image
- AutoPipelineForInpainting
- AutoPipelineForText2Audio
Cada una de estas clases tiene un mapeo predefinido que vincula un pipeline con su subclase específica para la tarea.
Cuando se llama a from_pretrained(), extrae el nombre de la clase del archivo model_index.json y selecciona la subclase de pipeline adecuada para la tarea según el mapeo.