Diffusers 文档

管道

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始

管道

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

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

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


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

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

管道 任务
AltDiffusion image2image
AnimateDiff text2video
Attend-and-Excite text2image
Audio Diffusion image2audio
AudioLDM text2audio
AudioLDM2 text2audio
BLIP Diffusion text2image
Consistency Models 无条件图像生成
ControlNet text2image、image2image、inpainting
ControlNet with Stable Diffusion XL text2image
ControlNet-XS text2image
ControlNet-XS with Stable Diffusion XL text2image
Cycle Diffusion image2image
Dance Diffusion 无条件音频生成
DDIM 无条件图像生成
DDPM 无条件图像生成
DeepFloyd IF text2image、image2image、inpainting、超分辨率
DiffEdit inpainting
DiT text2image
GLIGEN text2image
InstructPix2Pix 图像编辑
Kandinsky 2.1 text2image、image2image、inpainting、插值
Kandinsky 2.2 text2image、image2image、inpainting
Kandinsky 3 text2image、image2image
Latent Consistency Models text2image
Latent Diffusion text2image、超分辨率
LDM3D text2image、text-to-3D、text-to-pano、上采样
LEDITS++ 图像编辑
MultiDiffusion text2image
MusicLDM text2audio
Paint by Example inpainting
ParaDiGMS text2image
Pix2Pix Zero 图像编辑
PixArt-α text2image
PNDM 无条件图像生成
RePaint inpainting
Score SDE VE 无条件图像生成
Self-Attention Guidance text2image
Semantic Guidance text2image
Shap-E text-to-3D、image-to-3D
Spectrogram Diffusion
Stable Audio text2audio
稳定扩散 text2image、image2image、depth2image、inpainting、图像变体、潜在上采样、超分辨率
Stable Diffusion Model Editing 模型编辑
Stable Diffusion XL text2image、image2image、inpainting
Stable Diffusion XL Turbo text2image、image2image、inpainting
Stable unCLIP text2image、图像变体
Stochastic Karras VE 无条件图像生成
T2I-Adapter text2image
Text2Video text2video、video2video
Text2Video-Zero text2video
unCLIP text2image、图像变体
无条件潜在扩散 无条件图像生成
UniDiffuser text2image、image2text、图像变体、文本变体、无条件图像生成、无条件音频生成
值引导规划 值引导采样
Versatile Diffusion text2image、图像变体
VQ Diffusion text2image
Wuerstchen text2image

DiffusionPipeline

class diffusers.DiffusionPipeline

< >

( )

所有管道的基类。

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

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

类属性

  • config_name (str) — 存储所有扩散管道组件的类和模块名称的配置文件名。
  • _optional_components (List[str]) — 所有可选组件的列表,这些组件不必传递给管道才能正常工作(应由子类覆盖)。

__call__

( *args **kwargs )

将自身作为函数调用。

device

< >

( ) torch.device

返回值

torch.device

管道所在的 PyTorch 设备。

to

< >

( *args **kwargs ) DiffusionPipeline

参数

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

返回值

DiffusionPipeline

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

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

如果管道已经具有正确的 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 的管道

组件

< >

( )

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)

禁用注意力切片

< >

( )

禁用切片注意力计算。如果之前调用了 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) — 是否强制(重新)下载模型权重和配置文件,覆盖现有的缓存版本(如果存在)。
  • 代理 (Dict[str, str], 可选) — 按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。这些代理在每个请求上使用。
  • 输出加载信息(bool, 可选, 默认值为 False) — 是否也返回一个包含缺失键、意外键和错误消息的字典。
  • 仅加载本地文件 (bool, 可选, 默认值为 False) — 是否只加载本地模型权重和配置文件。如果设置为 True,模型将不会从 Hub 下载。
  • 令牌 (strbool, 可选) — 用作远程文件 HTTP 授权头的令牌。如果为 True,则使用从 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • 版本 (str, 可选, 默认值为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • 自定义版本 (str, 可选, 默认值为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,类似于从 Hub 加载自定义管道时的 revision。它可以是从 GitHub 加载自定义管道时的 🤗 Diffusers 版本,否则在从 Hub 加载时默认为 "main"
  • 镜像 (str, 可选) — 如果您在中国下载模型,则使用镜像源来解决可访问性问题。我们不保证来源的及时性或安全性,您应该参考镜像网站以获取更多信息。
  • 变体 (str, 可选) — 从指定的变体文件名(如 "fp16""ema")加载权重。在从 from_flax 加载时,此选项会被忽略。
  • 使用 safetensors (bool, 可选, 默认值为 None) — 如果设置为 None,则如果 safetensors 权重可用 safetensors 库已安装,则会下载 safetensors 权重。如果设置为 True,则强制从 safetensors 权重加载模型。如果设置为 False,则不会加载 safetensors 权重。
  • 使用 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: Union = '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: Optional = None device: Union = 'cuda' )

参数

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

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

enable_sequential_cpu_offload

< >

( gpu_id: Optional = None device: Union = '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: Optional = 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) — 用于创建新管道的管道。

返回值

DiffusionPipeline

一个与 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: Union **kwargs )

参数

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

    • 字符串,预训练管道在 Hub 上的仓库 ID(例如 CompVis/ldm-text2im-large-256)。
    • 指向目录的路径(例如 ./my_pipeline_directory/),该目录包含使用 save_pretrained() 保存的管道权重。
  • torch_dtype (strtorch.dtype, 可选) — 覆盖默认的 torch.dtype,并使用另一种数据类型加载模型。如果传递“auto”,则数据类型将自动从模型的权重中推断出来。
  • custom_pipeline (str, 可选) —

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

    可以是以下任一:

    • 字符串,自定义管道在 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, 可选, 默认为 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 授权头的 token。 如果为 True,则使用通过 diffusers-cli login 生成的 token(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。 它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • custom_revision (str, 可选) — 要使用的特定模型版本。 它可以是分支名称、标签名称或类似于 revision 的提交 ID,用于从 Hub 加载自定义管道。 默认为最新的稳定 🤗 Diffusers 版本。
  • mirror (str, 可选) — 如果您在中国下载模型,则用于解决可访问性问题的镜像源。 我们不保证源的及时性或安全性,您应该参考镜像网站以了解更多信息。
  • device_map (strDict[str, Union[int, str, torch.device]], 可选) — 指定每个子模块应该放置位置的映射。 它不需要为每个参数/缓冲区名称定义; 一旦给定的模块名称包含在内,它的每个子模块都将被发送到相同的设备。

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

  • offload_folder (stros.PathLike, 可选) — 如果 device_map 包含值 "disk",则为卸载权重的路径。
  • offload_state_dict (bool, 可选) — 如果为 True,则将 CPU 状态字典临时卸载到硬盘驱动器,以避免在 CPU 状态字典的权重 + 检查点最大分片无法容纳的情况下出现 CPU RAM 耗尽的情况。当存在磁盘卸载时,默认为 True
  • low_cpu_mem_usage (bool, 可选,如果 PyTorch 版本 >= 1.9.0 则默认为 True,否则为 False) — 只加载预训练的权重,而不初始化权重,以加快模型加载速度。这还尝试在加载模型时在 CPU 内存中(包括峰值内存)不使用超过模型大小 1 倍的内存。仅支持 PyTorch >= 1.9.0。如果您使用的是旧版本的 PyTorch,将此参数设置为 True 会引发错误。
  • use_safetensors (bool, 可选,默认为 None) — 如果设置为 None,则如果可用并且安装了 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")加载权重。在从 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: Union safe_serialization: bool = True variant: Optional = None push_to_hub: bool = False **kwargs )

参数

  • save_directory (stros.PathLike) — 要将管道保存到的目录。如果目录不存在,将创建该目录。
  • safe_serialization (bool, 可选, 默认为 True) — 是否使用 safetensors 或使用 pickle 的传统 PyTorch 方式保存模型。
  • variant (str, 可选) — 如果指定,权重将以 pytorch_model.<variant>.bin 格式保存。
  • 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) — 第一阶段的缩放因子,用于衰减跳跃特征的贡献。这样做是为了减轻增强降噪过程中的“过度平滑效应”。
  • s2 (float) — 第二阶段的缩放因子,用于衰减跳跃特征的贡献。这样做是为了减轻增强降噪过程中的“过度平滑效应”。
  • b1 (float) — 第一阶段的缩放因子,用于放大主干特征的贡献。
  • b2 (float) — 第二阶段的缩放因子,用于放大主干特征的贡献。

启用 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: Union **kwargs )

参数

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

    • 一个字符串,表示托管在 Hub 上的预训练管道的仓库 ID(例如 runwayml/stable-diffusion-v1-5)。
    • 一个路径,指向使用 save_pretrained() 保存的模型权重的目录(例如 ./my_model_directory)。
  • dtype (strjnp.dtype, 可选) — 覆盖默认的 jnp.dtype 并以该数据类型加载模型。如果为 "auto",则数据类型将自动从模型的权重
  • 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 身份验证的令牌。如果为 True,则使用从 diffusers-cli login 生成的令牌(存储在 ~/.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 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: Union params: Union 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: Optional = None private: Optional = None token: Optional = None create_pr: bool = False safe_serialization: bool = True variant: Optional = None )

参数

  • repo_id (str) — 您要将模型、调度器或管道文件推送到哪个仓库的名称。在推送到组织时,它应该包含您的组织名称。repo_id 也可以是本地目录的路径。
  • commit_message (str, 可选) — 推送时要提交的消息。默认为 "Upload {object}"
  • private (bool, 可选) — 创建的仓库是否应该是私有的。
  • 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 上更新