管道
管道提供了一种简单的方法,通过将所有必要的组件(多个独立训练的模型、调度器和处理器)捆绑到一个端到端的类中,在推理中运行最先进的扩散模型。管道灵活,可以适应使用不同的调度器甚至模型组件。
所有管道都基于 DiffusionPipeline 类构建,该类提供用于加载、下载和保存所有组件的基本功能。通过 from_pretrained() 加载的特定管道类型(例如 StableDiffusionPipeline)会自动检测,并且管道组件会被加载并传递给管道的 __init__
函数。
您不应该使用 DiffusionPipeline 类进行训练。扩散管道的各个组件(例如 UNet2DModel 和 UNet2DConditionModel)通常会单独训练,因此我们建议您直接使用它们。
管道不提供任何训练功能。您会注意到,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
所有管道的基类。
DiffusionPipeline 存储扩散管道的所有组件(模型、调度器和处理器),并提供用于加载、下载和保存模型的方法。它还包括用于以下方面的方法:
- 将所有 PyTorch 模块移动到您选择的设备
- 启用/禁用去噪迭代的进度条
类属性
- config_name (
str
) — 存储所有扩散管道组件的类和模块名称的配置文件名。 - _optional_components (
List[str]
) — 所有可选组件的列表,这些组件不必传递给管道才能正常工作(应由子类覆盖)。
to
< source >( *args **kwargs ) → DiffusionPipeline
执行管道 dtype 和/或 设备转换。从 self.to(*args, **kwargs).
的参数中推断出 torch.dtype 和 torch.device。
如果管道已经具有正确的 torch.dtype 和 torch.device,则按原样返回。否则,返回的管道是 self 的副本,具有所需的 torch.dtype 和 torch.device。
以下是调用 to
的方法
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
,则注意力计算将在一步完成。
下载
< 来源 >( pretrained_model_name **kwargs ) → os.PathLike
参数
- pretrained_model_name (
str
或os.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 下载。 - 令牌 (
str
或 bool, 可选) — 用作远程文件 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' )
启用分片注意力计算。启用此选项后,注意力模块将输入张量分成切片,以分多个步骤计算注意力。对于多个注意力头,计算在每个头上顺序执行。这有助于节省一些内存,以换取速度略微下降。
⚠️ 如果您已经在使用来自 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' )
使用加速器将所有模型卸载到 CPU,通过对性能影响很小来减少内存使用。与 enable_sequential_cpu_offload
相比,此方法在调用模型的 forward
方法时将整个模型一次移动到 GPU,并且该模型将保留在 GPU 中直到下一个模型运行。与 enable_sequential_cpu_offload
相比,内存节省较低,但由于 unet
的迭代执行,性能要好得多。
enable_sequential_cpu_offload
< 源代码 >( gpu_id: Optional = None device: Union = '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
< source >( 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
< source >( pipeline **kwargs ) → DiffusionPipeline
从给定的管道创建一个新的管道。此方法可用于从现有的管道组件创建新的管道,而无需重新分配额外的内存。
from_pretrained
< source >( pretrained_model_name_or_path: Union **kwargs )
参数
- pretrained_model_name_or_path (
str
或os.PathLike
, 可选) — 可以是以下任一:- 字符串,预训练管道在 Hub 上的仓库 ID(例如
CompVis/ldm-text2im-large-256
)。 - 指向目录的路径(例如
./my_pipeline_directory/
),该目录包含使用 save_pretrained() 保存的管道权重。
- 字符串,预训练管道在 Hub 上的仓库 ID(例如
- torch_dtype (
str
或torch.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
的文件,该文件定义了自定义管道。
有关如何加载和创建自定义管道的更多信息,请查看 加载和添加自定义管道。
- 字符串,自定义管道在 Hub 上的仓库 ID(例如
- 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 (
str
或 bool, 可选) — 用作远程文件 HTTP 授权头的 token。 如果为True
,则使用通过diffusers-cli login
生成的 token(存储在~/.huggingface
中)。 - revision (
str
, 可选, 默认为"main"
) — 要使用的特定模型版本。 它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。 - custom_revision (
str
, 可选) — 要使用的特定模型版本。 它可以是分支名称、标签名称或类似于revision
的提交 ID,用于从 Hub 加载自定义管道。 默认为最新的稳定 🤗 Diffusers 版本。 - mirror (
str
, 可选) — 如果您在中国下载模型,则用于解决可访问性问题的镜像源。 我们不保证源的及时性或安全性,您应该参考镜像网站以了解更多信息。 - device_map (
str
或Dict[str, Union[int, str, torch.device]]
, 可选) — 指定每个子模块应该放置位置的映射。 它不需要为每个参数/缓冲区名称定义; 一旦给定的模块名称包含在内,它的每个子模块都将被发送到相同的设备。设置
device_map="auto"
以使 🤗 Accelerate 自动计算最优化的device_map
。 有关每个选项的更多信息,请参阅 设计设备映射。 - 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
卸载所有组件,删除在使用 enable_model_cpu_offload
时添加的所有模型挂钩,然后再次应用它们。如果模型尚未卸载,则此函数将不执行任何操作。确保将此函数添加到您的管道的 __call__
函数的末尾,以便在应用 enable_model_cpu_offload
时正常运行。
将 NumPy 图像或一批图像转换为 PIL 图像。
移除使用enable_sequential_cpu_offload
或 enable_model_cpu_offload
时添加的所有钩子。
将所有设备映射(如果有)重置为 None。
save_pretrained
< source > ( save_directory: Union safe_serialization: bool = True variant: Optional = None push_to_hub: bool = False **kwargs )
参数
- save_directory (
str
或os.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
< source > ( s1: float s2: float b1: float b2: float )
启用 FreeU 机制,如 https://arxiv.org/abs/2309.11497 中所述。
缩放因子后面的后缀代表它们被应用的阶段。
有关已知对不同管道(如 Stable Diffusion v1、v2 和 Stable Diffusion XL)有效的值组合,请参阅 官方仓库。
如果已启用,则禁用 FreeU 机制。
FlaxDiffusionPipeline
基于 Flax 的管道的基类。
FlaxDiffusionPipeline 存储扩散管道的所有组件(模型、调度器和处理器),并提供用于加载、下载和保存模型的方法。它还包括方法来
- 启用/禁用去噪迭代的进度条
类属性
- config_name (
str
) — 存储所有扩散管道组件的类和模块名称的配置文件名。
from_pretrained
< source > ( pretrained_model_name_or_path: Union **kwargs )
参数
- pretrained_model_name_or_path (
str
或os.PathLike
, 可选) — 可以是以下任一:- 一个字符串,表示托管在 Hub 上的预训练管道的仓库 ID(例如
runwayml/stable-diffusion-v1-5
)。 - 一个路径,指向使用 save_pretrained() 保存的模型权重的目录(例如
./my_model_directory
)。
- 一个字符串,表示托管在 Hub 上的预训练管道的仓库 ID(例如
- dtype (
str
或jnp.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 (
str
或 bool, 可选) — 用作远程文件 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 图像或一批图像转换为 PIL 图像。
save_pretrained
< source > ( save_directory: Union params: Union push_to_hub: bool = False **kwargs )
参数
- save_directory (
str
或os.PathLike
) — 要保存到的目录。如果目录不存在,则会创建它。 - push_to_hub (
bool
, 可选,默认值为False
) — 是否在保存模型后将其推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到哪个仓库(默认为您命名空间中的save_directory
的名称)。 - kwargs (
Dict[str, Any]
, 可选) — 传递给 push_to_hub() 方法的额外关键字参数。
将管道的所有可保存变量保存到目录中。如果管道的变量类实现了保存和加载方法,则该变量可以被保存和加载。可以使用 from_pretrained() 类方法轻松重新加载管道。
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
, 可选) — 创建的仓库是否应该是私有的。 - 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")