Diffusers 文档
LoRA
并获得增强的文档体验
开始使用
LoRA
LoRA 是一种快速轻量级的训练方法,它插入并训练明显更少数量的参数,而不是所有模型参数。这会生成一个更小的文件(约 100 MB),并使快速训练模型以学习新概念变得更容易。LoRA 权重通常加载到 denoiser、文本编码器或两者中。denoiser 通常对应于 UNet (UNet2DConditionModel,例如)或 Transformer (SD3Transformer2DModel,例如)。有几个类用于加载 LoRA 权重
StableDiffusionLoraLoaderMixin
提供了用于加载和卸载、融合和解融合、启用和禁用以及更多管理 LoRA 权重的功能。此类可用于任何模型。StableDiffusionXLLoraLoaderMixin
是StableDiffusionLoraLoaderMixin
类的 Stable Diffusion (SDXL) 版本,用于加载和保存 LoRA 权重。它只能与 SDXL 模型一起使用。SD3LoraLoaderMixin
为 Stable Diffusion 3 提供了类似的功能。FluxLoraLoaderMixin
为 Flux 提供了类似的功能。CogVideoXLoraLoaderMixin
为 CogVideoX 提供了类似的功能。Mochi1LoraLoaderMixin
为 Mochi 提供了类似的功能。AmusedLoraLoaderMixin
用于 AmusedPipeline。LoraBaseMixin
提供了一个基类,其中包含几个用于融合、解融合、卸载 LoRA 等的实用方法。
要了解有关如何加载 LoRA 权重的更多信息,请参阅 LoRA 加载指南。
StableDiffusionLoraLoaderMixin
将 LoRA 层加载到 Stable Diffusion UNet2DConditionModel 和 CLIPTextModel
中。
load_lora_into_text_encoder
< source >( state_dict network_alphas text_encoder prefix = None lora_scale = 1.0 adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键应以附加的text_encoder
为前缀,以区分 unet lora 层。 - network_alphas (
Dict[str, float]
) — 用于稳定学习和防止下溢的网络 alpha 值。此值的含义与 kohya-ss 训练器脚本中的--network_alpha
选项相同。请参阅 此链接。 - text_encoder (
CLIPTextModel
) — 要将 LoRA 层加载到的文本编码器模型。 - prefix (
str
) —state_dict
中text_encoder
的预期前缀。 - lora_scale (
float
) — 在 lora 线性层的输出与常规 lora 层的输出相加之前,lora 线性层的输出的缩放程度。 - adapter_name (
str
, 可选) — 用于引用加载的 adapter 模型的 Adapter 名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的 adapter 总数。 - low_cpu_mem_usage (
bool
, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这会将 state_dict
中指定的 LoRA 层加载到 text_encoder
中
load_lora_into_unet
< source >( state_dict network_alphas unet adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以使用额外的前缀unet
来区分文本编码器 lora 层。 - network_alphas (
Dict[str, float]
) — 用于稳定学习和防止下溢的网络 alpha 值。此值的含义与 kohya-ss 训练脚本中的--network_alpha
选项相同。请参阅 此链接。 - unet (
UNet2DConditionModel
) — 要将 LoRA 层加载到的 UNet 模型。 - adapter_name (
str
, optional) — 用于引用加载的适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这将把 state_dict
中指定的 LoRA 层加载到 unet
中。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name = None **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
oros.PathLike
ordict
) — 参见 lora_state_dict()。 - adapter_name (
str
, optional) — 用于引用加载的适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。 - kwargs (
dict
, optional) — 参见 lora_state_dict()。
将 pretrained_model_name_or_path_or_dict
中指定的 LoRA 权重加载到 self.unet
和 self.text_encoder
中。
所有 kwargs 都转发到 self.lora_state_dict
。
有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。
有关如何将状态字典加载到 self.unet
中的更多详细信息,请参阅 load_lora_into_unet()。
有关如何将状态字典加载到 self.text_encoder
中的更多详细信息,请参阅 load_lora_into_text_encoder()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
oros.PathLike
ordict
) — 可以是以下之一:- 一个字符串,预训练模型的模型 ID(例如
google/ddpm-celebahq-256
),托管在 Hub 上。 - 一个目录的路径(例如
./my_model_directory
),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。 - 一个 torch 状态字典。
- 一个字符串,预训练模型的模型 ID(例如
- cache_dir (
Union[str, os.PathLike]
, optional) — 如果不使用标准缓存,则下载的预训练模型配置缓存到的目录路径。 - force_download (
bool
, optional, defaults toFalse
) — 是否强制(重新)下载模型权重和配置文件,覆盖已存在的缓存版本。 - proxies (
Dict[str, str]
, optional) — 按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理用于每个请求。 - local_files_only (
bool
, optional, defaults toFalse
) — 是否仅加载本地模型权重和配置文件。如果设置为True
,则不会从 Hub 下载模型。 - token (
str
or bool, optional) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为True
,则使用从diffusers-cli login
生成的令牌(存储在~/.huggingface
中)。 - revision (
str
, optional, defaults to"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。 - subfolder (
str
, optional, defaults to""
) — Hub 上或本地的较大模型库中模型文件的子文件夹位置。 - weight_name (
str
, optional, defaults to None) — 序列化状态字典文件的名称。
返回 lora 权重和网络 Alpha 值的状态字典。
我们支持有限容量地加载 A1111 格式的 LoRA 检查点。
此功能是实验性的,将来可能会发生变化。
save_lora_weights
< source >( save_directory: typing.Union[str, os.PathLike] unet_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None text_encoder_lora_layers: typing.Dict[str, torch.nn.modules.module.Module] = None is_main_process: bool = True weight_name: str = None save_function: typing.Callable = None safe_serialization: bool = True )
参数
- save_directory (
str
oros.PathLike
) — 用于保存 LoRA 参数的目录。如果不存在,将创建该目录。 - unet_lora_layers (
Dict[str, torch.nn.Module]
orDict[str, torch.Tensor]
) — 对应于unet
的 LoRA 层的状态字典。 - text_encoder_lora_layers (
Dict[str, torch.nn.Module]
orDict[str, torch.Tensor]
) — 对应于text_encoder
的 LoRA 层的状态字典。必须显式传递文本编码器 LoRA 状态字典,因为它来自 🤗 Transformers。 - is_main_process (
bool
, optional, defaults toTrue
) — 调用此过程是否为主进程。在分布式训练期间很有用,您需要在所有进程上调用此函数。在这种情况下,仅在主进程上设置is_main_process=True
,以避免竞争条件。 - save_function (
Callable
) — 用于保存状态字典的函数。当您需要在分布式训练中用另一种方法替换torch.save
时非常有用。可以使用环境变量DIFFUSERS_SAVE_MODE
进行配置。 - safe_serialization (
bool
, optional, defaults toTrue
) — 是否使用safetensors
或传统的 PyTorch 方式pickle
来保存模型。
保存对应于 UNet 和文本编码器的 LoRA 参数。
StableDiffusionXLLoraLoaderMixin
将 LoRA 层加载到 Stable Diffusion XL UNet2DConditionModel, CLIPTextModel
, 和 CLIPTextModelWithProjection
。
load_lora_into_text_encoder
< source >( state_dict network_alphas text_encoder prefix = None lora_scale = 1.0 adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键应该以额外的text_encoder
为前缀,以区分 unet lora 层。 - network_alphas (
Dict[str, float]
) — 用于稳定学习和防止下溢的网络 alpha 值。此值的含义与 kohya-ss 训练器脚本中的--network_alpha
选项相同。请参阅此链接。 - text_encoder (
CLIPTextModel
) — 要将 LoRA 层加载到的文本编码器模型。 - prefix (
str
) —state_dict
中text_encoder
的预期前缀。 - lora_scale (
float
) — 在与常规 lora 层的输出相加之前,lora 线性层输出的缩放程度。 - adapter_name (
str
, optional) — 用于引用已加载适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这会将 state_dict
中指定的 LoRA 层加载到 text_encoder
中
load_lora_into_unet
< source >( state_dict network_alphas unet adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以以额外的unet
为前缀,这可以用于区分文本编码器 lora 层。 - network_alphas (
Dict[str, float]
) — 用于稳定学习和防止下溢的网络 alpha 值。此值的含义与 kohya-ss 训练器脚本中的--network_alpha
选项相同。请参阅此链接。 - unet (
UNet2DConditionModel
) — 要将 LoRA 层加载到的 UNet 模型。 - adapter_name (
str
, optional) — 用于引用已加载适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这将把 state_dict
中指定的 LoRA 层加载到 unet
中。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
oros.PathLike
ordict
) — 参见 lora_state_dict()。 - adapter_name (
str
, optional) — 用于引用已加载适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。 - kwargs (
dict
, optional) — 参见 lora_state_dict()。
将 pretrained_model_name_or_path_or_dict
中指定的 LoRA 权重加载到 self.unet
和 self.text_encoder
中。
所有 kwargs 都转发到 self.lora_state_dict
。
有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。
有关如何将状态字典加载到 self.unet
中的更多详细信息,请参阅 load_lora_into_unet()。
有关如何将状态字典加载到 self.text_encoder
中的更多详细信息,请参阅 load_lora_into_text_encoder()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
oros.PathLike
ordict
) — 可以是以下之一:- 一个字符串,Hub 上托管的预训练模型的模型 ID(例如
google/ddpm-celebahq-256
)。 - 一个目录的路径(例如
./my_model_directory
),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。 - 一个 torch 状态字典。
- 一个字符串,Hub 上托管的预训练模型的模型 ID(例如
- cache_dir (
Union[str, os.PathLike]
, optional) — 如果不使用标准缓存,则为缓存下载的预训练模型配置的目录路径。 - force_download (
bool
, optional, defaults toFalse
) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存版本(如果存在)。 - proxies (
Dict[str, str]
, optional) — 一个代理服务器字典,用于按协议或端点使用,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理用于每个请求。 - local_files_only (
bool
, optional, defaults toFalse
) — 是否仅加载本地模型权重和配置文件。如果设置为True
,则不会从 Hub 下载模型。 - token (
str
或 bool,*可选的*) — 用作远程文件 HTTP Bearer 授权的令牌。如果为True
,则使用从diffusers-cli login
生成的令牌(存储在~/.huggingface
中)。 - revision (
str
, *可选的*,默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。 - subfolder (
str
, *可选的*,默认为""
) — 模型文件在 Hub 或本地的较大模型仓库中的子文件夹位置。 - weight_name (
str
, *可选的*,默认为 None) — 序列化状态字典文件的名称。
返回 lora 权重和网络 Alpha 值的状态字典。
我们支持有限容量地加载 A1111 格式的 LoRA 检查点。
此功能是实验性的,将来可能会发生变化。
save_lora_weights
< source >( save_directory: typing.Union[str, os.PathLike] unet_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None text_encoder_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None text_encoder_2_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None is_main_process: bool = True weight_name: str = None save_function: typing.Callable = None safe_serialization: bool = True )
参数
- save_directory (
str
或os.PathLike
) — 用于保存 LoRA 参数的目录。如果目录不存在,则会创建它。 - unet_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于unet
的 LoRA 层的状态字典。 - text_encoder_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于text_encoder
的 LoRA 层的状态字典。必须显式传递 text encoder LoRA 状态字典,因为它来自 🤗 Transformers。 - text_encoder_2_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于text_encoder_2
的 LoRA 层的状态字典。必须显式传递 text encoder LoRA 状态字典,因为它来自 🤗 Transformers。 - is_main_process (
bool
, *可选的*,默认为True
) — 调用此函数的进程是否为主进程。在分布式训练中很有用,您需要在所有进程上调用此函数。在这种情况下,仅在主进程上设置is_main_process=True
以避免竞争条件。 - save_function (
Callable
) — 用于保存状态字典的函数。在分布式训练中很有用,当您需要用另一种方法替换torch.save
时。可以使用环境变量DIFFUSERS_SAVE_MODE
进行配置。 - safe_serialization (
bool
, *可选的*,默认为True
) — 是否使用safetensors
或传统的 PyTorch 方式(使用pickle
)保存模型。
保存对应于 UNet 和文本编码器的 LoRA 参数。
SD3LoraLoaderMixin
将 LoRA 层加载到 SD3Transformer2DModel、CLIPTextModel
和 CLIPTextModelWithProjection
中。
load_lora_into_text_encoder
< source >( state_dict network_alphas text_encoder prefix = None lora_scale = 1.0 adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键应以额外的text_encoder
为前缀,以区分 unet lora 层。 - network_alphas (
Dict[str, float]
) — 用于稳定学习和防止下溢的网络 alpha 值。此值的含义与 kohya-ss 训练脚本中的--network_alpha
选项相同。请参考此链接。 - text_encoder (
CLIPTextModel
) — 要将 LoRA 层加载到的文本编码器模型。 - prefix (
str
) —state_dict
中text_encoder
的预期前缀。 - lora_scale (
float
) — 在与常规 lora 层的输出相加之前,lora 线性层的输出要缩放多少。 - adapter_name (
str
, *可选的*) — 用于引用加载的适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, *可选的*) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这会将 state_dict
中指定的 LoRA 层加载到 text_encoder
中
load_lora_into_transformer
< source >( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以以额外的unet
为前缀,用于区分文本编码器 lora 层。 - transformer (
SD3Transformer2DModel
) — 要将 LoRA 层加载到的 Transformer 模型。 - adapter_name (
str
, optional) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这将把 state_dict
中指定的 LoRA 层加载到 transformer
中。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name = None **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 参见 lora_state_dict()。 - adapter_name (
str
, optional) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。 - kwargs (
dict
, optional) — 参见 lora_state_dict()。
将 pretrained_model_name_or_path_or_dict
中指定的 LoRA 权重加载到 self.unet
和 self.text_encoder
中。
所有 kwargs 都转发到 self.lora_state_dict
。
有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。
有关状态字典如何加载到 self.transformer
的更多详细信息,请参见 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer
。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 可以是以下之一:- 一个字符串,即托管在 Hub 上的预训练模型的模型 ID (例如
google/ddpm-celebahq-256
)。 - 一个指向目录的路径 (例如
./my_model_directory
),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。 - 一个 torch 状态字典。
- 一个字符串,即托管在 Hub 上的预训练模型的模型 ID (例如
- cache_dir (
Union[str, os.PathLike]
, optional) — 如果未使用标准缓存,则下载的预训练模型配置缓存到的目录的路径。 - force_download (
bool
, optional, 默认为False
) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存的版本(如果存在)。 - proxies (
Dict[str, str]
, optional) — 要按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理服务器用于每个请求。 - local_files_only (
bool
, optional, 默认为False
) — 是否仅加载本地模型权重和配置文件。如果设置为True
,则不会从 Hub 下载模型。 - token (
str
或 bool, optional) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为True
,则使用从diffusers-cli login
生成的令牌(存储在~/.huggingface
中)。 - revision (
str
, optional, 默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。 - subfolder (
str
, optional, 默认为""
) — Hub 或本地的较大模型仓库中模型文件的子文件夹位置。
返回 lora 权重和网络 Alpha 值的状态字典。
我们支持有限容量地加载 A1111 格式的 LoRA 检查点。
此功能是实验性的,将来可能会发生变化。
save_lora_weights
< source >( save_directory: typing.Union[str, os.PathLike] transformer_lora_layers: typing.Dict[str, torch.nn.modules.module.Module] = None text_encoder_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None text_encoder_2_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None is_main_process: bool = True weight_name: str = None save_function: typing.Callable = None safe_serialization: bool = True )
参数
- save_directory (
str
或os.PathLike
) — 用于保存 LoRA 参数的目录。如果目录不存在,将创建该目录。 - transformer_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于transformer
的 LoRA 层的状态字典。 - text_encoder_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于text_encoder
的 LoRA 层的状态字典。必须显式传递文本编码器 LoRA 状态字典,因为它来自 🤗 Transformers。 - text_encoder_2_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于text_encoder_2
的 LoRA 层的状态字典。必须显式传递文本编码器 LoRA 状态字典,因为它来自 🤗 Transformers。 - is_main_process (
bool
, optional, 默认为True
) — 调用此过程是否为主进程。在分布式训练期间很有用,您需要在所有进程上调用此函数。在这种情况下,仅在主进程上设置is_main_process=True
以避免竞争条件。 - save_function (
Callable
) — 用于保存状态字典的函数。在分布式训练中很有用,当您需要用另一种方法替换torch.save
时。可以使用环境变量DIFFUSERS_SAVE_MODE
进行配置。 - safe_serialization (
bool
, optional, 默认为True
) — 是否使用safetensors
或传统的 PyTorch 方式pickle
保存模型。
保存对应于 UNet 和文本编码器的 LoRA 参数。
FluxLoraLoaderMixin
将 LoRA 层加载到 FluxTransformer2DModel, CLIPTextModel
中。
load_lora_into_text_encoder
< source >( state_dict network_alphas text_encoder prefix = None lora_scale = 1.0 adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键应以额外的text_encoder
为前缀,以区分 unet lora 层。 - network_alphas (
Dict[str, float]
) — 用于稳定学习和防止下溢的网络 alpha 值。此值与 kohya-ss 训练器脚本中的--network_alpha
选项具有相同的含义。请参阅此链接。 - text_encoder (
CLIPTextModel
) — 要将 LoRA 层加载到的文本编码器模型。 - prefix (
str
) —state_dict
中text_encoder
的预期前缀。 - lora_scale (
float
) — 在与常规 lora 层的输出相加之前,lora 线性层输出的缩放量。 - adapter_name (
str
, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这会将 state_dict
中指定的 LoRA 层加载到 text_encoder
中
load_lora_into_transformer
< source >( state_dict network_alphas transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以以额外的unet
为前缀,这可以用于区分文本编码器 lora 层。 - network_alphas (
Dict[str, float]
) — 用于稳定学习和防止下溢的网络 alpha 值。此值与 kohya-ss 训练器脚本中的--network_alpha
选项具有相同的含义。请参阅此链接。 - transformer (
FluxTransformer2DModel
) — 要将 LoRA 层加载到的 Transformer 模型。 - adapter_name (
str
, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这将把 state_dict
中指定的 LoRA 层加载到 transformer
中。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name = None **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 请参阅 lora_state_dict()。 - kwargs (
dict
, 可选) — 请参阅 lora_state_dict()。 - adapter_name (
str
, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, 可选) — `通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
将 pretrained_model_name_or_path_or_dict
中指定的 LoRA 权重加载到 self.transformer
和 self.text_encoder
中。
所有 kwargs 都转发到 self.lora_state_dict
。
有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。
有关状态字典如何加载到 self.transformer
的更多详细信息,请参见 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer
。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] return_alphas: bool = False **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 可以是以下之一:- 字符串,Hub 上托管的预训练模型的模型 ID(例如
google/ddpm-celebahq-256
)。 - 目录的路径(例如
./my_model_directory
),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。 - torch 状态字典。
- 字符串,Hub 上托管的预训练模型的模型 ID(例如
- cache_dir (
Union[str, os.PathLike]
, 可选) — 如果不使用标准缓存,则下载的预训练模型配置缓存到的目录的路径。 - force_download (
bool
, 可选,默认为False
) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存的版本(如果存在)。 - proxies (
Dict[str, str]
, 可选) — 要按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理用于每个请求。 - local_files_only (
bool
, 可选,默认为False
) — 是否仅加载本地模型权重和配置文件。如果设置为True
,则不会从 Hub 下载模型。 - token (
str
或 bool, 可选) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为True
,则使用从diffusers-cli login
生成的令牌(存储在~/.huggingface
中)。 - revision (
str
, 可选,默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。 - subfolder (
str
, 可选,默认为""
) — Hub 或本地更大的模型仓库中模型文件的子文件夹位置。
返回 lora 权重和网络 Alpha 值的状态字典。
我们支持有限容量地加载 A1111 格式的 LoRA 检查点。
此功能是实验性的,将来可能会发生变化。
save_lora_weights
< source >( save_directory: typing.Union[str, os.PathLike] transformer_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None text_encoder_lora_layers: typing.Dict[str, torch.nn.modules.module.Module] = None is_main_process: bool = True weight_name: str = None save_function: typing.Callable = None safe_serialization: bool = True )
参数
- save_directory (
str
或os.PathLike
) — 用于保存 LoRA 参数的目录。如果目录不存在,则会创建它。 - transformer_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于transformer
的 LoRA 层的状态字典 (state dict)。 - text_encoder_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于text_encoder
的 LoRA 层的状态字典。 必须显式传递文本编码器 LoRA 状态字典,因为它来自 🤗 Transformers。 - is_main_process (
bool
, 可选, 默认为True
) — 调用此函数的进程是否为主进程。在分布式训练中很有用,您需要在所有进程上调用此函数。在这种情况下,仅在主进程上设置is_main_process=True
,以避免竞争条件。 - save_function (
Callable
) — 用于保存状态字典的函数。当您需要用其他方法替换torch.save
时,在分布式训练期间非常有用。 可以使用环境变量DIFFUSERS_SAVE_MODE
进行配置。 - safe_serialization (
bool
, 可选, 默认为True
) — 是否使用safetensors
或传统的 PyTorch 方式pickle
保存模型。
保存对应于 UNet 和文本编码器的 LoRA 参数。
反转 pipe.fuse_lora()
的效果。
这是一个实验性的 API。
unload_lora_weights
< source >( reset_to_overwritten_params = False )
参数
- reset_to_overwritten_params (
bool
, 默认为False
) — 是否将 LoRA 加载的模块重置为其原始参数。 有关更多信息,请参阅 Flux 文档。
卸载 LoRA 参数。
CogVideoXLoraLoaderMixin
将 LoRA 层加载到 CogVideoXTransformer3DModel 中。 专门用于 CogVideoXPipeline。
load_lora_into_transformer
< source >( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。 键可以直接索引到 unet 中,或者以额外的unet
为前缀,这可以用于区分文本编码器 lora 层。 - transformer (
CogVideoXTransformer3DModel
) — 要将 LoRA 层加载到的 Transformer 模型。 - adapter_name (
str
, 可选) — 用于引用加载的适配器模型的适配器名称。 如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这将把 state_dict
中指定的 LoRA 层加载到 transformer
中。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name = None **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 请参阅 lora_state_dict()。 - adapter_name (
str
, 可选) — 用于引用加载的适配器模型的适配器名称。 如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。 - kwargs (
dict
, 可选) — 请参阅 lora_state_dict()。
将 pretrained_model_name_or_path_or_dict
中指定的 LoRA 权重加载到 self.transformer
和 self.text_encoder
中。 所有 kwargs 都将转发到 self.lora_state_dict
。 有关状态字典如何加载的更多详细信息,请参阅 lora_state_dict()。 有关状态字典如何加载到 self.transformer
中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer
。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 可以是以下之一:- 字符串,Hub 上托管的预训练模型的模型 ID (例如
google/ddpm-celebahq-256
)。 - 目录的路径(例如
./my_model_directory
),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。 - torch state dict。
- 字符串,Hub 上托管的预训练模型的模型 ID (例如
- cache_dir (
Union[str, os.PathLike]
, 可选) — 如果未使用标准缓存,则为下载的预训练模型配置缓存的目录路径。 - force_download (
bool
, 可选,默认为False
) — 是否强制(重新)下载模型权重和配置文件,覆盖已存在的缓存版本。 - proxies (
Dict[str, str]
, 可选) — 按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理用于每个请求。 - local_files_only (
bool
, 可选,默认为False
) — 是否仅加载本地模型权重和配置文件。如果设置为True
,则不会从 Hub 下载模型。 - token (
str
或 bool, 可选) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为True
,则使用从diffusers-cli login
生成的令牌(存储在~/.huggingface
中)。 - revision (
str
, 可选,默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。 - subfolder (
str
, 可选,默认为""
) — Hub 上或本地的较大模型存储库中模型文件的子文件夹位置。
返回 lora 权重和网络 Alpha 值的状态字典。
我们支持有限容量地加载 A1111 格式的 LoRA 检查点。
此功能是实验性的,将来可能会发生变化。
save_lora_weights
< source >( save_directory: typing.Union[str, os.PathLike] transformer_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None is_main_process: bool = True weight_name: str = None save_function: typing.Callable = None safe_serialization: bool = True )
参数
- save_directory (
str
或os.PathLike
) — 用于保存 LoRA 参数的目录。如果不存在,将创建该目录。 - transformer_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于transformer
的 LoRA 层的状态字典。 - is_main_process (
bool
, 可选,默认为True
) — 调用此进程是否为主进程。在分布式训练期间很有用,您需要在所有进程上调用此函数。在这种情况下,仅在主进程上设置is_main_process=True
以避免竞争条件。 - save_function (
Callable
) — 用于保存状态字典的函数。在分布式训练中,当您需要用另一种方法替换torch.save
时很有用。可以使用环境变量DIFFUSERS_SAVE_MODE
进行配置。 - safe_serialization (
bool
, 可选,默认为True
) — 是否使用safetensors
或传统的 PyTorch 方式pickle
保存模型。
保存对应于 UNet 和文本编码器的 LoRA 参数。
unfuse_lora
< source >( components: typing.List[str] = ['transformer'] **kwargs )
反转 pipe.fuse_lora()
的效果。
这是一个实验性的 API。
Mochi1LoraLoaderMixin
将 LoRA 层加载到 MochiTransformer3DModel 中。特定于 MochiPipeline。
load_lora_into_transformer
< source >( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以以附加的unet
为前缀,这可用于区分文本编码器 lora 层。 - transformer (
MochiTransformer3DModel
) — 要将 LoRA 层加载到的 Transformer 模型。 - adapter_name (
str
, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,它将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这将把 state_dict
中指定的 LoRA 层加载到 transformer
中。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name = None **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 参见 lora_state_dict()。 - adapter_name (
str
, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,则将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。 - kwargs (
dict
, 可选) — 参见 lora_state_dict()。
将 pretrained_model_name_or_path_or_dict
中指定的 LoRA 权重加载到 self.transformer
和 self.text_encoder
中。 所有 kwargs 都将转发到 self.lora_state_dict
。 有关状态字典如何加载的更多详细信息,请参阅 lora_state_dict()。 有关状态字典如何加载到 self.transformer
中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer
。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )
参数
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 可以是以下之一:- 一个字符串,Hub 上托管的预训练模型的模型 ID (例如
google/ddpm-celebahq-256
)。 - 一个目录的路径 (例如
./my_model_directory
),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。 - 一个 torch 状态字典。
- 一个字符串,Hub 上托管的预训练模型的模型 ID (例如
- cache_dir (
Union[str, os.PathLike]
, 可选) — 如果未使用标准缓存,则下载的预训练模型配置缓存到的目录路径。 - force_download (
bool
, 可选, 默认为False
) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存版本(如果存在)。 - proxies (
Dict[str, str]
, 可选) — 要按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理用于每个请求。 - local_files_only (
bool
, 可选, 默认为False
) — 是否仅加载本地模型权重和配置文件。如果设置为True
,则不会从 Hub 下载模型。 - token (
str
或 bool, 可选) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为True
,则使用从diffusers-cli login
生成的令牌(存储在~/.huggingface
中)。 - revision (
str
, 可选, 默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。 - subfolder (
str
, 可选, 默认为""
) — Hub 或本地的较大模型存储库中模型文件的子文件夹位置。
返回 lora 权重和网络 Alpha 值的状态字典。
我们支持有限容量地加载 A1111 格式的 LoRA 检查点。
此功能是实验性的,将来可能会发生变化。
save_lora_weights
< source >( save_directory: typing.Union[str, os.PathLike] transformer_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = None is_main_process: bool = True weight_name: str = None save_function: typing.Callable = None safe_serialization: bool = True )
参数
- save_directory (
str
或os.PathLike
) — 用于保存 LoRA 参数的目录。如果目录不存在,则会创建该目录。 - transformer_lora_layers (
Dict[str, torch.nn.Module]
或Dict[str, torch.Tensor]
) — 对应于transformer
的 LoRA 层的状态字典。 - is_main_process (
bool
, 可选, 默认为True
) — 调用此过程是否为主进程。在分布式训练期间很有用,您需要在所有进程上调用此函数。在这种情况下,仅在主进程上设置is_main_process=True
以避免竞争条件。 - save_function (
Callable
) — 用于保存状态字典的函数。在分布式训练中,当您需要用另一种方法替换torch.save
时很有用。可以使用环境变量DIFFUSERS_SAVE_MODE
进行配置。 - safe_serialization (
bool
, 可选, 默认为True
) — 是否使用safetensors
或传统的 PyTorch 方式pickle
保存模型。
保存对应于 UNet 和文本编码器的 LoRA 参数。
unfuse_lora
< source >( components: typing.List[str] = ['transformer'] **kwargs )
反转 pipe.fuse_lora()
的效果。
这是一个实验性的 API。
AmusedLoraLoaderMixin
load_lora_into_transformer
< source >( state_dict network_alphas transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False )
参数
- state_dict (
dict
) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,或者以额外的unet
为前缀,这可以用于区分文本编码器 lora 层。 - network_alphas (
Dict[str, float]
) — 用于稳定学习和防止下溢的网络 alpha 值。此值与 kohya-ss 训练器脚本中的--network_alpha
选项具有相同的含义。请参阅 此链接。 - transformer (
UVit2DModel
) — 要加载 LoRA 层的 Transformer 模型。 - adapter_name (
str
, optional) — 用于引用已加载适配器模型的适配器名称。如果未指定,将使用default_{i}
,其中 i 是正在加载的适配器总数。 - low_cpu_mem_usage (
bool
, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。
这将把 state_dict
中指定的 LoRA 层加载到 transformer
中。
LoraBaseMixin
用于处理 LoRA 的实用工具类。
delete_adapters
< source >( adapter_names: typing.Union[typing.List[str], str] )
fuse_lora
< source >( components: typing.List[str] = [] lora_scale: float = 1.0 safe_fusing: bool = False adapter_names: typing.Optional[typing.List[str]] = None **kwargs )
将 LoRA 参数融合到相应模块的原始参数中。
这是一个实验性的 API。
示例
from diffusers import DiffusionPipeline
import torch
pipeline = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel")
pipeline.fuse_lora(lora_scale=0.7)
获取当前活动适配器的列表。
获取管道中所有可用适配器的当前列表。
set_lora_device
< source >( adapter_names: typing.List[str] device: typing.Union[torch.device, str, int] )
将 adapter_names
中列出的 LoRA 移动到目标设备。如果您想加载多个适配器并释放一些 GPU 内存,将 LoRA 卸载到 CPU 会很有用。
unfuse_lora
< source >( components: typing.List[str] = [] **kwargs )
反转 pipe.fuse_lora()
的效果。
这是一个实验性的 API。
卸载 LoRA 参数。