Diffusers 文档

PEFT

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

PEFT

Diffusers 支持使用 LoRA 等 adapters,通过 PEFT 库和 PeftAdapterMixin 类。这允许 Diffusers 中的建模类(如 UNet2DConditionModelSD3Transformer2DModel)与 adapter 一起运行。

请参阅 Inference with PEFT 教程,概述如何在 Diffusers 中使用 PEFT 进行推理。

PeftAdapterMixin

class diffusers.loaders.PeftAdapterMixin

< >

( )

一个类,包含用于加载和使用 PEFT 库中支持的 adapters 权重的所有功能。有关 adapters 以及如何将它们注入基础模型的更多详细信息,请查看 PEFT 文档

安装最新版本的 PEFT,并使用此 mixin 来

  • 在模型中附加新的 adapters。
  • 附加多个 adapters 并迭代地激活/停用它们。
  • 激活/停用模型中的所有 adapters。
  • 获取活动 adapters 的列表。

active_adapters

< >

( )

获取模型的当前活动 adapters 列表。

如果您不熟悉 adapters 和 PEFT 方法,我们邀请您在 PEFT 文档中阅读更多相关信息。

add_adapter

< >

( adapter_config adapter_name: str = 'default' )

参数

  • adapter_config ([~peft.PeftConfig]) — 要添加的 adapter 的配置;支持的 adapters 是非前缀调整和自适应 prompt 方法。
  • adapter_name (str, 可选,默认为 "default") — 要添加的 adapter 的名称。如果未传递名称,则为 adapter 分配默认名称。

向当前模型添加新的 adapter 以进行训练。如果未传递 adapter 名称,则会为 adapter 分配一个默认名称,以遵循 PEFT 库的约定。

如果您不熟悉 adapters 和 PEFT 方法,我们邀请您在 PEFT 文档中阅读更多相关信息。

delete_adapters

< >

( 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")

disable_adapters

< >

( )

禁用附加到模型的所有适配器,并回退到仅使用基础模型进行推理。

如果您不熟悉 adapters 和 PEFT 方法,我们邀请您在 PEFT 文档中阅读更多相关信息。

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.disable_lora()

enable_adapters

< >

( )

启用附加到模型的适配器。模型使用 self.active_adapters() 来检索要启用的适配器列表。

如果您不熟悉 adapters 和 PEFT 方法,我们邀请您在 PEFT 文档中阅读更多相关信息。

enable_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()

load_lora_adapter

< >

( pretrained_model_name_or_path_or_dict prefix = 'transformer' **kwargs )

参数

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

    • 一个字符串,Hub 上托管的预训练模型的模型 ID(例如 google/ddpm-celebahq-256)。
    • 一个目录的路径(例如 ./my_model_directory),其中包含使用 ModelMixin.save_pretrained() 保存的模型权重。
    • 一个 torch 状态字典
  • prefix (str, 可选) — 用于过滤状态字典的前缀。
  • 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 或本地更大的模型仓库中模型文件的子文件夹位置。
  • network_alphas (Dict[str, float]) — 用于稳定学习和防止下溢的网络 alpha 值。此值的含义与 kohya-ss 训练器脚本中的 --network_alpha 选项相同。请参阅此链接
  • low_cpu_mem_usage (bool, 可选) — 通过仅加载预训练的 LoRA 权重而不初始化随机权重来加速模型加载。

将 LoRA 适配器加载到底层模型中。

save_lora_adapter

< >

( save_directory adapter_name: str = 'default' upcast_before_saving: bool = False safe_serialization: bool = True weight_name: typing.Optional[str] = None )

参数

  • save_directory (stros.PathLike) — 用于保存 LoRA 参数的目录。如果不存在,将创建该目录。
  • adapter_name — (str, 默认为 “default”): 要序列化的适配器的名称。当底层模型加载了多个适配器时很有用。
  • upcast_before_saving (bool, 默认为 False) — 是否在序列化之前将底层模型转换为 torch.float32
  • save_function (Callable) — 用于保存状态字典的函数。在分布式训练中,当您需要将 torch.save 替换为其他方法时很有用。可以使用环境变量 DIFFUSERS_SAVE_MODE 进行配置。
  • safe_serialization (bool, 可选, 默认为 True) — 是否使用 safetensors 或传统的 PyTorch 方式 pickle 保存模型。
  • weight_name — (str, 可选, 默认为 None): 用于序列化状态字典的文件名。

保存与底层模型对应的 LoRA 参数。

set_adapter

< >

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

参数

  • adapter_name (Union[str, List[str]])) — 要设置的适配器列表,或者在单个适配器的情况下为适配器名称。

通过强制模型仅使用特定适配器并禁用其他适配器来设置特定适配器。

如果您不熟悉 adapters 和 PEFT 方法,我们邀请您在 PEFT 文档中阅读更多相关信息。

set_adapters

< >

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

参数

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

设置当前活动的适配器以在 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])
< > 在 GitHub 上更新