Diffusers 文档

LoRA

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

LoRA

LoRA 是一种快速轻量级的训练方法,它插入并训练数量显著减少的参数,而不是所有模型参数。这会生成一个更小的文件(约 100 MB),并使其更容易快速训练模型以学习新概念。LoRA 权重通常加载到去噪器、文本编码器或两者中。去噪器通常对应于 UNet(例如 UNet2DConditionModel)或 Transformer(例如 SD3Transformer2DModel)。有几个用于加载 LoRA 权重的类

  • StableDiffusionLoraLoaderMixin 提供了加载和卸载、融合和解融合、启用和禁用以及更多管理 LoRA 权重的函数。这个类可以与任何模型一起使用。
  • StableDiffusionXLLoraLoaderMixinStable Diffusion (SDXL) 版本的 StableDiffusionLoraLoaderMixin 类,用于加载和保存 LoRA 权重。它只能与 SDXL 模型一起使用。
  • SD3LoraLoaderMixinStable Diffusion 3 提供了类似的功能。
  • FluxLoraLoaderMixinFlux 提供了类似的功能。
  • CogVideoXLoraLoaderMixinCogVideoX 提供了类似的功能。
  • Mochi1LoraLoaderMixinMochi 提供了类似的功能。
  • AuraFlowLoraLoaderMixinAuraFlow 提供了类似的功能。
  • LTXVideoLoraLoaderMixinLTX-Video 提供了类似的功能。
  • SanaLoraLoaderMixinSana 提供了类似的功能。
  • HunyuanVideoLoraLoaderMixinHunyuanVideo 提供了类似的功能。
  • Lumina2LoraLoaderMixinLumina2 提供了类似的功能。
  • WanLoraLoaderMixinWan 提供了类似的功能。
  • CogView4LoraLoaderMixinCogView4 提供了类似的功能。
  • AmusedLoraLoaderMixin 用于 AmusedPipeline
  • HiDreamImageLoraLoaderMixinHiDream Image 提供了类似的功能。
  • LoraBaseMixin 提供了一个基类,其中包含用于融合、解融合、卸载 LoRA 等的实用方法。

要了解有关如何加载 LoRA 权重的更多信息,请参阅 LoRA 加载指南。

LoraBaseMixin

diffusers.loaders.lora_base.LoraBaseMixin

< >

( )

用于处理 LoRA 的实用类。

删除适配器

< >

( adapter_names: typing.Union[typing.List[str], str] )

参数

  • adapter_names (Union[List[str], str]) — 要删除的适配器名称。

从管道中删除适配器的 LoRA 层。

示例

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_names="cinematic"
)
pipeline.delete_adapters("cinematic")

禁用 LoRA

< >

( )

禁用管道的活动 LoRA 层。

示例

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.disable_lora()

启用 LoRA

< >

( )

启用管道的活动 LoRA 层。

示例

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.enable_lora()

启用 LoRA 热插拔

< >

( **kwargs )

参数

  • target_rank (int) — 将要加载的所有适配器中最高的秩。
  • check_compiled (str, 可选, 默认为 "error") — 如何处理已编译的模型。检查可以返回以下消息:
    • “error”(默认):引发错误
    • “warn”:发出警告
    • “ignore”:不做任何事

热插拔适配器,而不会触发模型的重新编译,或者如果加载的适配器的秩不同。

融合 LoRA

< >

( components: typing.List[str] = [] lora_scale: float = 1.0 safe_fusing: bool = False adapter_names: typing.Optional[typing.List[str]] = None **kwargs )

参数

  • components — (List[str]): 要将 LoRA 融合到其中的 LoRA 可注入组件列表。
  • lora_scale (float, 默认为 1.0) — 控制 LoRA 参数对输出的影响程度。
  • safe_fusing (bool, 默认为 False) — 是否在融合前检查融合权重中的 NaN 值,如果值为 NaN 则不融合它们。
  • adapter_names (List[str], 可选) — 用于融合的适配器名称。如果未传递,则所有活动适配器都将融合。

将 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)

获取活动适配器

< >

( )

获取当前活动适配器列表。

示例

from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
).to("cuda")
pipeline.load_lora_weights("CiroN2022/toy-face", weight_name="toy_face_sdxl.safetensors", adapter_name="toy")
pipeline.get_active_adapters()

获取适配器列表

< >

( )

获取管道中所有可用适配器的当前列表。

设置适配器

< >

( adapter_names: typing.Union[typing.List[str], str] adapter_weights: typing.Union[float, typing.Dict, typing.List[float], typing.List[typing.Dict], NoneType] = None )

参数

  • adapter_names (List[str]str) — 要使用的适配器名称。
  • adapter_weights (Union[List[float], float], 可选) — 与 UNet 一起使用的适配器权重。如果为 None,则所有适配器的权重都设置为 1.0

设置管道中当前活动的适配器。

示例

from diffusers import AutoPipelineForText2Image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.load_lora_weights(
    "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel")
pipeline.set_adapters(["cinematic", "pixel"], adapter_weights=[0.5, 0.5])

设置 LoRA 设备

< >

( adapter_names: typing.List[str] device: typing.Union[torch.device, str, int] )

参数

  • adapter_names (List[str]) — 要将设备发送到的适配器列表。
  • device (Union[torch.device, str, int]) — 将适配器发送到的设备。可以是 torch 设备、字符串或整数。

adapter_names 中列出的 LoRA 移动到目标设备。在您想要加载多个适配器并释放一些 GPU 内存时很有用。

解融合 LoRA

< >

( components: typing.List[str] = [] **kwargs )

参数

  • components (List[str]) — 要从中解融合 LoRA 的 LoRA 可注入组件列表。
  • unfuse_unet (bool, 默认为 True) — 是否解融合 UNet LoRA 参数。如果文本编码器没有通过 LoRA 参数进行猴子补丁,则不会有任何效果。
  • unfuse_text_encoder (bool, 默认为 True) — 是否解融合文本编码器 LoRA 参数。如果文本编码器没有通过 LoRA 参数进行猴子补丁,则不会有任何效果。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

卸载 LoRA 权重

< >

( )

卸载 LoRA 参数。

示例

>>> # Assuming `pipeline` is already loaded with the LoRA parameters.
>>> pipeline.unload_lora_weights()
>>> ...

写入 LoRA 层

< >

( state_dict: typing.Dict[str, torch.Tensor] save_directory: str is_main_process: bool weight_name: str save_function: typing.Callable safe_serialization: bool lora_adapter_metadata: typing.Optional[dict] = None )

将 LoRA 层的状态字典(可选包含元数据)写入磁盘。

StableDiffusionLoraLoaderMixin

diffusers.loaders.StableDiffusionLoraLoaderMixin

< >

( )

将 LoRA 层加载到 Stable Diffusion UNet2DConditionModelCLIPTextModel 中。

将 LoRA 加载到文本编码器中

< >

( state_dict network_alphas text_encoder prefix = None lora_scale = 1.0 adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • 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_dicttext_encoder 的预期前缀。
  • lora_scale (float) — 在与常规 lora 层的输出相加之前,lora 线性层输出的缩放比例。
  • adapter_name (str, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 text_encoder 中。

load_lora_into_unet

< 来源 >

( state_dict network_alphas unet adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以附加 unet 前缀,用于区分文本编码器 lora 层。
  • network_alphas (Dict[str, float]) — 用于稳定学习和防止下溢的网络 alpha 值。此值与 kohya-ss 训练器脚本中的 --network_alpha 选项具有相同的含义。请参阅此链接
  • unet (UNet2DConditionModel) — 要加载 LoRA 层的 UNet 模型。
  • adapter_name (str, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 unet 中。

load_lora_weights

< 来源 >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 默认为 False。是否原地替换现有(LoRA)适配器与新加载的适配器。这意味着,不是加载一个额外的适配器,而是将现有适配器权重替换为新适配器的权重。这可以更快,更节省内存。然而,热插拔的主要优点是,当模型使用 torch.compile 编译时,加载新适配器不需要重新编译模型。当使用热插拔时,传入的 adapter_name 应该是一个已加载适配器的名称。

    如果新适配器和旧适配器具有不同的等级和/或 LoRA alpha(即缩放),则需要在加载适配器之前调用一个附加方法:

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.unetself.text_encoder 中。

所有 kwargs 都转发到 self.lora_state_dict

有关如何加载 state dict 的更多详细信息,请参阅 lora_state_dict()

有关如何将 state dict 加载到 self.unet 中的更多详细信息,请参阅 load_lora_into_unet()

有关如何将 state dict 加载到 self.text_encoder 中的更多详细信息,请参阅 load_lora_into_text_encoder()

lora_state_dict

< 来源 >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是:

    • 一个字符串,托管在 Hub 上的预训练模型的 *模型 ID*(例如 google/ddpm-celebahq-256)。
    • 一个 *目录* 的路径(例如 ./my_model_directory),包含使用 ModelMixin.save_pretrained() 保存的模型权重。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用作远程文件的 HTTP 承载授权的令牌。如果为 True,则使用从 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 或本地大型模型仓库中的子文件夹位置。
  • weight_name (str, 可选, 默认为 None) — 序列化状态字典的文件名。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< 来源 >

( 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 unet_lora_adapter_metadata = None text_encoder_lora_adapter_metadata = None )

参数

  • save_directory (stros.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 层状态字典。必须明确传递文本编码器 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_adapter_metadata — 与 unet 相关的 LoRA 适配器元数据,将与状态字典一起序列化。
  • text_encoder_lora_adapter_metadata — 与文本编码器相关的 LoRA 适配器元数据,将与状态字典一起序列化。

保存对应于 UNet 和文本编码器的 LoRA 参数。

StableDiffusionXLLoraLoaderMixin

class diffusers.loaders.StableDiffusionXLLoraLoaderMixin

< 来源 >

( )

将 LoRA 层加载到 Stable Diffusion XL UNet2DConditionModelCLIPTextModelCLIPTextModelWithProjection 中。

将 LoRA 加载到文本编码器中

< 来源 >

( state_dict network_alphas text_encoder prefix = None lora_scale = 1.0 adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • 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_dicttext_encoder 的预期前缀。
  • lora_scale (float) — 在与常规 lora 层输出相加之前,lora 线性层输出的缩放比例。
  • adapter_name (str, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 text_encoder 中。

load_lora_into_unet

< 来源 >

( state_dict network_alphas unet adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以附加 unet 前缀,用于区分文本编码器 lora 层。
  • network_alphas (Dict[str, float]) — 用于稳定学习和防止下溢的网络 alpha 值。此值与 kohya-ss 训练器脚本中的 --network_alpha 选项具有相同的含义。请参阅此链接
  • unet (UNet2DConditionModel) — 要加载 LoRA 层的 UNet 模型。
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 `default_{i}`,其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 仅加载预训练的 LoRA 权重,而不初始化随机权重,从而加快模型加载速度。
  • hotswap (bool, 可选) — 参见load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中推导。

这将把 state_dict 中指定的 LoRA 层加载到 unet 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 参见lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 `default_{i}`,其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 仅加载预训练的 LoRA 权重,而不初始化随机权重,从而加快模型加载速度。
  • hotswap (bool, 可选) — 参见load_lora_weights()
  • kwargs (dict, 可选) — 参见lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.unetself.text_encoder 中。

所有 kwargs 都转发到 self.lora_state_dict

有关如何加载 state dict 的更多详细信息,请参阅 lora_state_dict()

有关如何将 state dict 加载到 self.unet 中的更多详细信息,请参阅 load_lora_into_unet()

有关如何将 state dict 加载到 self.text_encoder 中的更多详细信息,请参阅 load_lora_into_text_encoder()

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下任意一种:

    • Hub 上托管的预训练模型的模型 ID 字符串(例如 `google/ddpm-celebahq-256`)。
    • 包含使用 ModelMixin.save_pretrained() 保存的模型权重的目录路径(例如 `./my_model_directory`)。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用于远程文件的 HTTP Bearer 授权令牌。如果为 True,则使用从 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选,默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选,默认为 "") — Hub 或本地较大模型仓库中模型文件的子文件夹位置。
  • weight_name (str, 可选,默认为 None) — 序列化状态字典文件的名称。
  • return_lora_metadata (bool, 可选,默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 unet_lora_adapter_metadata = None text_encoder_lora_adapter_metadata = None text_encoder_2_lora_adapter_metadata = None )

参数

  • save_directory (stros.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 层状态字典。必须显式传递文本编码器 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, 可选,默认为 True) — 调用此过程是否为主过程。在分布式训练期间有用,您需要在所有过程上调用此函数。在这种情况下,仅在主过程上设置 is_main_process=True 以避免竞态条件。
  • save_function (Callable) — 用于保存状态字典的函数。在分布式训练期间有用,您需要将 torch.save 替换为另一种方法。可以通过环境变量 DIFFUSERS_SAVE_MODE 配置。
  • safe_serialization (bool, 可选,默认为 True) — 是否使用 safetensors 或传统的 PyTorch 方式(使用 pickle)保存模型。
  • unet_lora_adapter_metadata — 与 unet 关联的 LoRA 适配器元数据,将与状态字典一起序列化。
  • text_encoder_lora_adapter_metadata — 与文本编码器关联的 LoRA 适配器元数据,将与状态字典一起序列化。
  • text_encoder_2_lora_adapter_metadata — 与第二个文本编码器关联的 LoRA 适配器元数据,将与状态字典一起序列化。

保存对应于 UNet 和文本编码器的 LoRA 参数。

SD3LoraLoaderMixin

class diffusers.loaders.SD3LoraLoaderMixin

< >

( )

将 LoRA 层加载到 SD3Transformer2DModelCLIPTextModelCLIPTextModelWithProjection 中。

特定于 StableDiffusion3Pipeline

将 LoRA 加载到文本编码器中

< >

( state_dict network_alphas text_encoder prefix = None lora_scale = 1.0 adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • 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_dicttext_encoder 的预期前缀。
  • lora_scale (float) — lora 线性层输出在与常规 lora 层输出相加之前要缩放的量。
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 `default_{i}`,其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 仅加载预训练的 LoRA 权重,而不初始化随机权重,从而加快模型加载速度。
  • hotswap (bool, 可选) — 参见load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中推导。

这将把 state_dict 中指定的 LoRA 层加载到 text_encoder 中。

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以以额外的 unet 为前缀,以区分文本编码器 lora 层。
  • transformer (SD3Transformer2DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 `default_{i}`,其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 仅加载预训练的 LoRA 权重,而不初始化随机权重,从而加快模型加载速度。
  • hotswap (bool, 可选) — 参见load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中推导。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 参见lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 `default_{i}`,其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 仅加载预训练的 LoRA 权重,而不初始化随机权重,从而加快模型加载速度。
  • hotswap (bool, 可选) — 参见load_lora_weights()
  • kwargs (dict, 可选) — 参见lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.unetself.text_encoder 中。

所有 kwargs 都转发到 self.lora_state_dict

有关如何加载 state dict 的更多详细信息,请参阅 lora_state_dict()

有关状态字典如何加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下任意一种:

    • Hub 上托管的预训练模型的模型 ID 字符串(例如 `google/ddpm-celebahq-256`)。
    • 包含使用 ModelMixin.save_pretrained() 保存的模型权重的目录路径(例如 `./my_model_directory`)。
    • 一个 torch 状态字典
  • cache_dir (Union[str, os.PathLike], 可选) — 如果不使用标准缓存,则为下载的预训练模型配置的缓存目录路径。
  • force_download (bool, optional, 默认为 False) — 是否强制(重新)下载模型权重和配置文件,如果缓存版本存在则覆盖。
  • proxies (Dict[str, str], 可选) — 要按协议或端点使用的代理服务器字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。代理用于每个请求。
  • local_files_only (bool, 可选, 默认为 False) — 是否只加载本地模型权重和配置文件。如果设置为 True,模型将不会从 Hub 下载。
  • token (strbool, 可选) — 用于远程文件的 HTTP Bearer 授权的令牌。如果为 True,则使用 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — Hub 上或本地大型模型仓库中模型文件的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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, 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 transformer_lora_adapter_metadata = None text_encoder_lora_adapter_metadata = None text_encoder_2_lora_adapter_metadata = None )

参数

  • save_directory (stros.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, 可选, 默认为 True) — 调用此过程是否为主过程。在分布式训练中需要所有过程都调用此函数时很有用。在这种情况下,仅在主进程上设置 is_main_process=True 以避免竞争条件。
  • save_function (Callable) — 用于保存状态字典的函数。在分布式训练中需要用其他方法替换 torch.save 时很有用。可以通过环境变量 DIFFUSERS_SAVE_MODE 配置。
  • safe_serialization (bool, 可选, 默认为 True) — 是否使用 safetensors 而非传统 PyTorch 方式(使用 pickle)保存模型。
  • transformer_lora_adapter_metadata — 与 transformer 相关的 LoRA 适配器元数据,将与状态字典一起序列化。
  • text_encoder_lora_adapter_metadata — 与文本编码器相关的 LoRA 适配器元数据,将与状态字典一起序列化。
  • text_encoder_2_lora_adapter_metadata — 与第二个文本编码器相关的 LoRA 适配器元数据,将与状态字典一起序列化。

保存对应于 UNet 和文本编码器的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer', 'text_encoder', 'text_encoder_2'] **kwargs )

参数

  • components (List[str]) — 要从中解除 LoRA 的 LoRA 可注入组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否解除 UNet LoRA 参数的融合。
  • unfuse_text_encoder (bool, 默认为 True) — 是否解除文本编码器 LoRA 参数的融合。如果文本编码器未通过 LoRA 参数进行猴子补丁,则不会产生任何影响。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

FluxLoraLoaderMixin

class diffusers.loaders.FluxLoraLoaderMixin

< >

( )

将 LoRA 层加载到 FluxTransformer2DModel, CLIPTextModel

特定于 StableDiffusion3Pipeline

将 LoRA 加载到文本编码器中

< >

( state_dict network_alphas text_encoder prefix = None lora_scale = 1.0 adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • 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_dicttext_encoder 的预期前缀。
  • lora_scale (float) — LoRA 线性层输出在与常规 LoRA 层输出相加之前的缩放比例。
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 text_encoder 中。

load_lora_into_transformer

< >

( state_dict network_alphas transformer adapter_name = None metadata = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = 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 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅load_lora_weights()
  • kwargs (dict, 可选) — 请参阅lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。

所有 kwargs 都转发到 self.lora_state_dict

有关如何加载 state dict 的更多详细信息,请参阅 lora_state_dict()

有关状态字典如何加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( 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 (stros.PathLikedict) — 可以是以下类型:

    • 一个字符串,即托管在 Hub 上的预训练模型的 *模型 ID*(例如 google/ddpm-celebahq-256)。
    • 一个 *目录* 路径(例如 ./my_model_directory),包含使用 ModelMixin.save_pretrained() 保存的模型权重。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用于远程文件的 HTTP 授权令牌。如果为 True,则使用 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 或本地较大模型仓库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata = None text_encoder_lora_adapter_metadata = None )

参数

  • save_directory (stros.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 层状态字典。由于其来自 🤗 Transformers,必须明确传递文本编码器 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)保存模型。
  • transformer_lora_adapter_metadata — 与 transformer 关联的 LoRA 适配器元数据,将与状态字典一起序列化。
  • text_encoder_lora_adapter_metadata — 与文本编码器关联的 LoRA 适配器元数据,将与状态字典一起序列化。

保存对应于 UNet 和文本编码器的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer', 'text_encoder'] **kwargs )

参数

  • components (List[str]) — 要从中解除 LoRA 融合的 LoRA 可注入组件列表。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

卸载 LoRA 权重

< >

( reset_to_overwritten_params = False )

参数

  • reset_to_overwritten_params (bool, 默认为 False) — 是否将已加载 LoRA 的模块重置为其原始参数。请参阅 Flux 文档 了解更多信息。

卸载 LoRA 参数。

示例

>>> # Assuming `pipeline` is already loaded with the LoRA parameters.
>>> pipeline.unload_lora_weights()
>>> ...

CogVideoXLoraLoaderMixin

class diffusers.loaders.CogVideoXLoraLoaderMixin

< >

( )

将 LoRA 层加载到 CogVideoXTransformer3DModel 中。特定于 CogVideoXPipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 LoRA 层参数的标准状态字典。键可以直接索引到 unet 中,也可以前缀为额外的 unet,用于区分文本编码器 LoRA 层。
  • transformer (CogVideoXTransformer3DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用已加载适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。提供此参数时,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • kwargs (dict, 可选) — 请参阅 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下类型:

    • 一个字符串,即托管在 Hub 上的预训练模型的 *模型 ID*(例如 google/ddpm-celebahq-256)。
    • 一个 *目录* 路径(例如 ./my_model_directory),包含使用 ModelMixin.save_pretrained() 保存的模型权重。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用于远程文件的 HTTP 授权令牌。如果为 True,则使用 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 或本地较大模型仓库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.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)保存模型。
  • transformer_lora_adapter_metadata — 与将随状态字典序列化的转换器关联的 LoRA 适配器元数据。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 从中解冻 LoRA 的 LoRA 可注入组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否解冻 UNet LoRA 参数。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

Mochi1LoraLoaderMixin

class diffusers.loaders.Mochi1LoraLoaderMixin

< >

( )

将 LoRA 层加载到 MochiTransformer3DModel 中。专用于 MochiPipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 LoRA 层参数的标准状态字典。键可以直接索引到 unet 中,也可以附加 unet 前缀,用于区分文本编码器 LoRA 层。
  • transformer (MochiTransformer3DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用已加载适配器模型的适配器名称。如果未指定,它将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载。
  • hotswap (bool, 可选) — 参见 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 参见 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载适配器模型的适配器名称。如果未指定,它将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载。
  • hotswap (bool, 可选) — 参见 load_lora_weights()
  • kwargs (dict, 可选) — 参见 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是:

  • 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 (strbool, 可选) — 用于远程文件的 HTTP bearer 授权令牌。如果为 True,则使用从 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 或本地较大模型仓库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.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)保存模型。
  • transformer_lora_adapter_metadata — 与将随状态字典序列化的转换器关联的 LoRA 适配器元数据。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从中解融合 LoRA 的 LoRA 可注入组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否解融合 UNet LoRA 参数。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

AuraFlowLoraLoaderMixin

class diffusers.loaders.AuraFlowLoraLoaderMixin

< >

( )

将 LoRA 层加载到 AuraFlowTransformer2DModel 中。专用于 AuraFlowPipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 LoRA 层参数的标准状态字典。键可以直接索引到 unet 中,也可以附加 unet 前缀,用于区分文本编码器 LoRA 层。
  • transformer (AuraFlowTransformer2DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用已加载适配器模型的适配器名称。如果未指定,它将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载。
  • hotswap (bool, 可选) — 参见 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 参见 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载适配器模型的适配器名称。如果未指定,它将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载。
  • hotswap (bool, 可选) — 参见 load_lora_weights()
  • kwargs (dict, 可选) — 参见 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下其中一种:

    • 一个字符串,即托管在 Hub 上的预训练模型的模型 ID(例如 google/ddpm-celebahq-256)。
    • 一个目录的路径(例如 ./my_model_directory),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用于远程文件的 HTTP bearer 授权令牌。如果为 True,则使用 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 或本地大型模型存储库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用后,同时返回通常在状态字典中找到的 LoRA 适配器元数据。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.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 方式保存模型。
  • transformer_lora_adapter_metadata — 与 Transformer 关联的 LoRA 适配器元数据,将与状态字典一起序列化。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer', 'text_encoder'] **kwargs )

参数

  • components (List[str]) — 要从中移除 LoRA 的可注入 LoRA 组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否取消 UNet LoRA 参数的融合。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

LTXVideoLoraLoaderMixin

class diffusers.loaders.LTXVideoLoraLoaderMixin

< >

( )

将 LoRA 层加载到 LTXVideoTransformer3DModel 中。专用于 LTXPipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 LoRA 层参数的标准状态字典。键可以直接索引到 unet 中,也可以前缀为附加的 unet,用于区分文本编码器 LoRA 层。
  • transformer (LTXVideoTransformer3DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。提供时,peftLoraConfig 参数将不会从状态字典中推导。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • kwargs (dict, 可选) — 请参阅 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下其中一种:

    • 一个字符串,即托管在 Hub 上的预训练模型的模型 ID(例如 google/ddpm-celebahq-256)。
    • 一个目录的路径(例如 ./my_model_directory),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用于远程文件的 HTTP bearer 授权令牌。如果为 True,则使用 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 或本地大型模型存储库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用后,同时返回通常在状态字典中找到的 LoRA 适配器元数据。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.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 方式保存模型。
  • transformer_lora_adapter_metadata — 与 Transformer 关联的 LoRA 适配器元数据,将与状态字典一起序列化。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从中移除 LoRA 的可注入 LoRA 组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否取消 UNet LoRA 参数的融合。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

SanaLoraLoaderMixin

class diffusers.loaders.SanaLoraLoaderMixin

< >

( )

将LoRA层加载到SanaTransformer2DModel中。特定于SanaPipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 一个包含 LoRA 层参数的标准状态字典。键可以直接索引到 unet 中,也可以带有额外的前缀 unet,用于区分文本编码器 LoRA 层。
  • transformer (SanaTransformer2DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中推导。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • kwargs (dict, 可选) — 请参阅 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是:

    • Hub 上托管的预训练模型的模型 ID 字符串(例如 google/ddpm-celebahq-256)。
    • 包含使用 ModelMixin.save_pretrained() 保存的模型权重的目录路径(例如 ./my_model_directory)。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用作远程文件 HTTP 承载授权的令牌。如果为 True,则使用从 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件中在 Hub 或本地较大模型仓库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.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 方式保存模型。
  • transformer_lora_adapter_metadata — 与 transformer 关联的 LoRA 适配器元数据,将与状态字典一起序列化。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从中解融合 LoRA 的可注入 LoRA 组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否解融合 UNet LoRA 参数。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

HunyuanVideoLoraLoaderMixin

class diffusers.loaders.HunyuanVideoLoraLoaderMixin

< >

( )

将 LoRA 层加载到 HunyuanVideoTransformer3DModel 中。特定于 HunyuanVideoPipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 一个包含 LoRA 层参数的标准状态字典。键可以直接索引到 unet 中,也可以带有额外的前缀 unet,用于区分文本编码器 LoRA 层。
  • transformer (HunyuanVideoTransformer3DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中推导。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • kwargs (dict, 可选) — 请参阅 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是:

    • Hub 上托管的预训练模型的模型 ID 字符串(例如 google/ddpm-celebahq-256)。
    • 包含使用 ModelMixin.save_pretrained() 保存的模型权重的目录路径(例如 ./my_model_directory)。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用于远程文件的 HTTP bearer 授权的 token。如果为 True,则使用由 diffusers-cli login 生成的 token(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 上或本地的更大模型存储库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持加载原始格式的 HunyuanVideo LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.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 方式保存模型。
  • transformer_lora_adapter_metadata — 与状态字典一起序列化的转换器相关的 LoRA 适配器元数据。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从其取消融合 LoRA 的可注入 LoRA 组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否取消融合 UNet LoRA 参数。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

Lumina2LoraLoaderMixin

class diffusers.loaders.Lumina2LoraLoaderMixin

< >

( )

将 LoRA 层加载到 Lumina2Transformer2DModel 中。特定于 Lumina2Text2ImgPipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以带有附加的 unet 前缀,用于区分文本编码器 lora 层。
  • transformer (Lumina2Transformer2DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。提供时,peftLoraConfig 参数将不会从状态字典中推导。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • kwargs (dict, 可选) — 请参阅 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是:

    • Hub 上托管的预训练模型的模型 ID 字符串(例如 google/ddpm-celebahq-256)。
    • 包含使用 ModelMixin.save_pretrained() 保存的模型权重的目录路径(例如 ./my_model_directory)。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用于远程文件的 HTTP bearer 授权的 token。如果为 True,则使用由 diffusers-cli login 生成的 token(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 上或本地的更大模型存储库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.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 方式保存模型。
  • transformer_lora_adapter_metadata — 与状态字典一起序列化的转换器相关的 LoRA 适配器元数据。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从其取消融合 LoRA 的可注入 LoRA 组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否取消融合 UNet LoRA 参数。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

CogView4LoraLoaderMixin

class diffusers.loaders.CogView4LoraLoaderMixin

< >

( )

将 LoRA 层加载到 WanTransformer3DModel 中。特定于 CogView4Pipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 lora 层参数的标准状态字典。键可以直接索引到 unet 中,也可以带有附加的 unet 前缀,用于区分文本编码器 lora 层。
  • transformer (CogView4Transformer2DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。提供时,peftLoraConfig 参数将不会从状态字典中推导。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, optional) — 详见 load_lora_weights()
  • kwargs (dict, optional) — 详见 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下之一:

    • Hub 上托管的预训练模型的模型 ID 字符串(例如 google/ddpm-celebahq-256)。
    • 包含使用 ModelMixin.save_pretrained() 保存的模型权重的目录路径(例如 ./my_model_directory)。
    • torch 状态字典
  • cache_dir (Union[str, os.PathLike], optional) — 如果不使用标准缓存,则为下载的预训练模型配置的缓存目录路径。
  • force_download (bool, optional, defaults to False) — 是否强制重新下载模型权重和配置文件,如果已缓存则覆盖。
  • proxies (Dict[str, str], optional) — 按协议或端点使用的代理服务器字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。每次请求都会使用代理。
  • local_files_only (bool, optional, defaults to False) — 是否只加载本地模型权重和配置文件。如果设置为 True,则不会从 Hub 下载模型。
  • token (strbool, optional) — 用作远程文件 HTTP bearer 授权的 token。如果为 True,则使用 diffusers-cli login 生成的 token(存储在 ~/.huggingface 中)。
  • revision (str, optional, defaults to "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, optional, defaults to "") — Hub 或本地较大模型仓库中模型文件的子文件夹位置。
  • return_lora_metadata (bool, optional, defaults to False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.PathLike) — LoRA 参数保存的目录。如果不存在,将创建该目录。
  • transformer_lora_layers (Dict[str, torch.nn.Module]Dict[str, torch.Tensor]) — 对应于 transformer 的 LoRA 层的状态字典。
  • is_main_process (bool, optional, defaults to True) — 调用此过程是否为主过程。在分布式训练中,如果您需要在所有过程中调用此函数,则此选项很有用。在这种情况下,仅在主进程上设置 is_main_process=True 以避免竞态条件。
  • save_function (Callable) — 用于保存状态字典的函数。在分布式训练中,当您需要用其他方法替换 torch.save 时很有用。可以通过环境变量 DIFFUSERS_SAVE_MODE 进行配置。
  • safe_serialization (bool, optional, defaults to True) — 是否使用 safetensors 或传统的 PyTorch pickle 方式保存模型。
  • transformer_lora_adapter_metadata — 与状态字典一同序列化的与 transformer 相关的 LoRA 适配器元数据。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从中解除 LoRA 绑定的可注入 LoRA 组件列表。
  • unfuse_transformer (bool, defaults to True) — 是否解除 UNet LoRA 参数的绑定。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

WanLoraLoaderMixin

class diffusers.loaders.WanLoraLoaderMixin

< >

( )

将 LoRA 层加载到 WanTransformer3DModel 中。特定于 WanPipeline[WanImageToVideoPipeline]。

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 LoRA 层参数的标准状态字典。键可以直接索引到 unet 中,也可以前缀加上 unet 以区分文本编码器 LoRA 层。
  • transformer (WanTransformer3DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, optional) — 用于引用已加载适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载。
  • hotswap (bool, optional) — 详见 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 详见 lora_state_dict()
  • adapter_name (str, optional) — 用于引用已加载适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载。
  • hotswap (bool, optional) — 详见 load_lora_weights()
  • kwargs (dict, optional) — 详见 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下之一:

    • Hub 上托管的预训练模型的模型 ID 字符串(例如 google/ddpm-celebahq-256)。
    • 包含使用 ModelMixin.save_pretrained() 保存的模型权重的目录路径(例如 ./my_model_directory)。
    • torch 状态字典
  • cache_dir (Union[str, os.PathLike], optional) — 如果不使用标准缓存,则为下载的预训练模型配置的缓存目录路径。
  • force_download (bool, optional, defaults to False) — 是否强制(重新)下载模型权重和配置文件,如果已存在则覆盖缓存版本。
  • proxies (Dict[str, str], optional) — 要按协议或端点使用的代理服务器字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。每次请求都会使用代理。
  • local_files_only (bool, optional, defaults to False) — 是否只加载本地模型权重和配置文件。如果设置为 True,则不会从 Hub 下载模型。
  • token (strbool, optional) — 用作远程文件 HTTP bearer 授权的 token。如果为 True,则使用 diffusers-cli login 生成的 token(存储在 ~/.huggingface 中)。
  • revision (str, optional, defaults to "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, optional, defaults to "") — Hub 或本地较大模型仓库中模型文件的子文件夹位置。
  • return_lora_metadata (bool, optional, defaults to False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.PathLike) — LoRA 参数保存的目录。如果不存在,将创建该目录。
  • transformer_lora_layers (Dict[str, torch.nn.Module]Dict[str, torch.Tensor]) — 对应于 transformer 的 LoRA 层的状态字典。
  • is_main_process (bool, optional, defaults to True) — 调用此过程是否为主过程。在分布式训练中,如果您需要在所有过程中调用此函数,则此选项很有用。在这种情况下,仅在主进程上设置 is_main_process=True 以避免竞态条件。
  • save_function (Callable) — 用于保存状态字典的函数。在分布式训练中,当您需要用其他方法替换 torch.save 时很有用。可以通过环境变量 DIFFUSERS_SAVE_MODE 进行配置。
  • safe_serialization (bool, optional, defaults to True) — 是否使用 safetensors 或传统的 PyTorch pickle 方式保存模型。
  • transformer_lora_adapter_metadata — 与状态字典一同序列化的与 transformer 相关的 LoRA 适配器元数据。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从中解除 LoRA 绑定的可注入 LoRA 组件列表。
  • unfuse_transformer (bool, defaults to True) — 是否解除 UNet LoRA 参数的绑定。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

AmusedLoraLoaderMixin

class diffusers.loaders.AmusedLoraLoaderMixin

< >

( )

load_lora_into_transformer

< >

( state_dict network_alphas transformer adapter_name = None metadata = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = 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, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

save_lora_weights

< >

( save_directory: typing.Union[str, os.PathLike] text_encoder_lora_layers: typing.Dict[str, torch.nn.modules.module.Module] = None transformer_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 (stros.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 层的状态字典。必须显式传递文本编码器 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 参数。

HiDreamImageLoraLoaderMixin

class diffusers.loaders.HiDreamImageLoraLoaderMixin

< >

( )

将 LoRA 层加载到 HiDreamImageTransformer2DModel 中。专用于 HiDreamImagePipeline

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 一个标准的状态字典,包含 LoRA 层参数。键可以直接索引到 unet 中,也可以带有额外的前缀 unet,用于区分文本编码器 LoRA 层。
  • transformer (HiDreamImageTransformer2DModel) — 用于加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 请参阅 lora_state_dict()
  • adapter_name (str, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载速度。
  • hotswap (bool, 可选) — 请参阅 load_lora_weights()
  • kwargs (dict, 可选) — 请参阅 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下之一:

    • 一个字符串,即托管在 Hub 上的预训练模型的模型 ID(例如 google/ddpm-celebahq-256)。
    • 一个目录的路径(例如 ./my_model_directory),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。
    • 一个 torch 状态字典
  • 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 (strbool, 可选) — 用作远程文件的 HTTP 授权令牌。如果为 True,则使用从 diffusers-cli login 生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, 可选, 默认为 "") — 模型文件在 Hub 或本地较大模型仓库中的子文件夹位置。
  • return_lora_metadata (bool, 可选, 默认为 False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.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 保存模型。
  • transformer_lora_adapter_metadata — 与状态字典一起序列化的与 transformer 相关的 LoRA 适配器元数据。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从中解除 LoRA 的 LoRA 可注入组件列表。
  • unfuse_transformer (bool, 默认为 True) — 是否解除 UNet LoRA 参数的融合。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

WanLoraLoaderMixin

class diffusers.loaders.WanLoraLoaderMixin

< >

( )

将 LoRA 层加载到 WanTransformer3DModel 中。特定于 WanPipeline[WanImageToVideoPipeline]。

load_lora_into_transformer

< >

( state_dict transformer adapter_name = None _pipeline = None low_cpu_mem_usage = False hotswap: bool = False metadata = None )

参数

  • state_dict (dict) — 包含 LoRA 层参数的标准状态字典。键可以直接索引到 unet 中,也可以前缀加上 unet 以区分文本编码器 LoRA 层。
  • transformer (WanTransformer3DModel) — 要加载 LoRA 层的 Transformer 模型。
  • adapter_name (str, optional) — 用于引用已加载适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载。
  • hotswap (bool, optional) — 详见 load_lora_weights()
  • metadata (dict) — 可选的 LoRA 适配器元数据。如果提供,peftLoraConfig 参数将不会从状态字典中派生。

这将把 state_dict 中指定的 LoRA 层加载到 transformer 中。

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] adapter_name: typing.Optional[str] = None hotswap: bool = False **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 详见 lora_state_dict()
  • adapter_name (str, optional) — 用于引用已加载适配器模型的适配器名称。如果未指定,将使用 default_{i},其中 i 是正在加载的适配器总数。
  • low_cpu_mem_usage (bool, optional) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加快模型加载。
  • hotswap (bool, optional) — 详见 load_lora_weights()
  • kwargs (dict, optional) — 详见 lora_state_dict()

pretrained_model_name_or_path_or_dict 中指定的 LoRA 权重加载到 self.transformerself.text_encoder 中。所有 kwargs 都转发到 self.lora_state_dict。有关如何加载状态字典的更多详细信息,请参阅 lora_state_dict()。有关如何将状态字典加载到 self.transformer 中的更多详细信息,请参阅 ~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer

lora_state_dict

< >

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )

参数

  • pretrained_model_name_or_path_or_dict (stros.PathLikedict) — 可以是以下之一:

    • Hub 上托管的预训练模型的模型 ID 字符串(例如 google/ddpm-celebahq-256)。
    • 包含使用 ModelMixin.save_pretrained() 保存的模型权重的目录路径(例如 ./my_model_directory)。
    • torch 状态字典
  • cache_dir (Union[str, os.PathLike], optional) — 如果不使用标准缓存,则为下载的预训练模型配置的缓存目录路径。
  • force_download (bool, optional, defaults to False) — 是否强制(重新)下载模型权重和配置文件,如果已存在则覆盖缓存版本。
  • proxies (Dict[str, str], optional) — 要按协议或端点使用的代理服务器字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。每次请求都会使用代理。
  • local_files_only (bool, optional, defaults to False) — 是否只加载本地模型权重和配置文件。如果设置为 True,则不会从 Hub 下载模型。
  • token (strbool, optional) — 用作远程文件 HTTP bearer 授权的 token。如果为 True,则使用 diffusers-cli login 生成的 token(存储在 ~/.huggingface 中)。
  • revision (str, optional, defaults to "main") — 要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID 或 Git 允许的任何标识符。
  • subfolder (str, optional, defaults to "") — Hub 或本地较大模型仓库中模型文件的子文件夹位置。
  • return_lora_metadata (bool, optional, defaults to False) — 启用时,额外返回 LoRA 适配器元数据,通常在状态字典中找到。

返回 lora 权重和网络 alpha 的状态字典。

我们支持有限地加载 A1111 格式的 LoRA 检查点。

此函数是实验性的,未来可能会更改。

save_lora_weights

< >

( 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 transformer_lora_adapter_metadata: typing.Optional[dict] = None )

参数

  • save_directory (stros.PathLike) — LoRA 参数保存的目录。如果不存在,将创建该目录。
  • transformer_lora_layers (Dict[str, torch.nn.Module]Dict[str, torch.Tensor]) — 对应于 transformer 的 LoRA 层的状态字典。
  • is_main_process (bool, optional, defaults to True) — 调用此过程是否为主过程。在分布式训练中,如果您需要在所有过程中调用此函数,则此选项很有用。在这种情况下,仅在主进程上设置 is_main_process=True 以避免竞态条件。
  • save_function (Callable) — 用于保存状态字典的函数。在分布式训练中,当您需要用其他方法替换 torch.save 时很有用。可以通过环境变量 DIFFUSERS_SAVE_MODE 进行配置。
  • safe_serialization (bool, optional, defaults to True) — 是否使用 safetensors 或传统的 PyTorch pickle 方式保存模型。
  • transformer_lora_adapter_metadata — 与状态字典一同序列化的与 transformer 相关的 LoRA 适配器元数据。

保存与转换器对应的 LoRA 参数。

解融合 LoRA

< >

( components: typing.List[str] = ['transformer'] **kwargs )

参数

  • components (List[str]) — 要从中解除 LoRA 绑定的可注入 LoRA 组件列表。
  • unfuse_transformer (bool, defaults to True) — 是否解除 UNet LoRA 参数的绑定。

反转 pipe.fuse_lora() 的效果。

这是一个实验性 API。

< > 在 GitHub 上更新