LoRA
LoRA 是一种快速且轻量级的训练方法,它通过插入并训练数量远少于模型全部参数的参数来实现训练。这会产生更小的文件(约 100 MB),并使快速训练模型以学习新概念变得更加容易。LoRA 权重通常加载到去噪器、文本编码器或两者中。去噪器通常对应于 UNet(例如 UNet2DConditionModel)或 Transformer(例如 SD3Transformer2DModel)。有几种用于加载 LoRA 权重的类:
StableDiffusionLoraLoaderMixin提供了用于加载和卸载、融合和取消融合、启用和禁用等管理 LoRA 权重的函数。该类可与任何模型配合使用。StableDiffusionXLLoraLoaderMixin是StableDiffusionLoraLoaderMixin类的 Stable Diffusion (SDXL) 版本,用于加载和保存 LoRA 权重。它仅能与 SDXL 模型配合使用。SD3LoraLoaderMixin为 Stable Diffusion 3 提供了类似的功能。FluxLoraLoaderMixin为 Flux 提供了类似的功能。CogVideoXLoraLoaderMixin为 CogVideoX 提供了类似的功能。Mochi1LoraLoaderMixin为 Mochi 提供了类似的功能。AuraFlowLoraLoaderMixin为 AuraFlow 提供了类似的功能。LTXVideoLoraLoaderMixin为 LTX-Video 提供了类似的功能。SanaLoraLoaderMixin为 Sana 提供了类似的功能。HeliosLoraLoaderMixin为 HunyuanVideo 提供了类似的功能。HunyuanVideoLoraLoaderMixin为 HunyuanVideo 提供了类似的功能。Lumina2LoraLoaderMixin为 Lumina2 提供了类似的功能。WanLoraLoaderMixin为 Wan 提供了类似的功能。SkyReelsV2LoraLoaderMixin为 SkyReels-V2 提供了类似的功能。CogView4LoraLoaderMixin为 CogView4 提供了类似的功能。AmusedLoraLoaderMixin用于AmusedPipeline。AnimaLoraLoaderMixin为 Anima 提供了类似的功能。AceStepLoraLoaderMixin为 ACE-Step 提供类似的功能。HiDreamImageLoraLoaderMixin为 HiDream Image 提供了类似的功能QwenImageLoraLoaderMixin为 Qwen Image 提供了类似的功能。ZImageLoraLoaderMixin为 Z-Image 提供了类似的功能。Flux2LoraLoaderMixin为 Flux2 提供了类似的功能。ErnieImageLoraLoaderMixin为 Ernie-Image 提供了类似的功能。LTX2LoraLoaderMixin为 Flux2 提供了类似的功能。MiniMaxH3LoraLoaderMixin为 MiniMax-H3 提供了类似的功能。PikaH3FlexLoraLoaderMixin为 Pika H3 Flex 提供了类似的功能。RFD4ProteinaLoraLoaderMixin为 RFD4-Proteína 提供了类似的功能。BriaFibo2LoraLoaderMixin为 fibo-2 提供了类似的功能。LoraBaseMixin提供了一个基类,其中包含用于融合、解融合、卸载 LoRA 等的若干实用方法。
要了解如何加载 LoRA 权重,请参阅 LoRA 加载指南。
RFD4ProteinaLoraLoaderMixin
将 LoRA 层加载到 RFD4ProteinaTransformer 中。
自编码器与去噪器检查点配对使用,且未进行适配,因此 Transformer 是唯一可加载的模块。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
LoraBaseMixin
用于处理 LoRA 的实用类。
delete_adapters
< source >( adapter_names: 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 层。
示例:
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 层。
示例:
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()enable_lora_hotswap
< source >( **kwargs )
在不触发模型重新编译的情况下热插拔适配器,或者在加载的适配器秩不同时。
fuse_lora
< source >( components: list[str] | None = Nonelora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
将 LoRA 参数融合到对应块的原始参数中。
示例:
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_adapters
< source >( adapter_names: list[str] | stradapter_weights: float | dict[str, float | dict | None] | list[float | dict[str, float | dict | None] | None] | None = None )
参数
- adapter_names (
list[str]或str) — 要使用的适配器名称。 - adapter_weights (
float、dict或list,可选) — 适配器的权重。标量会缩放所有支持 LoRA 的组件。字典将组件名称(例如"unet"、"transformer"或"text_encoder")映射到权重;UNet 组件的权重也可以是一个包含块缩放的嵌套字典。单个标量或字典会应用于每个适配器。列表必须按adapter_names的顺序,为每个适配器包含一个标量、字典或None。None默认为1.0,包括列表项和组件权重。未指定的组件和 UNet 块也默认为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(
"troveski/sdxl-lora", weight_name="pytorch_lora_weights.safetensors", adapter_name="illustration"
)
pipeline.set_adapters(["cinematic", "illustration"], adapter_weights=[0.5, 0.5])
pipeline.set_adapters(
["cinematic", "illustration"],
adapter_weights=[{"unet": 0.5}, {"unet": 0.8, "text_encoder": 0.6}],
)set_lora_device
< source >( adapter_names: list[str]device: torch.device | str | int )
将 adapter_names 中列出的 LoRA 移动到目标设备。如果您想加载多个适配器并释放一些 GPU 内存,则可以将 LoRA 卸载到 CPU,此操作非常有用。
将 LoRA 适配器卸载到 CPU 后,只要模型的其余部分仍在 GPU 上,这些 LoRA 适配器就无法再用于推理,因为这会导致设备不匹配。请记住,在使用这些 LoRA 适配器进行推理之前,先将设备设置回 GPU。
>>> pipe.load_lora_weights(path_1, adapter_name="adapter-1")
>>> pipe.load_lora_weights(path_2, adapter_name="adapter-2")
>>> pipe.set_adapters("adapter-1")
>>> image_1 = pipe(**kwargs)
>>> # switch to adapter-2, offload adapter-1
>>> pipeline.set_lora_device(adapter_names=["adapter-1"], device="cpu")
>>> pipeline.set_lora_device(adapter_names=["adapter-2"], device="cuda:0")
>>> pipe.set_adapters("adapter-2")
>>> image_2 = pipe(**kwargs)
>>> # switch back to adapter-1, offload adapter-2
>>> pipeline.set_lora_device(adapter_names=["adapter-2"], device="cpu")
>>> pipeline.set_lora_device(adapter_names=["adapter-1"], device="cuda:0")
>>> pipe.set_adapters("adapter-1")
>>> ...unfuse_lora
< source >( components: list[str] | None = None**kwargs )
撤销 pipe.fuse_lora() 的效果。
卸载 LoRA 参数。
write_lora_layers
< source >( state_dict: dict[str, torch.Tensor]save_directory: stris_main_process: boolweight_name: strsave_function: Callablesafe_serialization: boollora_adapter_metadata: dict | None = None )
将 LoRA 层的 state dict(可选包含元数据)写入磁盘。
StableDiffusionLoraLoaderMixin
将 LoRA 层加载到 Stable Diffusion 的 UNet2DConditionModel 和 CLIPTextModel 中。
load_lora_into_text_encoder
< source >( state_dictnetwork_alphastext_encoderprefix = Nonelora_scale = 1.0adapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
参数
- state_dict (
dict) — 一个包含 lora 层参数的标准 state dict。键名应额外添加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, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用default_{i},其中 i 为正在加载的适配器总数。 - low_cpu_mem_usage (
bool,可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重,来加快模型加载速度。 - hotswap(
bool,可选)— 参见 load_lora_weights()。 - metadata (
dict) — 可选的 LoRA 适配器元数据。如果提供,peft的LoraConfig参数将不会从状态字典中推导得出。
这将把state_dict中指定的 LoRA 层加载到text_encoder中
load_lora_into_unet
< source >( state_dictnetwork_alphasunetadapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
参数
- state_dict (
dict) — 一个包含 lora 层参数的标准 state dict。其键可以直接索引到 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 适配器元数据。如果提供,peft的LoraConfig参数将不会从状态字典中推导得出。
这将把 state_dict 中指定的 LoRA 层加载到 unet 中。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**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 权重而不初始化随机权重,来加快模型加载速度。 - hotswap (
bool, 可选) — 默认值为False. 是否用新加载的适配器就地替换现有的(LoRA)适配器。这意味着,系统不会加载额外的适配器,而是获取现有适配器的权重,并用新适配器的权重将其替换。这种方式可能更快且更节省内存。然而,热替换的主要优势在于,当模型使用 torch.compile 编译时,加载新适配器无需重新编译模型。使用热替换时,传入的adapter_name应为已加载适配器的名称。如果新适配器和旧适配器的秩和/或 LoRA alpha(即缩放)不同,则在加载适配器之前需要调用一个额外的方法:
将 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: str | 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 上的预训练模型的 model id(例如
google/ddpm-celebahq-256)。 - 指向一个目录的路径(例如
./my_model_directory),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。 - 一个 torch 状态字典。
- 一个字符串,即托管在 Hub 上的预训练模型的 model id(例如
- cache_dir (
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 或本地更大的模型仓库中的子文件夹位置。 - weight_name (
str,可选,默认为 None) — 序列化状态字典文件的名称。 - return_lora_metadata (
bool,可选,默认为 False) — 启用后,将额外返回 LoRA 适配器元数据,通常位于 state dict 中。
返回 LoRA 权重和网络 alpha 的状态字典。
> 我们有限地支持加载 A1111 格式的 LoRA 检查点。 > > 此功能为实验性功能,未来可能会发生变化。
save_lora_weights
< source >( save_directory: str | os.PathLikeunet_lora_layers: dict = Nonetext_encoder_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Trueunet_lora_adapter_metadata = Nonetext_encoder_lora_adapter_metadata = None )
参数
- save_directory (
str或os.PathLike) — 用于保存 LoRA 参数的目录。如果该目录不存在,将会自动创建。 - unet_lora_layers (
dict[str, torch.nn.Module]或dict[str, torch.Tensor]) — 与unet对应的 LoRA 层的 state dict。 - text_encoder_lora_layers (
dict[str, torch.nn.Module]或dict[str, torch.Tensor]) — 与text_encoder对应的 LoRA 层的 state dict。由于它来自 🤗 Transformers,因此必须显式传入文本编码器的 LoRA state dict。 - is_main_process (
bool,可选,默认为True) — 调用此函数的进程是否为主进程。在分布式训练期间,当需要在所有进程上调用此函数时非常有用。在这种情况下,仅在主进程上设置is_main_process=True,以避免竞态条件。 - save_function (
Callable) — 用于保存状态字典的函数。在分布式训练期间,当您需要用其他方法替换torch.save时非常有用。可以通过环境变量DIFFUSERS_SAVE_MODE进行配置。 - safe_serialization(
bool,可选,默认为True)—— 是否使用safetensors保存模型,还是使用传统的基于pickle的 PyTorch 方式。 - unet_lora_adapter_metadata — 与 unet 关联的 LoRA 适配器元数据,将随状态字典一起序列化。
- text_encoder_lora_adapter_metadata — 与文本编码器关联的 LoRA 适配器元数据,将随状态字典一起序列化。
保存与 UNet 和文本编码器对应的 LoRA 参数。
StableDiffusionXLLoraLoaderMixin
将 LoRA 层加载到 Stable Diffusion XL 的 UNet2DConditionModel、CLIPTextModel 和 CLIPTextModelWithProjection 中。
fuse_lora
< source >( components: list = ['unet', 'text_encoder', 'text_encoder_2']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_text_encoder
< source >( state_dictnetwork_alphastext_encoderprefix = Nonelora_scale = 1.0adapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
参数
- state_dict (
dict) — 一个包含 lora 层参数的标准 state dict。键名应额外添加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, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用default_{i},其中 i 为正在加载的适配器总数。 - low_cpu_mem_usage (
bool,可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重,来加快模型加载速度。 - hotswap(
bool,可选)— 参见 load_lora_weights()。 - metadata (
dict) — 可选的 LoRA 适配器元数据。如果提供,peft的LoraConfig参数将不会从状态字典中推导得出。
这将把state_dict中指定的 LoRA 层加载到text_encoder中
load_lora_into_unet
< source >( state_dictnetwork_alphasunetadapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
参数
- state_dict (
dict) — 一个包含 lora 层参数的标准 state dict。其键可以直接索引到 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 适配器元数据。如果提供,peft的LoraConfig参数将不会从状态字典中推导得出。
这将把 state_dict 中指定的 LoRA 层加载到 unet 中。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | 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 上的预训练模型的 model id(例如
google/ddpm-celebahq-256)。 - 指向一个目录的路径(例如
./my_model_directory),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。 - 一个 torch 状态字典。
- 一个字符串,即托管在 Hub 上的预训练模型的 model id(例如
- cache_dir (
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 或本地更大的模型仓库中的子文件夹位置。 - weight_name (
str,可选,默认为 None) — 序列化状态字典文件的名称。 - return_lora_metadata (
bool,可选,默认为 False) — 启用后,将额外返回 LoRA 适配器元数据,通常位于 state dict 中。
返回 LoRA 权重和网络 alpha 的状态字典。
> 我们有限地支持加载 A1111 格式的 LoRA 检查点。 > > 此功能为实验性功能,未来可能会发生变化。
save_lora_weights
< source >( save_directory: str | os.PathLikeunet_lora_layers: dict = Nonetext_encoder_lora_layers: dict = Nonetext_encoder_2_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Trueunet_lora_adapter_metadata = Nonetext_encoder_lora_adapter_metadata = Nonetext_encoder_2_lora_adapter_metadata = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
SD3LoraLoaderMixin
将 LoRA 层加载到 SD3Transformer2DModel、CLIPTextModel 和 CLIPTextModelWithProjection 中。
fuse_lora
< source >( components: list = ['transformer', 'text_encoder', 'text_encoder_2']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_text_encoder
< source >( state_dictnetwork_alphastext_encoderprefix = Nonelora_scale = 1.0adapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
参数
- state_dict (
dict) — 一个包含 lora 层参数的标准 state dict。键名应额外添加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, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用default_{i},其中 i 为正在加载的适配器总数。 - low_cpu_mem_usage (
bool,可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重,来加快模型加载速度。 - hotswap(
bool,可选)— 参见 load_lora_weights()。 - metadata (
dict) — 可选的 LoRA 适配器元数据。如果提供,peft的LoraConfig参数将不会从状态字典中推导得出。
这将把state_dict中指定的 LoRA 层加载到text_encoder中
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Nonetext_encoder_lora_layers: dict = Nonetext_encoder_2_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata = Nonetext_encoder_lora_adapter_metadata = Nonetext_encoder_2_lora_adapter_metadata = None )
有关更多信息,请参阅 save_lora_weights()。
unfuse_lora
< source >( components: list = ['transformer', 'text_encoder', 'text_encoder_2']**kwargs )
有关更多详细信息,请参阅 unfuse_lora()。
FluxLoraLoaderMixin
将 LoRA 层加载到 FluxTransformer2DModel、CLIPTextModel 中。
特定于 FluxPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
load_lora_into_text_encoder
< source >( state_dictnetwork_alphastext_encoderprefix = Nonelora_scale = 1.0adapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
参数
- state_dict (
dict) — 一个包含 lora 层参数的标准 state dict。键名应额外添加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, 可选) — 用于引用已加载的适配器模型的适配器名称。如果未指定,将使用default_{i},其中 i 为正在加载的适配器总数。 - low_cpu_mem_usage (
bool,可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重,来加快模型加载速度。 - hotswap(
bool,可选)— 参见 load_lora_weights()。 - metadata (
dict) — 可选的 LoRA 适配器元数据。如果提供,peft的LoraConfig参数将不会从状态字典中推导得出。
这将把state_dict中指定的 LoRA 层加载到text_encoder中
load_lora_into_transformer
< source >( state_dictnetwork_alphastransformeradapter_name = Nonemetadata = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = False )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]return_alphas: bool = False**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Nonetext_encoder_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata = Nonetext_encoder_lora_adapter_metadata = None )
参数
- 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 层的 state dict。由于它来自 🤗 Transformers,因此必须显式传入文本编码器的 LoRA state dict。 - is_main_process (
bool,可选,默认为True) — 调用此函数的进程是否为主进程。在分布式训练期间,当需要在所有进程上调用此函数时非常有用。在这种情况下,仅在主进程上设置is_main_process=True,以避免竞态条件。 - save_function (
Callable) — 用于保存状态字典的函数。在分布式训练期间,当您需要用其他方法替换torch.save时非常有用。可以通过环境变量DIFFUSERS_SAVE_MODE进行配置。 - safe_serialization(
bool,可选,默认为True)—— 是否使用safetensors保存模型,还是使用传统的基于pickle的 PyTorch 方式。 - transformer_lora_adapter_metadata — 与 transformer 关联的 LoRA 适配器元数据,将随 state dict 一起序列化。
- text_encoder_lora_adapter_metadata — 与文本编码器关联的 LoRA 适配器元数据,将随状态字典一起序列化。
保存与 UNet 和文本编码器对应的 LoRA 参数。
unfuse_lora
< source >( components: list = ['transformer', 'text_encoder']**kwargs )
撤销 pipe.fuse_lora() 的效果。
unload_lora_weights
< source >( reset_to_overwritten_params = False )
参数
- reset_to_overwritten_params (
bool,默认为False) — 是否将加载了 LoRA 的模块重置为其原始参数。有关更多信息,请参阅 Flux 文档。
卸载 LoRA 参数。
Flux2LoraLoaderMixin
将 LoRA 层加载到 Flux2Transformer2DModel 中。专用于 Flux2Pipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
Flux3LoraLoaderMixin
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
BriaFibo2LoraLoaderMixin
将 LoRA 层加载到 BriaFibo2Transformer2DModel 中。专用于 BriaFibo2Pipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
ErnieImageLoraLoaderMixin
将 LoRA 层加载到 ErnieImageTransformer2DModel 中。专用于 ErnieImagePipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
LTX2LoraLoaderMixin
将 LoRA 层加载到 LTX2VideoTransformer3DModel 中。专用于 LTX2Pipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = Noneprefix: str = 'transformer' )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
CogVideoXLoraLoaderMixin
将 LoRA 层加载到 CogVideoXTransformer3DModel 中。专用于 CogVideoXPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
Mochi1LoraLoaderMixin
将 LoRA 层加载到 MochiTransformer3DModel 中。专用于 MochiPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
AuraFlowLoraLoaderMixin
将 LoRA 层加载到 AuraFlowTransformer2DModel 中。专用于 AuraFlowPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
LTXVideoLoraLoaderMixin
将 LoRA 层加载到 LTXVideoTransformer3DModel 中。专用于 LTXPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
SanaLoraLoaderMixin
将 LoRA 层加载到 SanaTransformer2DModel 中。专用于 SanaPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
HeliosLoraLoaderMixin
将 LoRA 层加载到 HeliosTransformer3DModel 中。专用于 HeliosPipeline 和 HeliosPyramidPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
HunyuanVideoLoraLoaderMixin
将 LoRA 层加载到 HunyuanVideoTransformer3DModel 中。专用于 HunyuanVideoPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
Lumina2LoraLoaderMixin
将 LoRA 层加载到 Lumina2Transformer2DModel 中。专用于 Lumina2Pipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
CogView4LoraLoaderMixin
将 LoRA 层加载到 WanTransformer3DModel 中。专用于 CogView4Pipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
WanLoraLoaderMixin
将 LoRA 层加载到 WanTransformer3DModel 中。专用于 WanPipeline 和 [WanImageToVideoPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
SkyReelsV2LoraLoaderMixin
将 LoRA 层加载到 SkyReelsV2Transformer3DModel 中。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
AmusedLoraLoaderMixin
load_lora_into_transformer
< source >( state_dictnetwork_alphastransformeradapter_name = Nonemetadata = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = False )
有关更多详细信息,请参阅 load_lora_into_unet()。
save_lora_weights
< source >( save_directory: str | os.PathLiketext_encoder_lora_layers: dict = Nonetransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True )
参数
- save_directory (
str或os.PathLike) — 用于保存 LoRA 参数的目录。如果该目录不存在,将会自动创建。 - unet_lora_layers (
dict[str, torch.nn.Module]或dict[str, torch.Tensor]) — 与unet对应的 LoRA 层的 state dict。 - text_encoder_lora_layers (
dict[str, torch.nn.Module]或dict[str, torch.Tensor]) — 与text_encoder对应的 LoRA 层的 state dict。由于它来自 🤗 Transformers,因此必须显式传入文本编码器的 LoRA state dict。 - is_main_process (
bool,可选,默认为True) — 调用此函数的进程是否为主进程。在分布式训练期间,当需要在所有进程上调用此函数时非常有用。在这种情况下,仅在主进程上设置is_main_process=True,以避免竞态条件。 - save_function (
Callable) — 用于保存状态字典的函数。在分布式训练期间,当您需要用其他方法替换torch.save时非常有用。可以通过环境变量DIFFUSERS_SAVE_MODE进行配置。 - safe_serialization(
bool,可选,默认为True)—— 是否使用safetensors保存模型,还是使用传统的基于pickle的 PyTorch 方式。
保存与 UNet 和文本编码器对应的 LoRA 参数。
AnimaLoraLoaderMixin
将 LoRA 层加载到 CosmosTransformer3DModel 和 AnimaTextConditioner 中。
fuse_lora
< source >( components: list = ['transformer', 'text_conditioner']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
有关更多详细信息,请参阅 unfuse_lora()。
AceStepLoraLoaderMixin
将 LoRA 层加载到 AceStepTransformer1DModel 中。专用于 AceStepPipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
HiDreamImageLoraLoaderMixin
将 LoRA 层加载到 HiDreamImageTransformer2DModel 中。专用于 HiDreamImagePipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
QwenImageLoraLoaderMixin
将 LoRA 层加载到 QwenImageTransformer2DModel 中。专用于 QwenImagePipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
ZImageLoraLoaderMixin
将 LoRA 层加载到 ZImageTransformer2DModel 中。专用于 ZImagePipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
CosmosLoraLoaderMixin
将 LoRA 层加载到 CosmosTransformer3DModel 中,专用于 Cosmos2_5_PredictBasePipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
KandinskyLoraLoaderMixin
将 LoRA 层加载到 Kandinsky5Transformer3DModel 中,
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
Ideogram4LoraLoaderMixin
将 LoRA 层加载到 Ideogram4Transformer2DModel 中。专用于 Ideogram4Pipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
Krea2LoraLoaderMixin
将 LoRA 层加载到 Krea2Transformer2DModel 中。专用于 Krea2Pipeline。
fuse_lora
< source >( components: list = ['transformer']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = None )
有关更多信息,请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
MiniMaxH3LoraLoaderMixin
将 LoRA 层加载到 MiniMaxH3Transformer3DModel 中。专用于 MiniMaxH3ModularPipeline。
MiniMax-H3 包含两个具有相同模块名称的独立 DiT 分区(为一个分区加载的 LoRA 会被加载到另一个分区中并导致输出质量下降),因此路由是显式的:转换后的 state dict 目标为 transformer.;要访问 transformer_ref,请使用带有 transformer_ref. 前缀的文件,或设置 load_into_transformer_ref=True。
DiffSynth-Studio LoRA(例如 DiffSynth-Studio/MiniMax-H3-LoRA-LineartAnime)是针对原始检查点中按头交错的融合 QKV 进行训练的,并在转换时进行解交错。它们的 fp32 因子使得未融合的 LoRA 路径以 fp32 进行计算;在加载模型后对模型执行 .to(torch.bfloat16) 可恢复 bf16 内存预算。
LoRAs trained against a pruned checkpoint (the *_pruned_* files in Comfy-Org/MiniMax-H3; joyfox/MiniMax-H3-Turbo is one) fail with a size mismatch.
Alpha-less files load at alpha == rank (scale 1.0, the convention stated by e.g. larryvrh/MiniMax-H3-Turbo-Lora); a __metadata__ alpha entry (e.g. lightx2v/Minimax-h3-Turbo’s 8-step file), when
present, is honored instead.
fuse_lora
< source >( components: list = ['transformer', 'transformer_ref']lora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
有关更多详细信息,请参阅 fuse_lora()。
load_lora_into_transformer
< source >( state_dicttransformeradapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_into_transformer_ref
< source >( state_dicttransformer_refprefixadapter_name = None_pipeline = Nonelow_cpu_mem_usage = Falsehotswap: bool = Falsemetadata = None )
将 LoRA 层加载到 transformer_ref 分区中。prefix 是键所携带的组件名称,对于指定了分区名称的文件,该值为 transformer_ref;对于通过 load_into_transformer_ref=True 路由到此处的文件,该值为 transformer。有关更多详细信息,请参阅 load_lora_into_unet()。
load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = Falseload_into_transformer_ref: bool = False**kwargs )
将 LoRA 层加载到 transformer 中,或者在设置 load_into_transformer_ref=True 时加载到 transformer_ref 中。有关更多详细信息,请参阅 load_lora_weights()。
lora_state_dict
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
有关更多详细信息,请参阅 lora_state_dict()。
save_lora_weights
< source >( save_directory: str | os.PathLiketransformer_lora_layers: dict = Nonetransformer_ref_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Truetransformer_lora_adapter_metadata: dict | None = Nonetransformer_ref_lora_adapter_metadata: dict | None = None )
保存一个或两个 MiniMax-H3 分区的 LoRA 层。LoRA 所属的分区无法从其键中恢复,因此这是发布记录该信息的 H3 LoRA 的唯一方式。更多信息请参阅 save_lora_weights()。
有关更多详细信息,请参阅 unfuse_lora()。
PikaH3FlexLoraLoaderMixin
将 LoRA 层加载到 MiniMaxH3Transformer3DModel 中。专用于 PikaH3FlexModularPipeline。
Pika H3 Flex 版本是针对两个 MiniMax-H3 transformer 分区的一对秩为 128 的适配器,以 diffusers 模块名称的纯 PEFT 转储形式发布(fl2va/adapter.safetensors 对应 transformer,ref2va/adapter.safetensors 对应 transformer_ref)。这些不含 alpha 的文件在 alpha == rank(缩放系数 1.0)时加载,这是适配器自身的约定,其加载、路由和保存均由 MiniMaxH3LoraLoaderMixin 处理:fl2va 适配器进入 transformer,ref2va 适配器进入 transformer_ref —— 当流水线仅持有该分区时(workflow="ref2va")单独加载,当同时持有两个分区时则使用 load_into_transformer_ref=True。
LoraBaseMixin
用于处理 LoRA 的实用类。
delete_adapters
< source >( adapter_names: 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 层。
示例:
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 层。
示例:
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()enable_lora_hotswap
< source >( **kwargs )
在不触发模型重新编译的情况下热插拔适配器,或者在加载的适配器秩不同时。
fuse_lora
< source >( components: list[str] | None = Nonelora_scale: float = 1.0safe_fusing: bool = Falseadapter_names: list[str] | None = None**kwargs )
将 LoRA 参数融合到对应块的原始参数中。
示例:
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_adapters
< source >( adapter_names: list[str] | stradapter_weights: float | dict[str, float | dict | None] | list[float | dict[str, float | dict | None] | None] | None = None )
参数
- adapter_names (
list[str]或str) — 要使用的适配器名称。 - adapter_weights (
float、dict或list,可选) — 适配器的权重。标量会缩放所有支持 LoRA 的组件。字典将组件名称(例如"unet"、"transformer"或"text_encoder")映射到权重;UNet 组件的权重也可以是一个包含块缩放的嵌套字典。单个标量或字典会应用于每个适配器。列表必须按adapter_names的顺序,为每个适配器包含一个标量、字典或None。None默认为1.0,包括列表项和组件权重。未指定的组件和 UNet 块也默认为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(
"troveski/sdxl-lora", weight_name="pytorch_lora_weights.safetensors", adapter_name="illustration"
)
pipeline.set_adapters(["cinematic", "illustration"], adapter_weights=[0.5, 0.5])
pipeline.set_adapters(
["cinematic", "illustration"],
adapter_weights=[{"unet": 0.5}, {"unet": 0.8, "text_encoder": 0.6}],
)set_lora_device
< source >( adapter_names: list[str]device: torch.device | str | int )
将 adapter_names 中列出的 LoRA 移动到目标设备。如果您想加载多个适配器并释放一些 GPU 内存,则可以将 LoRA 卸载到 CPU,此操作非常有用。
将 LoRA 适配器卸载到 CPU 后,只要模型的其余部分仍在 GPU 上,这些 LoRA 适配器就无法再用于推理,因为这会导致设备不匹配。请记住,在使用这些 LoRA 适配器进行推理之前,先将设备设置回 GPU。
>>> pipe.load_lora_weights(path_1, adapter_name="adapter-1")
>>> pipe.load_lora_weights(path_2, adapter_name="adapter-2")
>>> pipe.set_adapters("adapter-1")
>>> image_1 = pipe(**kwargs)
>>> # switch to adapter-2, offload adapter-1
>>> pipeline.set_lora_device(adapter_names=["adapter-1"], device="cpu")
>>> pipeline.set_lora_device(adapter_names=["adapter-2"], device="cuda:0")
>>> pipe.set_adapters("adapter-2")
>>> image_2 = pipe(**kwargs)
>>> # switch back to adapter-1, offload adapter-2
>>> pipeline.set_lora_device(adapter_names=["adapter-2"], device="cpu")
>>> pipeline.set_lora_device(adapter_names=["adapter-1"], device="cuda:0")
>>> pipe.set_adapters("adapter-1")
>>> ...unfuse_lora
< source >( components: list[str] | None = None**kwargs )
撤销 pipe.fuse_lora() 的效果。
卸载 LoRA 参数。
write_lora_layers
< source >( state_dict: dict[str, torch.Tensor]save_directory: stris_main_process: boolweight_name: strsave_function: Callablesafe_serialization: boollora_adapter_metadata: dict | None = None )
将 LoRA 层的 state dict(可选包含元数据)写入磁盘。