1
0
mirror of https://github.com/huggingface/diffusers.git synced 2026-10-24 20:59:27 +03:00
Files
diffusers/docs/source/zh/tutorials/autopipeline.md
Steven Liu 351de3a6fe [docs] deprecate torch_dtype for dtype (#14313)
* docs

* update

* Revert "docs"

This reverts commit 04ca80543f.

---------

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
2026-07-29 08:20:06 +05:30

2.9 KiB
Raw Permalink Blame History

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", 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", 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", dtype=torch.float16,
)
"ValueError: AutoPipeline can't find a pipeline linked to ShapEImg2ImgPipeline for None"

AutoPipeline 一共有四种类型:

  • [AutoPipelineForText2Image]
  • [AutoPipelineForImage2Image]
  • [AutoPipelineForInpainting]
  • [AutoPipelineForText2Audio]

这些类都带有预定义的映射关系,会把某个pipeline关联到对应任务的子类上。

调用 [~AutoPipelineForText2Image.from_pretrained] 时,它会从 model_index.json 文件中提取类名,并根据映射关系为该任务选择合适的pipeline子类。