Buckets:
AutoPipeline
AutoPipeline 是一种按任务和模型选择的pipeline,会根据任务自动选择正确的pipeline子类。这样你就不用提前知道具体的pipeline子类名称,也能加载不同类型的pipeline。
这和 DiffusionPipeline 不同。后者是只按模型选择的pipeline,会根据模型自动选择pipeline子类。
AutoPipelineForImage2Image 会返回某个特定的pipeline子类,例如 StableDiffusionXLImg2ImgPipeline,它只能用于 image-to-image 任务。
import torch
from diffusers import AutoPipelineForImage2Image
pipeline = AutoPipelineForImage2Image.from_pretrained(
"RunDiffusion/Juggernaut-XL-v9", torch_dtype=torch.bfloat16, device_map="cuda",
)
print(pipeline)
"StableDiffusionXLImg2ImgPipeline {
"_class_name": "StableDiffusionXLImg2ImgPipeline",
...
"
如果用同一个模型加载 DiffusionPipeline,则会返回 StableDiffusionXLPipeline 子类。它可以根据输入用于 text-to-image、image-to-image 或 inpainting 任务。
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"RunDiffusion/Juggernaut-XL-v9", torch_dtype=torch.bfloat16, device_map="cuda",
)
print(pipeline)
"StableDiffusionXLPipeline {
"_class_name": "StableDiffusionXLPipeline",
...
"
你可以查看 mappings,确认某个模型是否受支持。
如果尝试加载不受支持的模型,就会报错。
import torch
from diffusers import AutoPipelineForImage2Image
pipeline = AutoPipelineForImage2Image.from_pretrained(
"openai/shap-e-img2img", torch_dtype=torch.float16,
)
"ValueError: AutoPipeline can't find a pipeline linked to ShapEImg2ImgPipeline for None"
AutoPipeline 一共有四种类型:
AutoPipelineForText2ImageAutoPipelineForImage2ImageAutoPipelineForInpaintingAutoPipelineForText2Audio
这些类都带有预定义的映射关系,会把某个pipeline关联到对应任务的子类上。
调用 from_pretrained() 时,它会从 model_index.json 文件中提取类名,并根据映射关系为该任务选择合适的pipeline子类。
Xet Storage Details
- Size:
- 2.33 kB
- Xet hash:
- a3b061a1b25e9feeaf7aa2e76cd5a6e62f3e1204d587b59b74cee57a3a7e8eec
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.