Diffusers 文档

管道

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始

管道

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

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

你不应该使用 DiffusionPipeline 类进行训练。扩散管道的各个组件(例如,UNet2DModelUNet2DConditionModel)通常是单独训练的,因此我们建议直接使用它们。


管道不提供任何训练功能。你会注意到 PyTorch 的 autograd 通过使用 torch.no_grad 装饰器装饰 __call__() 方法而被禁用,因为管道不应用于训练。如果你对训练感兴趣,请查看 Training 指南!

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

管道 任务
aMUSEd 文本到图像
AnimateDiff 文本到视频
Attend-and-Excite 文本到图像
AudioLDM 文本到音频
AudioLDM2 文本到音频
AuraFlow 文本到图像
BLIP Diffusion 文本到图像
CogVideoX 文本到视频
Consistency Models 无条件图像生成
ControlNet 文本到图像, 图像到图像, 图像修复
ControlNet with Flux.1 文本到图像
ControlNet with Hunyuan-DiT 文本到图像
ControlNet with Stable Diffusion 3 文本到图像
ControlNet with Stable Diffusion XL 文本到图像
ControlNet-XS 文本到图像
ControlNet-XS with Stable Diffusion XL 文本到图像
Dance Diffusion 无条件音频生成
DDIM 无条件图像生成
DDPM 无条件图像生成
DeepFloyd IF 文本到图像, 图像到图像, 图像修复, 超分辨率
DiffEdit 图像修复
DiT 文本到图像
Flux 文本到图像
Hunyuan-DiT 文本到图像
I2VGen-XL 文本到视频
InstructPix2Pix 图像编辑
Kandinsky 2.1 文本到图像, 图像到图像, 图像修复, 插值
Kandinsky 2.2 文本到图像, 图像到图像, 图像修复
Kandinsky 3 文本到图像, 图像到图像
Kolors 文本到图像
Latent Consistency Models 文本到图像
Latent Diffusion 文本到图像, 超分辨率
Latte 文本到图像
LEDITS++ 图像编辑
Lumina-T2X 文本到图像
Marigold 深度
MultiDiffusion 文本到图像
MusicLDM 文本到音频
PAG 文本到图像
Paint by Example 图像修复
PIA 图像到视频
PixArt-α 文本到图像
PixArt-Σ 文本到图像
Self-Attention Guidance 文本到图像
Semantic Guidance 文本到图像
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 文本到图像, 图像到文本, 图像变体, 文本变体, 无条件图像生成, 无条件音频生成
Value-guided planning value guided sampling
Wuerstchen 文本到图像

DiffusionPipeline

class diffusers.DiffusionPipeline

< >

( )

所有管道的基类。

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

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

类属性

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

__call__

( *args **kwargs )

将自身作为函数调用。

device

< >

( ) torch.device

返回:

torch.device

管道所在的 torch 设备。

to

< >

( *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,则按原样返回。否则,返回的管道是 self 的副本,具有所需的 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 返回具有指定 devicedtype 的管道

components

< >

( )

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

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

示例

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

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

disable_attention_slicing

< >

( )

禁用切片注意力计算。如果先前调用了 enable_attention_slicing,则注意力将在一步中计算。

disable_xformers_memory_efficient_attention

< >

( )

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

download

< >

( 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 上 Community 下托管的社区管道的文件名。有效的文件名必须与文件名匹配,而不是管道脚本(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 时,此参数将被忽略。
  • use_safetensors (bool, 可选, 默认为 None) — 如果设置为 None,则在 safetensors 权重可用安装了 safetensors 库的情况下下载 safetensors 权重。如果设置为 True,则强制从 safetensors 权重加载模型。如果设置为 False,则不加载 safetensors 权重。
  • use_onnx (bool, 可选, 默认为 False) — 如果设置为 True,则始终下载 ONNX 权重(如果存在)。如果设置为 False,则永远不会下载 ONNX 权重。默认情况下,use_onnx 默认为 _is_onnx 类属性,对于非 ONNX 管道为 False,对于 ONNX 管道为 True。ONNX 权重包括以 .onnx.pb 结尾的文件。
  • trust_remote_code (bool, 可选, 默认为 False) — 是否允许 Hub 上自定义管道和组件在其自己的文件中定义。此选项仅应为信任的仓库设置为 True,并且您已阅读其中的代码,因为它将在您的本地计算机上执行 Hub 上存在的代码。

返回:

os.PathLike

下载的管道的路径。

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

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

enable_attention_slicing

< >

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

参数

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

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

⚠️ 如果您已经在使用 PyTorch 2.0 或 xFormers 中的 scaled_dot_product_attention (SDPA),请勿启用注意力切片。这些注意力计算已经非常节省内存,因此您无需启用此功能。如果您在 SDPA 或 xFormers 中启用注意力切片,可能会导致严重的速度下降!

示例

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

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "runwayml/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] = 'cuda' )

参数

  • gpu_id (int, 可选) — 推理中应使用的加速器的 ID。如果未指定,则默认为 0。
  • device (torch.Devicestr, 可选, 默认为 “cuda”) — 推理中应使用的加速器的 PyTorch 设备类型。如果未指定,则默认为 “cuda”。

使用 accelerate 将所有模型卸载到 CPU,从而降低内存使用量,且对性能的影响很小。与 enable_sequential_cpu_offload 相比,此方法在调用模型的 forward 方法时,一次将一个完整模型移动到 GPU,并且该模型会一直保留在 GPU 中,直到下一个模型运行。内存节省量低于 enable_sequential_cpu_offload,但由于 unet 的迭代执行,性能要好得多。

enable_sequential_cpu_offload

< >

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

参数

  • gpu_id (int, 可选) — 推理中应使用的加速器的 ID。如果未指定,则默认为 0。
  • device (torch.Devicestr, 可选, 默认为 “cuda”) — 推理中应使用的加速器的 PyTorch 设备类型。如果未指定,则默认为 “cuda”。

使用 🤗 Accelerate 将所有模型卸载到 CPU,显著降低内存使用量。调用时,所有 torch.nn.Module 组件(self._exclude_from_cpu_offload 中的组件除外)的状态字典将保存到 CPU,然后移动到 torch.device('meta'),并且仅当其特定子模块调用 forward 方法时才加载到 GPU。卸载是基于子模块进行的。内存节省量高于 enable_model_cpu_offload,但性能较低。

enable_xformers_memory_efficient_attention

< >

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

参数

  • attention_op (Callable, 可选) — 覆盖默认的 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) — 要从中创建新 pipeline 的 pipeline。

返回:

DiffusionPipeline

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

从给定的 pipeline 创建新的 pipeline。此方法可用于从现有 pipeline 组件创建新的 pipeline,而无需重新分配额外的内存。

示例

>>> from diffusers import StableDiffusionPipeline, StableDiffusionSAGPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained("runwayml/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, 可选) — 可以是以下之一:

    • 一个字符串,即 Hub 上托管的预训练 pipeline 的 仓库 ID (例如 CompVis/ldm-text2im-large-256)。
    • 一个目录的路径 (例如 ./my_pipeline_directory/),其中包含使用 save_pretrained() 保存的 pipeline 权重。
  • torch_dtype (strtorch.dtype, 可选) — 覆盖默认的 torch.dtype 并使用另一种 dtype 加载模型。如果传递 “auto”,则 dtype 会自动从模型的权重中派生。
  • custom_pipeline (str, 可选) —

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

    可以是以下之一:

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

    有关如何加载和创建自定义 pipeline 的更多信息,请查看 加载和添加自定义 Pipeline

  • force_download (bool, 可选, 默认为 False) — 是否强制(重新)下载模型权重和配置文件,覆盖已存在的缓存版本。
  • cache_dir (Union[str, os.PathLike], 可选) — 如果不使用标准缓存,则下载的预训练模型配置的缓存目录路径。
  • 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, 可选) — 要使用的特定模型版本。它可以是分支名称、标签名称或类似于从 Hub 加载自定义 pipeline 时的 revision 的提交 ID。默认为最新的稳定 🤗 Diffusers 版本。
  • mirror (str, 可选) — 镜像源,用于解决在中国下载模型时的可访问性问题。我们不保证来源的及时性或安全性,您应参考镜像站点以获取更多信息。
  • device_map (strDict[str, Union[int, str, torch.device]], 可选) — 指定每个子模块应放置位置的映射。无需为每个参数/缓冲区名称定义;一旦给定的模块名称包含在内,它的每个子模块都将被发送到同一设备。

    设置 device_map="auto" 以使 🤗 Accelerate 自动计算最佳 device_map。有关每个选项的更多信息,请参阅 设计设备映射

  • max_memory (Dict, 可选) — 最大内存的字典设备标识符。如果未设置,则默认为每个 GPU 的最大可用内存和可用的 CPU RAM。
  • offload_folder (stros.PathLike, 可选) — 如果 device_map 包含值 "disk",则为卸载权重的路径。
  • offload_state_dict (bool, 可选) — 如果为 True,则临时将 CPU 状态字典卸载到硬盘,以避免在 CPU 状态字典的权重 + 检查点最大分片不符合时耗尽 CPU RAM。当存在磁盘卸载时,默认为 True
  • low_cpu_mem_usage (bool, 可选, 如果 torch 版本 >= 1.9.0 则默认为 True,否则为 False) — 加速模型加载,仅加载预训练权重,而不初始化权重。 这也尝试在加载模型时,CPU 内存(包括峰值内存)的使用量不超过 1 倍模型大小。 仅支持 PyTorch >= 1.9.0。 如果您使用的是旧版本的 PyTorch,则将此参数设置为 True 将引发错误。
  • use_safetensors (bool, 可选, 默认为 None) — 如果设置为 None,则当 safetensors 权重可用 **且** 安装了 safetensors 库时,会下载 safetensors 权重。 如果设置为 True,则强制从 safetensors 权重加载模型。 如果设置为 False,则不加载 safetensors 权重。
  • use_onnx (bool, 可选, 默认为 None) — 如果设置为 True,则始终下载 ONNX 权重(如果存在)。 如果设置为 False,则永远不会下载 ONNX 权重。 默认情况下,use_onnx 默认为 _is_onnx 类属性,对于非 ONNX 管道为 False,对于 ONNX 管道为 True。 ONNX 权重包括以 .onnx.pb 结尾的文件。
  • kwargs (剩余的关键字参数字典, 可选) — 可用于覆盖可加载和可保存的变量(特定管道类的管道组件)。 覆盖的组件直接传递给管道的 __init__ 方法。 有关更多信息,请参见下面的示例。
  • variant (str, 可选) — 从指定的变体文件名(例如 "fp16""ema")加载权重。 从 from_flax 加载时,此参数将被忽略。

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

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

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

Some weights of UNet2DConditionModel were not initialized from the model checkpoint at runwayml/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("runwayml/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 添加的所有模型钩子,然后再次应用它们。 如果模型尚未卸载,则此函数不执行任何操作。 确保将此函数添加到管道的 __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, 可选, 默认为 True) — 是否使用 safetensors 或传统的 PyTorch 方式 (使用 pickle) 保存模型。
  • variant (str, 可选) — 如果指定,权重将以 pytorch_model.<variant>.bin 格式保存。
  • max_shard_size (intstr, 默认为 None) — 分片之前的检查点最大大小。检查点分片后的每个分片大小将小于此大小。如果表示为字符串,则需要是后跟单位的数字(例如 "5GB")。如果表示为整数,则单位为字节。请注意,此限制将在一段时间后(从 2024 年 10 月开始)减小,以便用户升级到最新版本的 diffusers。 这是为了在 Hugging Face 生态系统 (例如 transformersaccelerate) 中的不同库之间为此参数建立通用的默认大小。
  • push_to_hub (bool, 可选, 默认为 False) — 是否在保存模型后将其推送到 Hugging Face 模型中心。 您可以使用 repo_id 指定要推送到的存储库(默认为您命名空间中 save_directory 的名称)。
  • kwargs (Dict[str, Any], 可选) — 传递给 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://arxiv.org/abs/2309.11497 中所述。

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

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

diffusers.StableDiffusionMixin.disable_freeu

< >

( )

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

FlaxDiffusionPipeline

class diffusers.FlaxDiffusionPipeline

< >

( )

基于 Flax 的管道的基类。

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 上的预训练 pipeline 的 repo id (例如 runwayml/stable-diffusion-v1-5)。
    • 一个目录的路径 (例如 ./my_model_directory),其中包含使用 save_pretrained() 保存的模型权重。
  • dtype (strjnp.dtype可选) — 覆盖默认的 jnp.dtype 并使用此 dtype 加载模型。如果为 "auto",则 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 (剩余的关键字参数字典,可选) — 可用于覆盖特定 pipeline 类的可加载和可保存变量(pipeline 组件)。覆盖的组件直接传递给 pipelines 的 __init__ 方法。

从预训练的 pipeline 权重实例化一个基于 Flax 的 diffusion pipeline。

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

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

Some weights of FlaxUNet2DConditionModel were not initialized from the model checkpoint at runwayml/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(
...     "runwayml/stable-diffusion-v1-5",
...     variant="bf16",
...     dtype=jnp.bfloat16,
... )

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

>>> model_id = "runwayml/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 Model Hub。 您可以使用 repo_id 指定要推送到的仓库 (默认为您命名空间中 save_directory 的名称)。
  • kwargs (Dict[str, Any]可选) — 传递给 push_to_hub() 方法的附加关键字参数。

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

PushToHubMixin

class diffusers.utils.PushToHubMixin

< >

( )

一个 Mixin,用于将模型、scheduler 或 pipeline 推送到 Hugging Face Hub。

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) — 您想要将模型、scheduler 或 pipeline 文件推送到的仓库的名称。当推送到组织时,它应包含您的组织名称。 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 格式保存。

将模型、调度器或 pipeline 文件上传到 🤗 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 上更新