Diffusers 文档

管道

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

管道

管道提供了一种简单的方法,通过将所有必要的组件(多个独立训练的模型、调度器和处理器)捆绑到一个端到端类中,来运行最先进的扩散模型进行推理。管道是灵活的,可以适应使用不同的调度器甚至模型组件。

所有管道均基于 `DiffusionPipeline` 基类构建,该类提供了加载、下载和保存所有组件的基本功能。通过 `from_pretrained()` 加载的特定管道类型(例如 `StableDiffusionPipeline`)会自动检测,并且管道组件会被加载并传递给管道的 `__init__` 函数。

不应将 `DiffusionPipeline` 类用于训练。扩散管道的各个组件(例如 `UNet2DModel` 和 `UNet2DConditionModel`)通常是单独训练的,因此我们建议直接使用它们。


管道不提供任何训练功能。您会注意到 PyTorch 的自动求导功能被禁用,这是通过使用 `torch.no_grad` 装饰器装饰 `__call__()` 方法来实现的,因为管道不应用于训练。如果您对训练感兴趣,请参阅“训练”指南!

下表列出了 🤗 Diffusers 中当前可用的所有管道及其支持的任务。点击管道名称可查看其摘要和已发表的论文。

流水线 任务
aMUSEd 文本到图像
AnimateDiff 文本到视频
Attend-and-Excite 文本到图像
AudioLDM 文本到音频
AudioLDM2 文本到音频
AuraFlow 文本到图像
BLIP Diffusion 文本到图像
CogVideoX 文本到视频
一致性模型 无条件图像生成
ControlNet 文本到图像、图像到图像、图像修复
带 Flux.1 的 ControlNet 文本到图像
带 Hunyuan-DiT 的 ControlNet 文本到图像
带 Stable Diffusion 3 的 ControlNet 文本到图像
带 Stable Diffusion XL 的 ControlNet 文本到图像
ControlNet-XS 文本到图像
带 Stable Diffusion XL 的 ControlNet-XS 文本到图像
Dance Diffusion 无条件音频生成
DDIM 无条件图像生成
DDPM 无条件图像生成
DeepFloyd IF 文本到图像、图像到图像、图像修复、超分辨率
DiffEdit 图像修复
DiT 文本到图像
Flux 文本到图像
Hunyuan-DiT 文本到图像
I2VGen-XL 图像到视频
InstructPix2Pix 图像编辑
Kandinsky 2.1 文本到图像、图像到图像、图像修复、插值
Kandinsky 2.2 文本到图像、图像到图像、图像修复
Kandinsky 3 文本到图像、图像到图像
Kolors 文本到图像
潜在一致性模型 文本到图像
潜在扩散 文本到图像,超分辨率
Latte 文本到图像
LEDITS++ 图像编辑
Lumina-T2X 文本到图像
Marigold 深度估计、法线估计、本征分解
MultiDiffusion 文本到图像
MusicLDM 文本到音频
PAG 文本到图像
按示例绘制 图像修复
PIA 图像到视频
PixArt-α 文本到图像
PixArt-Σ 文本到图像
自注意力引导 文本到图像
语义引导 文本到图像
Shap-E 文本到 3D,图像到 3D
Stable Audio 文本到音频
Stable Cascade 文本到图像
Stable Diffusion 文本到图像、图像到图像、深度到图像、图像修复、图像变体、潜在上采样器、超分辨率
Stable Diffusion XL 文本到图像、图像到图像、图像修复
Stable Diffusion XL Turbo 文本到图像、图像到图像、图像修复
Stable unCLIP 文本到图像、图像变体
T2I-Adapter 文本到图像
Text2Video 文本到视频、视频到视频
Text2Video-Zero 文本到视频
unCLIP 文本到图像、图像变体
UniDiffuser 文本到图像、图像到文本、图像变体、文本变体、无条件图像生成、无条件音频生成
值引导规划 值引导采样
Wuerstchen 文本到图像
VisualCloze 文本到图像、图像到图像、主题驱动生成、图像修复、风格迁移、图像恢复、图像编辑、[深度、法线、边缘、姿态]到图像、[深度、法线、边缘、姿态]-估计、虚拟试穿、图像重照明

DiffusionPipeline

diffusers.DiffusionPipeline

< >

( )

所有管道的基类。

DiffusionPipeline 存储扩散管道的所有组件(模型、调度器和处理器),并提供加载、下载和保存模型的方法。它还包括以下方法:

  • 将所有 PyTorch 模块移动到您选择的设备
  • 启用/禁用去噪迭代的进度条

类属性

  • config_name (str) — 存储所有扩散管道组件的类名和模块名的配置文件名。
  • _optional_components (List[str]) — 所有可选组件的列表,这些组件无需传递给管道即可运行(应由子类覆盖)。

__call__

( *args **kwargs )

将自身作为函数调用。

设备

< >

( ) torch.device

返回

torch.device

管道所在的 torch 设备。

< >

( *args **kwargs ) DiffusionPipeline

参数

  • dtype (torch.dtype, 可选) — 返回指定 `dtype` 的管道
  • device (torch.Device, 可选) — 返回指定 `device` 的管道
  • silence_dtype_warnings (str, 可选, 默认为 False) — 如果目标 `dtype` 与目标 `device` 不兼容,是否省略警告。

返回

DiffusionPipeline

转换为指定 `dtype` 和/或 `dtype` 的管道。

执行管道 dtype 和/或设备转换。torch.dtype 和 torch.device 是从 `self.to(*args, **kwargs)` 的参数中推断出来的。

如果管道已经具有正确的 torch.dtype 和 torch.device,则按原样返回。否则,返回的管道是具有所需 torch.dtype 和 torch.device 的自身副本。

以下是调用 `to` 的方法

  • to(dtype, silence_dtype_warnings=False) → DiffusionPipeline 返回具有指定 `dtype` 的管道
  • to(device, silence_dtype_warnings=False) → DiffusionPipeline 返回具有指定 `device` 的管道
  • to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline 返回具有指定 `device` 和 `dtype` 的管道

组件

< >

( )

self.components 属性对于使用相同的权重和配置运行不同的管道而无需重新分配额外内存非常有用。

返回 (dict): 一个字典,包含初始化管道所需的所有模块。

示例

>>> from diffusers import (
...     StableDiffusionPipeline,
...     StableDiffusionImg2ImgPipeline,
...     StableDiffusionInpaintPipeline,
... )

>>> text2img = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
>>> inpaint = StableDiffusionInpaintPipeline(**text2img.components)

禁用注意力切片

< >

( )

禁用切片注意力计算。如果之前调用过 enable_attention_slicing,则注意力将一步计算完成。

禁用 xformers 内存高效注意力

< >

( )

禁用 xFormers 的内存高效注意力。

下载

< >

( pretrained_model_name **kwargs ) os.PathLike

参数

  • pretrained_model_name (stros.PathLike, 可选) — 托管在 Hub 上的预训练管道的仓库 ID 字符串(例如 CompVis/ldm-text2im-large-256)。
  • custom_pipeline (str, 可选) — 可以是:

    • 一个字符串,Hub 上托管的预训练管道的仓库 ID(例如 CompVis/ldm-text2im-large-256)。仓库必须包含一个名为 pipeline.py 的文件,该文件定义了自定义管道。

    • 一个字符串,GitHub 上 社区 托管的社区管道的文件名。有效的文件名必须与文件名匹配,而不是管道脚本(clip_guided_stable_diffusion 而不是 clip_guided_stable_diffusion.py)。社区管道始终从 GitHub 的当前 main 分支加载。

    • 一个包含自定义管道的目录路径(./my_pipeline_directory/)。该目录必须包含一个名为 pipeline.py 的文件,该文件定义了自定义管道。

    🧪 这是一个实验性功能,未来可能会更改。

    有关如何加载和创建自定义管道的更多信息,请参阅如何贡献社区管道

  • force_download (bool, 可选, 默认为 False) — 是否强制(重新)下载模型权重和配置文件,如果存在缓存版本则覆盖。
  • proxies (Dict[str, str], 可选) — 要按协议或端点使用的代理服务器字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。代理用于每个请求。
  • output_loading_info(bool, 可选, 默认为 False) — 是否同时返回包含缺失键、意外键和错误消息的字典。
  • local_files_only (bool, 可选, 默认为 False) — 是否只加载本地模型权重和配置文件。如果设置为 True,则不会从 Hub 下载模型。
  • token (strbool, 可选) — 用于远程文件的 HTTP Bearer 授权令牌。如果为 True,则使用从 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • custom_revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,与从 Hub 加载自定义管道时的 `revision` 类似。从 GitHub 加载自定义管道时,它可以是 🤗 Diffusers 版本,否则从 Hub 加载时默认为 "main"
  • mirror (str, 可选) — 解决在中国下载模型时可访问性问题的镜像源。我们不保证该源的时效性或安全性,您应参阅镜像网站获取更多信息。
  • variant (str, 可选) — 从指定的变体文件名(如 "fp16""ema")加载权重。从 from_flax 加载时忽略此项。
  • dduf_file(str, 可选) — 从指定的 DDUF 文件加载权重。
  • use_safetensors (bool, optional,默认为 None) — 如果设置为 None,则在可用安装了 safetensors 库的情况下下载 safetensors 权重。如果设置为 True,则强制从 safetensors 权重加载模型。如果设置为 False,则不加载 safetensors 权重。
  • use_onnx (bool, optional, 默认为 False) — 如果设置为 True,则如果存在 ONNX 权重,将始终下载。如果设置为 False,则永远不会下载 ONNX 权重。默认情况下,use_onnx 默认为 _is_onnx 类属性,对于非 ONNX 管道为 False,对于 ONNX 管道为 True。ONNX 权重包括以 .onnx.pb 结尾的文件。
  • trust_remote_code (bool, optional, 默认为 False) — 是否允许在 Hub 上定义的自定义管道和组件在自己的文件中使用。此选项应仅在您信任并已阅读其代码的存储库中设置为 True,因为它将在您的本地计算机上执行 Hub 中的代码。

返回

os.PathLike

下载管道的路径。

从预训练的管道权重下载并缓存 PyTorch 扩散管道。

要使用私有或封闭模型,请使用 huggingface-cli login 登录。

enable_attention_slicing

< >

( slice_size: typing.Union[int, str, NoneType] = 'auto' )

参数

  • slice_size (strint, optional, 默认为 "auto") — 当为 "auto" 时,将注意力头部的输入减半,因此注意力将分两步计算。如果为 "max",则通过一次只运行一个切片来节省最大内存量。如果提供数字,则使用 attention_head_dim // slice_size 个切片。在这种情况下,attention_head_dim 必须是 slice_size 的倍数。

启用切片注意力计算。启用此选项后,注意力模块将输入张量分割成切片,以分多个步骤计算注意力。对于多个注意力头,计算按每个头顺序执行。这对于节省一些内存以换取小幅速度降低很有用。

⚠️ 如果您已经在使用 PyTorch 2.0 的 scaled_dot_product_attention (SDPA) 或 xFormers,请不要启用注意力切片。这些注意力计算已经非常内存高效,因此您无需启用此功能。如果您将注意力切片与 SDPA 或 xFormers 一起启用,可能会导致严重的性能下降!

示例

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     torch_dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

enable_model_cpu_offload

< >

( gpu_id: typing.Optional[int] = None device: typing.Union[torch.device, str] = None )

参数

  • gpu_id (int, optional) — 推理中应使用的加速器 ID。如果未指定,则默认为 0。
  • device (torch.Devicestr, optional, 默认为 None) — 推理中应使用的加速器的 PyTorch 设备类型。如果未指定,它将自动检测可用的加速器并使用。

使用 accelerate 将所有模型卸载到 CPU,减少内存使用,对性能影响较小。与 enable_sequential_cpu_offload 相比,此方法一次将一个完整的模型移至加速器,并在调用其 forward 方法时,该模型将保留在加速器中,直到下一个模型运行。内存节省低于 enable_sequential_cpu_offload,但由于 unet 的迭代执行,性能要好得多。

enable_sequential_cpu_offload

< >

( gpu_id: typing.Optional[int] = None device: typing.Union[torch.device, str] = None )

参数

  • gpu_id (int, optional) — 推理中应使用的加速器 ID。如果未指定,则默认为 0。
  • device (torch.Devicestr, optional, 默认为 None) — 推理中应使用的加速器的 PyTorch 设备类型。如果未指定,它将自动检测可用的加速器并使用。

使用 🤗 Accelerate 将所有模型卸载到 CPU,显著减少内存使用。调用时,所有 torch.nn.Module 组件的状态字典(除了 self._exclude_from_cpu_offload 中的那些)都被保存到 CPU,然后移动到 torch.device('meta'),并且只有在调用其特定子模块的 forward 方法时才加载到加速器。卸载发生在子模块基础上。内存节省高于 enable_model_cpu_offload,但性能较低。

enable_xformers_memory_efficient_attention

< >

( attention_op: typing.Optional[typing.Callable] = None )

参数

  • attention_op (Callable, optional) — 覆盖默认的 None 运算符,用作 xFormers 的 memory_efficient_attention() 函数的 op 参数。

启用来自 xFormers 的内存高效注意力。启用此选项后,您将观察到更低的 GPU 内存使用量和推理期间潜在的速度提升。训练期间的速度提升不保证。

⚠️ 当内存高效注意力和切片注意力同时启用时,内存高效注意力优先。

示例

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

from_pipe

< >

( pipeline **kwargs ) DiffusionPipeline

参数

  • pipeline (DiffusionPipeline) — 用于创建新管道的管道。

返回

DiffusionPipeline

具有与 pipeline 相同权重和配置的新管道。

从给定管道创建新管道。此方法对于从现有管道组件创建新管道而无需重新分配额外内存很有用。

示例

>>> from diffusers import StableDiffusionPipeline, StableDiffusionSAGPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> new_pipe = StableDiffusionSAGPipeline.from_pipe(pipe)

from_pretrained

< >

( pretrained_model_name_or_path: typing.Union[str, os.PathLike, NoneType] **kwargs )

参数

  • pretrained_model_name_or_path (stros.PathLike, optional) — 可以是以下之一:

    • 一个字符串,预训练管道的仓库 ID(例如 CompVis/ldm-text2im-large-256),托管在 Hub 上。
    • 一个目录的路径(例如 ./my_pipeline_directory/),其中包含使用 save_pretrained() 保存的管道权重。
    • 一个目录的路径(例如 ./my_pipeline_directory/),其中包含一个 dduf 文件
  • torch_dtype (torch.dtypedict[str, Union[str, torch.dtype]], optional) — 覆盖默认的 torch.dtype 并使用其他 dtype 加载模型。要使用不同的 dtype 加载子模型,请传递一个 dict(例如 {'transformer': torch.bfloat16, 'vae': torch.float16})。对于未指定的组件,使用 default 设置默认 dtype(例如 {'transformer': torch.bfloat16, 'default': torch.float16})。如果未指定组件且未设置默认值,则使用 torch.float32
  • custom_pipeline (str, optional) —

    🧪 这是一个实验性功能,未来可能会改变。

    可以是以下之一:

    • 一个字符串,托管在 Hub 上的自定义管道的仓库 ID(例如 hf-internal-testing/diffusers-dummy-pipeline)。该仓库必须包含一个名为 pipeline.py 的文件,用于定义自定义管道。
    • 一个字符串,托管在 GitHub 社区下的社区管道的文件名。有效的文件名必须与文件名匹配,而不是管道脚本(clip_guided_stable_diffusion 而不是 clip_guided_stable_diffusion.py)。社区管道始终从 GitHub 的当前主分支加载。
    • 一个目录的路径(./my_pipeline_directory/),其中包含自定义管道。该目录必须包含一个名为 pipeline.py 的文件,用于定义自定义管道。

    有关如何加载和创建自定义管道的更多信息,请参阅 加载和添加自定义管道

  • force_download (bool, optional, 默认为 False) — 是否强制(重新)下载模型权重和配置文件,如果存在缓存版本则覆盖。
  • cache_dir (Union[str, os.PathLike], optional) — 如果不使用标准缓存,则下载的预训练模型配置的缓存目录路径。
  • proxies (Dict[str, str], optional) — 按协议或端点使用的代理服务器字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。代理用于每个请求。
  • output_loading_info(bool, optional, 默认为 False) — 是否同时返回包含缺失键、意外键和错误消息的字典。
  • local_files_only (bool, optional, 默认为 False) — 是否只加载本地模型权重和配置文件。如果设置为 True,模型将不会从 Hub 下载。
  • token (strbool, optional) — 用作远程文件 HTTP bearer 授权的令牌。如果为 True,则使用 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, optional, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • custom_revision (str, optional) — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,类似于从 Hub 加载自定义管道时的 revision。默认为最新的稳定 🤗 Diffusers 版本。
  • mirror (str, optional) — 用于解决在中国下载模型时可访问性问题的镜像源。我们不保证来源的及时性或安全性,您应参阅镜像站点以获取更多信息。
  • device_map (str, optional) — 指导管道不同组件如何在可用设备上放置的策略。目前,仅支持“balanced”device_map。请查看此链接以了解更多信息。
  • max_memory (Dict, optional) — 每个设备最大内存的字典标识符。如果未设置,将默认为每个 GPU 的最大可用内存和可用的 CPU RAM。
  • offload_folder (stros.PathLike, optional) — 如果 device_map 包含值 "disk",则卸载权重的路径。
  • offload_state_dict (bool, optional) — 如果为 True,则暂时将 CPU 状态字典卸载到硬盘驱动器,以避免在 CPU 状态字典的权重 + 检查点的最大分片不适合时耗尽 CPU RAM。当存在一些磁盘卸载时,默认为 True
  • low_cpu_mem_usage (bool, optional, 如果 torch 版本 >= 1.9.0 则默认为 True,否则为 False) — 通过只加载预训练权重而不初始化权重来加快模型加载。这还在加载模型时尝试在 CPU 内存中(包括峰值内存)不超过 1 倍模型大小。仅支持 PyTorch >= 1.9.0。如果您使用的是旧版 PyTorch,将此参数设置为 True 将会引发错误。
  • use_safetensors (bool, optional,默认为 None) — 如果设置为 None,则在可用安装了 safetensors 库的情况下下载 safetensors 权重。如果设置为 True,则强制从 safetensors 权重加载模型。如果设置为 False,则不加载 safetensors 权重。
  • use_onnx (bool, optional, 默认为 None) — 如果设置为 True,则如果存在 ONNX 权重,将始终下载。如果设置为 False,则永远不会下载 ONNX 权重。默认情况下,use_onnx 默认为 _is_onnx 类属性,对于非 ONNX 管道为 False,对于 ONNX 管道为 True。ONNX 权重包括以 .onnx.pb 结尾的文件。
  • kwargs (剩余的关键字参数字典,可选) — 可用于覆盖可加载和可保存的变量(特定管道类的管道组件)。被覆盖的组件直接传递给管道的 __init__ 方法。有关更多信息,请参见下面的示例。
  • variant (str, optional) — 从指定的变体文件名(例如 "fp16""ema")加载权重。从 from_flax 加载时忽略此项。
  • dduf_file(str, optional) — 从指定的 dduf 文件加载权重。

从预训练的管道权重实例化 PyTorch 扩散管道。

默认情况下,管道设置为评估模式(model.eval())。

如果您收到以下错误消息,则需要针对您的下游任务微调权重

Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.

要使用私有或封闭模型,请使用 huggingface-cli login 登录。

示例

>>> from diffusers import DiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")

>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")

>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler

>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = scheduler

maybe_free_model_hooks

< >

( )

执行以下操作的方法:

  • 卸载所有组件。
  • 删除在使用 enable_model_cpu_offload 时添加的所有模型钩子,然后再次应用它们。如果模型尚未卸载,此函数将不执行任何操作。
  • 如果使用 register_hook() 添加了去噪器组件的有状态扩散器钩子,则重置它们。

请务必将此函数添加到管道的 __call__ 函数末尾,以便在应用 enable_model_cpu_offload 时其功能正常。

numpy_to_pil

< >

( images )

将 NumPy 图像或一批图像转换为 PIL 图像。

remove_all_hooks

< >

( )

移除在使用 enable_sequential_cpu_offloadenable_model_cpu_offload 时添加的所有钩子。

reset_device_map

< >

( )

重置设备映射(如果有)为 None。

save_pretrained

< >

( save_directory: typing.Union[str, os.PathLike] safe_serialization: bool = True variant: typing.Optional[str] = None max_shard_size: typing.Union[int, str, NoneType] = None push_to_hub: bool = False **kwargs )

参数

  • save_directory (stros.PathLike) — 要保存管道的目录。如果不存在,将创建该目录。
  • safe_serialization (bool, optional, 默认为 True) — 是否使用 safetensors 或传统的 PyTorch pickle 方式保存模型。
  • variant (str, optional) — 如果指定,权重将保存为 pytorch_model.<variant>.bin 格式。
  • max_shard_size (intstr, 默认为 None) — 检查点在分片前的最大大小。检查点分片的大小将小于此大小。如果表示为字符串,则需要数字后跟单位(如 "5GB")。如果表示为整数,则单位为字节。请注意,此限制将在一段时间后(从 2024 年 10 月开始)降低,以允许用户升级到最新版本的 diffusers。这是为了在 Hugging Face 生态系统中的不同库(例如 transformersaccelerate)之间为此参数建立一个共同的默认大小。
  • push_to_hub (bool, optional, 默认为 False) — 保存模型后是否将其推送到 Hugging Face 模型中心。您可以使用 repo_id 指定要推送到的仓库(将默认为您命名空间中 save_directory 的名称)。
  • kwargs (Dict[str, Any], optional) — 传递给 push_to_hub() 方法的其他关键字参数。

将管道的所有可保存变量保存到目录。如果其类实现了保存和加载方法,则管道变量可以保存和加载。使用 from_pretrained() 类方法可以轻松重新加载管道。

diffusers.StableDiffusionMixin.enable_freeu

< >

( s1: float s2: float b1: float b2: float )

参数

  • s1 (float) — 阶段1的缩放因子,用于衰减跳跃特征的贡献。这样做是为了减轻增强去噪过程中的“过度平滑效应”。
  • s2 (float) — 阶段2的缩放因子,用于衰减跳跃特征的贡献。这样做是为了减轻增强去噪过程中的“过度平滑效应”。
  • b1 (float) — 阶段1的缩放因子,用于放大骨干特征的贡献。
  • b2 (float) — 阶段2的缩放因子,用于放大骨干特征的贡献。

启用FreeU机制,如https://huggingface.ac.cn/papers/2309.11497中所示。

缩放因子后面的后缀表示它们所应用的阶段。

有关适用于不同管道(如Stable Diffusion v1、v2和Stable Diffusion XL)的已知有效值组合,请参阅官方存储库

diffusers.StableDiffusionMixin.disable_freeu

< >

( )

如果已启用,则禁用FreeU机制。

FlaxDiffusionPipeline

class diffusers.FlaxDiffusionPipeline

< >

( )

Flax-based管道的基类。

FlaxDiffusionPipeline存储了扩散管道的所有组件(模型、调度器和处理器),并提供了加载、下载和保存模型的方法。它还包括以下方法:

  • 启用/禁用去噪迭代的进度条

类属性

  • config_name (str) — 存储所有扩散管道组件的类名和模块名的配置文件名。

from_pretrained

< >

( pretrained_model_name_or_path: typing.Union[str, os.PathLike, NoneType] **kwargs )

参数

  • pretrained_model_name_or_path (stros.PathLike, 可选) — 可以是:

    • 一个字符串,托管在Hub上的预训练管道的repo id(例如stable-diffusion-v1-5/stable-diffusion-v1-5)。
    • 一个目录的路径(例如./my_model_directory),包含使用save_pretrained()保存的模型权重。
  • dtype (jnp.dtype, 可选) — 覆盖默认的jnp.dtype并以此dtype加载模型。
  • force_download (bool, 可选, 默认为 False) — 是否强制(重新)下载模型权重和配置文件,如果已存在缓存版本则覆盖。
  • proxies (Dict[str, str], 可选) — 要按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。代理用于每个请求。
  • output_loading_info(bool, 可选, 默认为 False) — 是否同时返回一个包含缺失键、意外键和错误消息的字典。
  • local_files_only (bool, 可选, 默认为 False) — 是否只加载本地模型权重和配置文件。如果设置为 True,模型将不会从Hub下载。
  • token (strbool, 可选) — 用作远程文件HTTP bearer授权的token。如果为True,则使用diffusers-cli login生成的token(存储在~/.huggingface中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交ID或Git允许的任何标识符。
  • mirror (str, 可选) — 如果您在中国下载模型,为解决可访问性问题而使用的镜像源。我们不保证该源的及时性或安全性,您应参阅镜像站点以获取更多信息。
  • kwargs (剩余的关键字参数字典,可选) — 可用于覆盖特定管道类的可加载和可保存变量(管道组件)。被覆盖的组件直接传递给管道的__init__方法。

从预训练的管道权重实例化基于Flax的扩散管道。

默认情况下,管道设置为评估模式(`model.eval()),并且dropout模块被禁用。

如果您收到以下错误消息,则需要针对您的下游任务微调权重

Some weights of FlaxUNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:

要使用私有或封闭模型,请使用 huggingface-cli login 登录。

示例

>>> from diffusers import FlaxDiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> # Requires to be logged in to Hugging Face hub,
>>> # see more in [the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline, params = FlaxDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     variant="bf16",
...     dtype=jnp.bfloat16,
... )

>>> # Download pipeline, but use a different scheduler
>>> from diffusers import FlaxDPMSolverMultistepScheduler

>>> model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
>>> dpmpp, dpmpp_state = FlaxDPMSolverMultistepScheduler.from_pretrained(
...     model_id,
...     subfolder="scheduler",
... )

>>> dpm_pipe, dpm_params = FlaxStableDiffusionPipeline.from_pretrained(
...     model_id, variant="bf16", dtype=jnp.bfloat16, scheduler=dpmpp
... )
>>> dpm_params["scheduler"] = dpmpp_state

numpy_to_pil

< >

( images )

将 NumPy 图像或一批图像转换为 PIL 图像。

save_pretrained

< >

( save_directory: typing.Union[str, os.PathLike] params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict] push_to_hub: bool = False **kwargs )

参数

  • save_directory (stros.PathLike) — 要保存到的目录。如果不存在,将创建该目录。
  • push_to_hub (bool, 可选, 默认为 False) — 是否在保存模型后将其推送到Hugging Face模型中心。您可以使用repo_id指定要推送到的仓库(默认为您命名空间中的save_directory名称)。
  • kwargs (Dict[str, Any], 可选) — 传递给push_to_hub()方法的其他关键字参数。

将管道的所有可保存变量保存到目录中。如果其类同时实现了保存和加载方法,则可以保存和加载管道变量。使用from_pretrained()类方法可以轻松重新加载管道。

PushToHubMixin

class diffusers.utils.PushToHubMixin

< >

( )

用于将模型、调度器或管道推送到Hugging Face Hub的Mixin。

push_to_hub

< >

( repo_id: str commit_message: typing.Optional[str] = None private: typing.Optional[bool] = None token: typing.Optional[str] = None create_pr: bool = False safe_serialization: bool = True variant: typing.Optional[str] = None )

参数

  • repo_id (str) — 您要将模型、调度器或管道文件推送到的仓库名称。当推送到组织时,它应该包含您的组织名称。repo_id也可以是本地目录的路径。
  • commit_message (str, 可选) — 推送时要提交的消息。默认为"Upload {object}"
  • private (bool, 可选) — 是否将仓库设置为私有。如果为None(默认),除非组织的默认设置为私有,否则仓库将是公共的。如果仓库已存在,则此值将被忽略。
  • token (str, 可选) — 用作远程文件HTTP bearer授权的token。运行huggingface-cli login时生成的token(存储在~/.huggingface中)。
  • create_pr (bool, 可选, 默认为 False) — 是否创建包含上传文件的PR,或直接提交。
  • safe_serialization (bool, 可选, 默认为 True) — 是否将模型权重转换为safetensors格式。
  • variant (str, 可选) — 如果指定,权重将以pytorch_model.<variant>.bin格式保存。

将模型、调度器或管道文件上传到 🤗 Hugging Face Hub。

示例

from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")

# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")

# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")
< > 在 GitHub 上更新