Transformers 文档

PEFT

Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

开始使用

PEFT

PeftAdapterMixin 提供来自 PEFT 库的函数,用于管理 Transformers 的适配器。此 mixin 目前支持 LoRA、IA3 和 AdaLora。前缀调优方法(提示调优、提示学习)不受支持,因为它们无法注入到 torch 模块中。

class transformers.integrations.PeftAdapterMixin

< >

( )

一个类,包含所有用于加载和使用 PEFT 库中支持的适配器权重的函数。有关适配器以及在基于 Transformer 的模型上注入适配器的更多详细信息,请查看 PEFT 库的文档: https://huggingface.co/docs/peft/index

目前支持的 PEFT 方法均为非前缀调优方法。以下是任何人都可以使用此 mixin 类加载、训练和运行的支持的 PEFT 方法列表

其他 PEFT 模型,例如提示调优、提示学习不在本范围之内,因为这些适配器不可“注入”到 torch 模块中。要使用这些方法,请参阅 PEFT 库的使用指南。

使用此 mixin,如果安装了正确的 PEFT 版本,则可以

  • 加载存储在本地路径或远程 Hub 存储库中的适配器,并将其注入到模型中
  • 在模型中附加新适配器,并使用 Trainer 或您自己的方法训练它们。
  • 附加多个适配器并迭代激活/停用它们
  • 激活/停用模型中的所有适配器。
  • 获取活动适配器的 state_dict

load_adapter

< >

( peft_model_id: typing.Optional[str] = None adapter_name: typing.Optional[str] = None revision: typing.Optional[str] = None token: typing.Optional[str] = None device_map: typing.Optional[str] = 'auto' max_memory: typing.Optional[str] = None offload_folder: typing.Optional[str] = None offload_index: typing.Optional[int] = None peft_config: typing.Dict[str, typing.Any] = None adapter_state_dict: typing.Optional[typing.Dict[str, ForwardRef('torch.Tensor')]] = None low_cpu_mem_usage: bool = False is_trainable: bool = False adapter_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None )

参数

  • peft_model_id (str, 可选) — Hub 上的模型标识符,或指向已保存的适配器配置文件和适配器权重的本地路径。
  • adapter_name (str, 可选) — 要使用的适配器名称。如果未设置,将使用默认适配器。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们使用基于 git 的系统来存储 huggingface.co 上的模型和其他工件,因此 revision 可以是 git 允许的任何标识符。

    要测试您在 Hub 上创建的拉取请求,您可以传递 revision="refs/pr/<pr_number>"

  • token (str, 可选) — 是否使用身份验证令牌来加载远程文件夹。用于加载 HuggingFace Hub 上的私有仓库。您可能需要调用 huggingface-cli login 并粘贴您的令牌以进行缓存。
  • device_map (strDict[str, Union[int, str, torch.device]]inttorch.device, 可选) — 指定每个子模块应放置位置的映射。它不需要细化到每个参数/缓冲区名称,一旦给定的模块名称在其中,它的每个子模块都将被发送到同一设备。如果我们只传递模型将分配到的设备(例如, "cpu", "cuda:1", "mps", 或 GPU 序号 rank,如 1),设备映射会将整个模型映射到此设备。传递 device_map = 0 意味着将整个模型放在 GPU 0 上。

    要让 Accelerate 自动计算最佳 device_map,请设置 device_map="auto"。有关每个选项的更多信息,请参阅 设计设备映射

  • max_memory (Dict, 可选) — 设备标识符到最大内存的字典。如果未设置,则默认为每个 GPU 的最大可用内存和可用 CPU RAM。
  • offload_folder (stros.PathLike, 可选) — 如果 device_map 包含任何值 "disk",则为我们将卸载权重的文件夹。
  • offload_index (int, 可选) — 要传递给 accelerate.dispatch_model 方法的 offload_index 参数。
  • peft_config (Dict[str, Any], 可选) — 要添加的适配器的配置,支持的适配器是非前缀调优和自适应提示方法。此参数用于用户直接传递 PEFT 状态字典的情况
  • adapter_state_dict (Dict[str, torch.Tensor], 可选) — 要加载的适配器的状态字典。此参数用于用户直接传递 PEFT 状态字典的情况
  • low_cpu_mem_usage (bool, 可选, 默认为 False) — 降低加载 PEFT 适配器时的内存使用量。这也应该加快加载过程。需要 PEFT 版本 0.13.0 或更高版本。
  • is_trainable (bool, 可选, 默认为 False) — 适配器是否应该是可训练的。如果为 False,则适配器将被冻结,只能用于推理。
  • adapter_kwargs (Dict[str, Any], 可选) — 传递给适配器配置的 from_pretrained 方法和 find_adapter_config_file 方法的附加关键字参数。

从文件或远程 Hub 文件夹加载适配器权重。如果您不熟悉适配器和 PEFT 方法,我们邀请您在 PEFT 官方文档中阅读更多相关信息: https://huggingface.co/docs/peft

需要 peft 作为后端来加载适配器权重。

add_adapter

< >

( adapter_config adapter_name: typing.Optional[str] = None )

参数

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

如果您不熟悉适配器和 PEFT 方法,我们邀请您在 PEFT 官方文档中阅读更多相关信息: https://huggingface.co/docs/peft

为当前模型添加全新的适配器以进行训练。如果未传递适配器名称,则会为适配器分配默认名称,以遵循 PEFT 库的约定(在 PEFT 中,我们使用“default”作为默认适配器名称)。

set_adapter

< >

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

参数

  • adapter_name (Union[List[str], str]) — 要设置的适配器的名称。也可以是字符串列表,用于设置多个适配器。

如果您不熟悉适配器和 PEFT 方法,我们邀请您在 PEFT 官方文档中阅读更多相关信息: https://huggingface.co/docs/peft

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

disable_adapters

< >

( )

如果您不熟悉适配器和 PEFT 方法,我们邀请您在 PEFT 官方文档中阅读更多相关信息: https://huggingface.co/docs/peft

禁用所有连接到模型的适配器。这将导致仅使用基础模型进行推理。

enable_adapters

< >

( )

如果您不熟悉适配器和 PEFT 方法,我们邀请您在 PEFT 官方文档中阅读更多相关信息: https://huggingface.co/docs/peft

启用连接到模型的适配器。

active_adapters

< >

( )

如果您不熟悉适配器和 PEFT 方法,我们邀请您在 PEFT 官方文档中阅读更多相关信息: https://huggingface.co/docs/peft

获取模型当前活动的适配器。在多适配器推理(组合多个适配器进行推理)的情况下,返回所有活动适配器的列表,以便用户可以相应地处理它们。

对于以前的 PEFT 版本(不支持多适配器推理),module.active_adapter 将返回单个字符串。

get_adapter_state_dict

< >

( adapter_name: typing.Optional[str] = None state_dict: typing.Optional[dict] = None )

参数

  • adapter_name (str, 可选) — 要从中获取状态字典的适配器的名称。如果未传递名称,则使用活动的适配器。
  • state_dict (torch.Tensor 的嵌套字典, 可选) — 模型的状态字典。默认值为 self.state_dict(),但如果需要在恢复模型的状态字典时采取特殊的预防措施(例如使用模型并行时),则可以使用此参数。

如果您不熟悉适配器和 PEFT 方法,我们邀请您在 PEFT 官方文档中阅读更多相关信息: https://huggingface.co/docs/peft

获取适配器状态字典,该字典应仅包含指定 adapter_name 适配器的权重张量。如果未传递 adapter_name,则使用活动的适配器。

< > GitHub 上更新