PEFT 文档

LyCORIS

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

LyCORIS

LyCORIS(Lora beYond Conventional methods, Other Rank adaptation Implementations for Stable diffusion)是类似 LoRA 的矩阵分解适配器,它修改 UNet 的交叉注意力层。LoHaLoKr 方法继承自此处的 `Lycoris` 类。

LycorisConfig

class peft.tuners.lycoris_utils.LycorisConfig

< >

( task_type: typing.Union[str, peft.utils.peft_types.TaskType, NoneType] = None peft_type: typing.Union[str, peft.utils.peft_types.PeftType, NoneType] = None auto_mapping: typing.Optional[dict] = None base_model_name_or_path: typing.Optional[str] = None revision: typing.Optional[str] = None inference_mode: bool = False rank_pattern: Optional[dict] = <factory> alpha_pattern: Optional[dict] = <factory> )

LyCORIS 类适配器的基础配置

LycorisLayer

class peft.tuners.lycoris_utils.LycorisLayer

< >

( base_layer: nn.Module )

LyCORIS 类适配器的基础层

merge

< >

( safe_merge: bool = False adapter_names: Optional[list[str]] = None )

参数

  • safe_merge (bool, 可选) — 如果为 True,合并操作将在原始权重的副本中执行,并在合并权重之前检查是否存在 NaN。如果你想检查合并操作是否会产生 NaN,这会很有用。默认为 False
  • adapter_names (List[str], 可选) — 应合并的适配器名称列表。如果为 None,则所有活动的适配器都将被合并。默认为 None

将活动的适配器权重合并到基础权重中

unmerge

< >

( )

此方法将所有已合并的适配器层从基础权重中分离出来。

LycorisTuner

class peft.tuners.lycoris_utils.LycorisTuner

< >

( model peft_config: Union[PeftConfig, dict[str, PeftConfig]] adapter_name: str low_cpu_mem_usage: bool = False state_dict: Optional[dict[str, torch.Tensor]] = None )

参数

  • model (torch.nn.Module) — 要适配的模型。
  • config (LoraConfig) — Lora 模型的配置。
  • adapter_name (str) — 适配器的名称,默认为 "default"
  • low_cpu_mem_usage (bool, 可选, 默认为 False) — 在元设备上创建空的适配器权重。有助于加快加载过程。

LyCORIS 类适配器的基础调谐器

delete_adapter

< >

( adapter_name: str )

参数

  • adapter_name (str) — 要删除的适配器的名称。

删除一个现有的适配器。

disable_adapter_layers

< >

( )

禁用所有适配器。

禁用所有适配器后,模型输出对应于基础模型的输出。

enable_adapter_layers

< >

( )

启用所有适配器。

如果您之前禁用了所有适配器并希望重新启用它们,请调用此函数。

merge_and_unload

< >

( progressbar: bool = False safe_merge: bool = False adapter_names: Optional[list[str]] = None )

参数

  • progressbar (bool) — 是否显示指示卸载和合并过程的进度条
  • safe_merge (bool) — 是否激活安全合并检查,以检查适配器权重中是否存在潜在的 NaN
  • adapter_names (List[str], 可选) — 应合并的适配器名称列表。如果为 None,所有活动的适配器都将被合并。默认为 None

此方法将适配器层合并到基础模型中。如果有人想将基础模型用作独立模型,则需要此操作。

set_adapter

< >

( adapter_name: str | list[str] )

参数

  • adapter_name (strlist[str]) — 要激活的适配器名称。

设置活动的适配器。

此外,此函数将把指定的适配器设置为可训练的(即 requires_grad=True)。如果不希望如此,请使用以下代码。

>>> for name, param in model_peft.named_parameters():
...     if ...:  # some check on name (ex. if 'lora' in name)
...         param.requires_grad = False

unload

< >

( )

通过移除所有 lora 模块而不进行合并,来恢复基础模型。这将返回原始的基础模型。

< > 在 GitHub 上更新