Diffusers 文档
管道
并获得增强的文档体验
开始
管道
管道提供了一种简单的方法,通过将所有必要的组件(多个独立训练的模型、调度器和处理器)捆绑到一个端到端类中,在推理中运行最先进的扩散模型。管道非常灵活,可以调整以使用不同的调度器甚至模型组件。
所有管道都基于 DiffusionPipeline 基类构建,该基类为加载、下载和保存所有组件提供基本功能。使用 from_pretrained() 加载的特定管道类型(例如 StableDiffusionPipeline)会被自动检测到,并且管道组件会被加载并传递给管道的 __init__
函数。
你不应该使用 DiffusionPipeline 类进行训练。扩散管道的各个组件(例如,UNet2DModel 和 UNet2DConditionModel)通常是单独训练的,因此我们建议直接使用它们。
管道不提供任何训练功能。你会注意到 PyTorch 的 autograd 通过使用 torch.no_grad
装饰器装饰 __call__()
方法而被禁用,因为管道不应用于训练。如果你对训练感兴趣,请查看 Training 指南!
下表列出了 🤗 Diffusers 中当前可用的所有管道及其支持的任务。单击管道以查看其摘要和已发表的论文。
DiffusionPipeline
所有管道的基类。
DiffusionPipeline 存储了扩散管道的所有组件(模型、调度器和处理器),并提供了加载、下载和保存模型的方法。它还包括以下方法:
- 将所有 PyTorch 模块移动到您选择的设备上
- 启用/禁用去噪迭代的进度条
类属性
- config_name (
str
) — 存储所有扩散管道组件的类名和模块名的配置文件名。 - _optional_components (
List[str]
) — 所有可选组件的列表,这些组件不必传递给管道即可运行(应由子类重写)。
to
< source >( *args **kwargs ) → DiffusionPipeline
执行管道 dtype 和/或 设备转换。torch.dtype 和 torch.device 从 self.to(*args, **kwargs)
的参数中推断。
如果管道已经具有正确的 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
,则注意力将在一步中计算。
禁用来自 xFormers 的内存高效注意力。
download
< source >( 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 上 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 (
str
或 bool, 可选) — 用作远程文件的 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
< source >( slice_size: typing.Union[int, str, NoneType] = '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
< source >( gpu_id: typing.Optional[int] = None device: typing.Union[torch.device, str] = 'cuda' )
使用 accelerate 将所有模型卸载到 CPU,从而降低内存使用量,且对性能的影响很小。与 enable_sequential_cpu_offload
相比,此方法在调用模型的 forward
方法时,一次将一个完整模型移动到 GPU,并且该模型会一直保留在 GPU 中,直到下一个模型运行。内存节省量低于 enable_sequential_cpu_offload
,但由于 unet
的迭代执行,性能要好得多。
enable_sequential_cpu_offload
< source >( gpu_id: typing.Optional[int] = None device: typing.Union[torch.device, str] = '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: 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
< source >( pipeline **kwargs ) → DiffusionPipeline
从给定的 pipeline 创建新的 pipeline。此方法可用于从现有 pipeline 组件创建新的 pipeline,而无需重新分配额外的内存。
from_pretrained
< source >( pretrained_model_name_or_path: typing.Union[str, os.PathLike, NoneType] **kwargs )
参数
- pretrained_model_name_or_path (
str
或os.PathLike
, 可选) — 可以是以下之一:- 一个字符串,即 Hub 上托管的预训练 pipeline 的 仓库 ID (例如
CompVis/ldm-text2im-large-256
)。 - 一个目录的路径 (例如
./my_pipeline_directory/
),其中包含使用 save_pretrained() 保存的 pipeline 权重。
- 一个字符串,即 Hub 上托管的预训练 pipeline 的 仓库 ID (例如
- torch_dtype (
str
或torch.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
- 一个字符串,即 Hub 上托管的自定义 pipeline 的 仓库 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 Bearer 授权的令牌。如果为True
,则使用从diffusers-cli login
生成的令牌(存储在~/.huggingface
中)。 - revision (
str
, 可选, 默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。 - custom_revision (
str
, 可选) — 要使用的特定模型版本。它可以是分支名称、标签名称或类似于从 Hub 加载自定义 pipeline 时的revision
的提交 ID。默认为最新的稳定 🤗 Diffusers 版本。 - mirror (
str
, 可选) — 镜像源,用于解决在中国下载模型时的可访问性问题。我们不保证来源的及时性或安全性,您应参考镜像站点以获取更多信息。 - device_map (
str
或Dict[str, Union[int, str, torch.device]]
, 可选) — 指定每个子模块应放置位置的映射。无需为每个参数/缓冲区名称定义;一旦给定的模块名称包含在内,它的每个子模块都将被发送到同一设备。设置
device_map="auto"
以使 🤗 Accelerate 自动计算最佳device_map
。有关每个选项的更多信息,请参阅 设计设备映射。 - max_memory (
Dict
, 可选) — 最大内存的字典设备标识符。如果未设置,则默认为每个 GPU 的最大可用内存和可用的 CPU RAM。 - offload_folder (
str
或os.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
此函数卸载所有组件,删除使用 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: 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 (
str
或os.PathLike
) — 用于保存管道的目录。如果不存在,将创建该目录。 - safe_serialization (
bool
, 可选, 默认为True
) — 是否使用safetensors
或传统的 PyTorch 方式 (使用pickle
) 保存模型。 - variant (
str
, 可选) — 如果指定,权重将以pytorch_model.<variant>.bin
格式保存。 - max_shard_size (
int
或str
, 默认为None
) — 分片之前的检查点最大大小。检查点分片后的每个分片大小将小于此大小。如果表示为字符串,则需要是后跟单位的数字(例如"5GB"
)。如果表示为整数,则单位为字节。请注意,此限制将在一段时间后(从 2024 年 10 月开始)减小,以便用户升级到最新版本的diffusers
。 这是为了在 Hugging Face 生态系统 (例如transformers
和accelerate
) 中的不同库之间为此参数建立通用的默认大小。 - push_to_hub (
bool
, 可选, 默认为False
) — 是否在保存模型后将其推送到 Hugging Face 模型中心。 您可以使用repo_id
指定要推送到的存储库(默认为您命名空间中save_directory
的名称)。 - kwargs (
Dict[str, Any]
, 可选) — 传递给 push_to_hub() 方法的附加关键字参数。
将管道的所有可保存变量保存到目录。 如果管道变量的类同时实现了保存和加载方法,则可以保存和加载该变量。 使用 from_pretrained() 类方法可以轻松地重新加载管道。
启用 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: typing.Union[str, os.PathLike, NoneType] **kwargs )
参数
- pretrained_model_name_or_path (
str
或os.PathLike
,可选) — 可以是:- 一个字符串,Hub 上的预训练 pipeline 的 repo id (例如
runwayml/stable-diffusion-v1-5
)。 - 一个目录的路径 (例如
./my_model_directory
),其中包含使用 save_pretrained() 保存的模型权重。
- 一个字符串,Hub 上的预训练 pipeline 的 repo id (例如
- dtype (
str
或jnp.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 (
str
或 bool,可选) — 用作远程文件的 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 图像或一批图像转换为 PIL 图像。
save_pretrained
< source >( 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 (
str
或os.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
一个 Mixin,用于将模型、scheduler 或 pipeline 推送到 Hugging Face Hub。
push_to_hub
< source >( 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")