PEFT
扩散器支持使用 LoRA 等适配器加载 PEFT 库,使用 PeftAdapterMixin 类。这使得扩散器中的建模类,如 UNet2DConditionModel、SD3Transformer2DModel 可以使用适配器进行操作。
有关如何在扩散器中使用 PEFT 进行推理的概述,请参阅 使用 PEFT 进行推理 教程。
PeftAdapterMixin
一个包含所有用于加载和使用 PEFT 库中支持的适配器权重的函数的类。有关适配器以及将其注入基本模型的更多详细信息,请查看 PEFT 文档。
安装最新版本的 PEFT,并使用此 mixin 来
- 在模型中附加新的适配器。
- 附加多个适配器并迭代地激活/停用它们。
- 从模型中激活/停用所有适配器。
- 获取活动适配器列表。
add_adapter
< source >( adapter_config adapter_name: str = 'default' )
将新的适配器添加到当前模型以进行训练。 如果未传递适配器名称,则会为适配器分配一个默认名称,以遵循 PEFT 库的约定。
如果您不熟悉适配器和 PEFT 方法,我们邀请您阅读 PEFT 的更多信息 文档.
delete_adapters
< source >( adapter_names: Union )
从底层模型中删除适配器的 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")
禁用附加到模型的所有适配器,并仅使用基本模型进行推理。
如果您不熟悉适配器和 PEFT 方法,我们建议您阅读 PEFT 文档 中的更多信息。
禁用底层模型的活动 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()
启用附加到模型的适配器。 模型使用 self.active_adapters()
来检索要启用的适配器列表。
如果您不熟悉适配器和 PEFT 方法,我们建议您阅读 PEFT 文档 中的更多信息。
启用底层模型的活动 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()
set_adapter
< source >( adapter_name: Union )
通过强制模型仅使用该适配器并禁用其他适配器来设置特定适配器。
如果您不熟悉适配器和 PEFT 方法,我们建议您阅读 PEFT 文档 中的更多信息。
设置当前活动的适配器以供 UNet 使用。
示例
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])