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).
AutoPipeline
AutoPipeline 是一种任务与模型流水线,它会根据任务自动选择正确的流水线子类。它负责处理加载不同流水线子类的复杂性,无需知道具体的流水线子类名称。
这与 DiffusionPipeline 不同,后者是一个仅包含模型的流水线,会根据模型自动选择流水线子类。
AutoPipelineForImage2Image.from_pretrained(model_id)
|
+-- read model_index.json (e.g. StableDiffusionXLPipeline)
+-- task mapping (image-to-image)
|
v
StableDiffusionXLImg2ImgPipeline // returned instanceAutoPipelineForImage2Image 会返回任务特定的子类(例如 StableDiffusionXLImg2ImgPipeline),该子类仅可用于图像到图像任务。
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",
# ...
# }使用 DiffusionPipeline 加载同一模型时,会返回默认的文本到图像子类 StableDiffusionXLPipeline。该流水线用于文本到图像任务。对于图像到图像或修复任务,请加载相应的任务 AutoPipeline,例如 AutoPipelineForImage2Image 或 AutoPipelineForInpainting,或者对应的特定任务子类。
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",
# ...
# }使用 from_pipe 切换任务
只需加载一次任务 AutoPipeline,随后即可通过 from_pipe() 切换任务,而无需重新下载权重。组件将从源流水线中复用。
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)有关更多详细信息,请参阅 在多个流水线中复用模型。
查看 mappings 以确认模型是否受支持。尝试加载不受支持的模型会返回错误。
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"共有四种 AutoPipeline 类:
- AutoPipelineForText2Image
- AutoPipelineForImage2Image
- AutoPipelineForInpainting
- AutoPipelineForText2Audio
这些类中的每一个都包含一个预定义映射,将 pipeline 链接到其任务特定的子类。
调用 from_pretrained() 时,它会从 model_index.json 文件中提取类名,并根据映射关系为任务选择相应的 pipeline 子类。