模型混合器

这些类提供了将适配器模块集成到模型类中的基础功能,例如适配器的保存和加载。 根据模型的不同,每个支持适配器的模型类都应实现其中一个混入类。

InvertibleAdaptersMixin

class adapters.InvertibleAdaptersMixin

为Transformer模型添加可逆适配器的Mixin。

add_invertible_adapter(adapter_name: str) bool

为指定名称的适配器添加一个可逆适配器模块。如果给定的适配器未配置可逆适配器,则此方法不执行任何操作。

Parameters

adapter_name (str) – 要为其添加可逆适配器模块的适配器名称。

EmbeddingAdaptersMixin

class adapters.EmbeddingAdaptersMixin

为Transformer模型添加动态切换嵌入支持的Mixin。

add_embeddings(name, tokenizer, reference_embedding=None, reference_tokenizer=None, embedding_dim=None)

向模型添加新的嵌入。如果提供了参考嵌入和参考分词器,两个分词器中都存在的标记将被初始化为参考嵌入中的嵌入值。

Parameters
  • name – 嵌入的名称

  • tokenizer – 决定嵌入词汇的分词器

  • reference_embedding – 用于初始化新创建嵌入中存在的标记嵌入的参考嵌入

  • reference_tokenizer – 提供参考嵌入词汇的分词器

  • embedding_dim – 嵌入向量的维度(如果为None则使用config中的embedding_size,如果不存在则使用hidden_size)

delete_embeddings(name)

删除具有给定名称的嵌入

Parameters

name – 需要删除的嵌入名称

load_embeddings(path: str, name: str)

从给定路径加载已保存的嵌入。如果该嵌入是与分词器一起保存的,则会一并返回

Parameters
  • path – 保存嵌入向量的路径

  • name – 嵌入模型加载时的名称

返回:如果分词器与嵌入一起保存则返回该分词器,否则返回None

save_embeddings(path, name, tokenizer=None)

保存具有给定名称的嵌入。如果同时传递了分词器,则分词器将与嵌入一起保存。

Parameters
  • path – 嵌入向量应保存的路径

  • name – 需要保存的嵌入向量的名称

  • tokenizer – 可选,用于保存嵌入的tokenizer(默认为None)

set_active_embeddings(name)

为模型的前向传递设置活动嵌入

Parameters

name – 应使用的嵌入名称

ModelAdaptersMixin

class adapters.ModelAdaptersMixin(config, *args, **kwargs)

为Transformer模型添加加载/保存适配器支持的Mixin。

adapter_fusion_to(adapter_names: Union[Fuse, list, str], device: Optional[Union[device, str]] = None, dtype: Optional[dtype] = None)

将指定名称的适配器融合层移动到指定的设备和数据类型。

Parameters
  • adapter_names (Union[Fuse, list, str]) – 需要移动的适配器融合层名称。

  • device (torch.device or str, optional) – 适配器融合层应移动到的设备。

  • dtype (torch.dtype, optional) - 适配器融合层应转换到的数据类型。

adapter_summary(as_dict=False) Union[str, dict]

返回当前添加到模型中的所有适配器的字符串摘要。摘要表中的每个条目具有以下属性:

  • name: 适配器的名称

  • 架构:适配器的架构基础

  • #param: 适配器的参数数量

  • %param: 适配器参数数量相对于完整模型的比例

  • active: 适配器是否处于激活状态

  • train: 是否启用适配器权重进行训练

adapter_to(name: str, device: Optional[Union[device, str]] = None, dtype: Optional[dtype] = None)

将指定名称的适配器移动到指定的设备和数据类型。

Parameters
  • name (str) – 要移动的适配器名称。

  • device (torch.devicestr, 可选) – 适配器应移动到的设备。

  • dtype (torch.dtype, optional) – 适配器应转换的目标数据类型。

add_adapter(adapter_name: str, config=None, overwrite_ok: bool = False, set_active: bool = False)

向模型添加指定类型的新适配器模块。

Parameters
  • adapter_name (str) – 要添加的适配器模块名称。

  • config (strdictAdapterConfig, 可选) –

    适配器配置,可以是以下任意一种:

    • 预定义配置字典的字符串标识符

    • 指定完整配置的配置字典

    • 如果未提供,将使用此适配器类型的默认配置

  • overwrite_ok (bool, optional) – 如果存在同名适配器,是否覆盖。默认为False。

  • set_active (抛出异常。) – 将适配器设置为活动状态。默认情况下(False),

  • 已激活。 (适配器已添加但未) –

add_adapter_fusion(adapter_names: Union[Fuse, list, str], config=None, name: Optional[str] = None, overwrite_ok: bool = False, set_active: bool = False)

为模型添加AdapterFusion,包含所有必要的配置和权重初始化

Parameters
  • adapter_names (Fuseliststr) –

    要添加的AdapterFusion层。可以是以下任意一种:

    • 一个Fuse组合块

    • 要融合的适配器名称列表

    • 要融合的适配器名称的逗号分隔字符串

  • config (strdict) –

    adapter融合配置,可以是以下任意一种:

    • 标识预定义adapter融合配置的字符串

    • 表示adapter融合配置的字典

    • 包含adapter融合配置的文件路径

  • name (str, optional) – AdapterFusion层的名称。如果未指定,将根据融合的适配器名称自动生成。

  • overwrite_ok (bool, optional) – 如果存在同名的AdapterFusion层,是否覆盖。默认值(False)会抛出异常。

  • set_active (bool, optional) – 是否激活添加的AdapterFusion。默认情况下(False),AdapterFusion会被添加但不会激活。

apply_to_adapter_layers(fn)

对模型的所有适配器层应用一个函数。

apply_to_basemodel_childs(fn)

如果模型的直接子项是AdapterLayerBase的实例,则对其应用一个函数。

average_adapter(adapter_name: str, adapter_list: Union[List[str], Dict[str, float]], weights: Optional[List[float]] = None, combine_strategy: str = 'linear', normalize_weights: bool = True, overwrite_ok: bool = False, set_active: bool = False, svd_rank: Optional[int] = None)

添加一个新的适配器模块作为一组现有适配器模块的加权平均值。

Parameters
  • adapter_name (str) – 要添加的适配器模块名称。

  • adapter_list (List[str] or Dict[str, float]) - 指定应进行权重平均的现有适配器列表。可以是一个适配器名称列表,也可以是一个将适配器名称映射到权重的字典。

  • weights (Optional[List[float]], optional) – 列表中每个适配器模块对应的权重值。 如果未提供,将为每个适配器分配相等的权重。

  • combine_strategy (str, optional) – The strategy to combine the adapter modules. Available options are “linear”, “lora_linear_only_negate_b”, and “lora_delta_w_svd”. See https://docs.adapterhub.ml/adapter_composition.html#merging-adapters Defaults to “linear”.

  • normalize_weights (bool, optional) – 是否对权重进行归一化处理。 如果设为True,权重将被归一化为总和等于1。 默认为True。

  • overwrite_ok (bool, optional) – 如果存在同名适配器,是否覆盖。默认值(False)会抛出异常。

  • set_active (bool, optional) – 设置该适配器为活动状态。默认情况下(False),适配器会被添加但不会激活。

  • svd_rank (int, optional) – 在平均LoRA适配器时用于奇异值分解(SVD)的秩。 此参数仅在combine_strategy设置为"lora_delta_w_svd"时适用。 默认为None。

delete_adapter(adapter_name: str)

从模型中删除指定名称的适配器。

Parameters

adapter_name (str) – 适配器的名称。

delete_adapter_fusion(adapter_names: Union[Fuse, list, str])

删除指定适配器的AdapterFusion层。

Parameters

adapter_names (Union[Fuse, list, str]) - 要删除的AdapterFusion层。

eject_prefix_tuning(name: str)

将具有给定名称的前缀调优从参数化形式转换为扁平形式。

Parameters

name (str) – 前缀调优的名称。

forward_context(context: ForwardContext, *args, **kwargs)

该方法由ForwardContext在前向传播开始时调用。

freeze_model(freeze=True)

冻结模型的所有权重。

get_adapter(name) dict

返回一个字典,包含指定名称适配器的所有权重。

Parameters

name (str) – 适配器名称。

Returns

一个包含适配器权重的嵌套字典。该字典结构如下: {: {: }}。其中 = -1 表示全局/共享权重。

Return type

字典

gradient_checkpointing_enable(gradient_checkpointing_kwargs=None)

为当前模型激活梯度检查点。

请注意,在其他框架中,此功能可能被称为“激活检查点”或“检查点激活”。

我们传递模块的__call__方法而非forward,因为__call__会附加模块的所有钩子。https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2

Parameters

gradient_checkpointing_kwargs (dict, 可选) – 传递给torch.utils.checkpoint.checkpoint函数的额外关键字参数。

init_adapters(model_config, adapters_config)

该方法从模型配置中初始化适配器模块和融合模块。

abstract iter_layers() Iterable[Tuple[int, Module]]

遍历模型的所有层。

这个抽象方法必须由每个实现模型来实现。

load_adapter(adapter_name_or_path: str, config: Optional[Union[dict, str]] = None, version: Optional[str] = None, model_name: Optional[str] = None, load_as: Optional[str] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, leave_out: Optional[List[int]] = None, id2label=None, set_active: bool = False, use_safetensors: bool = False, **kwargs) str

从本地文件系统或远程位置加载预训练的PyTorch适配器模块。

Parameters
  • adapter_name_or_path (str) –

    可以是以下任意一种:

    • 从Adapter Hub加载的预训练任务适配器的标识符

    • 包含使用model.save_adapter()保存的适配器权重的目录路径

    • 指向包含已保存适配器模块的zip文件夹的URL

  • config (dictstr, 可选) – 已弃用。

  • version (str, optional) – 要加载的适配器版本。

  • model_name (str, optional) – 已弃用。

  • load_as (str, optional) – 使用此名称加载适配器。默认情况下,将使用保存适配器时使用的名称。

  • leave_out – 在加载适配器时动态丢弃指定Transformer层中的适配器模块。

  • set_active (bool, optional) – 设置加载的适配器为活动状态。默认情况下(False),适配器会被加载但不会激活。

  • use_safetensors (bool, optional) - 如果为True,当存在safetensors检查点时将通过safetensors加载权重。否则将使用常规的torch保存方法。

Returns

适配器添加到模型时所使用的名称。

Return type

字符串

load_adapter_fusion(adapter_fusion_name_or_path: str, load_as: Optional[str] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, set_active: bool = False, use_safetensors: bool = False, **kwargs) str

从本地文件系统加载预训练的AdapterFusion层。

Parameters
  • adapter_fusion_name_or_path (str) – 指向包含使用model.save_adapter_fusion()保存的AdapterFusion权重的目录路径。

  • load_as (str, optional) – 使用此名称加载AdapterFusion。 默认情况下,将使用保存AdapterFusion层时使用的名称。

  • set_active (bool, optional) – 是否激活已加载的AdapterFusion。默认情况下(False),AdapterFusion会被加载但不会激活。

  • use_safetensors (bool, optional) - 如果为True,当存在safetensors检查点时,权重将通过safetensors加载。否则将使用常规的torch保存方法。

Returns

将AdapterFusion添加到模型时使用的名称。

Return type

字符串

load_adapter_setup(adapter_setup_name_or_path: str, version: Optional[str] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, set_active: bool = False, use_safetensors: bool = False, **kwargs) Tuple[AdapterCompositionBlock, Any]

从本地文件系统或远程位置加载适配器设置。

Parameters
  • adapter_setup_name_or_path (str) –

    可以是以下任意一种:

    • HuggingFace模型中心上某个仓库的标识符

    • 包含使用model.save_adapter_setup()保存的适配器权重的目录路径

    • 指向包含已保存适配器模块的zip文件夹的URL

  • version (str, optional) – 要加载的适配器版本。

  • set_active (bool, optional) - 设置加载的适配器配置为活动状态。默认情况下(False),适配器配置会被加载但不会激活。

  • use_safetensors (bool, optional) - 如果为True,当存在safetensors检查点时,将通过safetensors加载权重。否则将使用常规的torch保存方法。

Returns

已加载的适配器设置及可用的头部设置(如有)。

Return type

元组[AdapterCompositionBlock, 任意类型]

merge_adapter(name: str)

根据论文描述,将给定LoRA模块的权重与Transformer权重合并。

Parameters

name (str) – 要合并的LoRA模块。

reset_adapter()

重置使用model.merge_adapter(name)合并的LoRA模块的权重。

save_adapter(save_directory: str, adapter_name: str, meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, use_safetensors: bool = False, **kwargs)

将适配器及其配置文件保存到目录中,以便可以使用load_adapter()进行共享或重新加载。

Parameters
  • save_directory (str) - 适配器应保存到的目录路径。

  • adapter_name (str) – 要保存的适配器名称。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

Raises

ValueError – 如果给定的适配器名称无效。

save_adapter_fusion(save_directory: str, adapter_names: Union[Fuse, list, str], meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, use_safetensors: bool = False)

将AdapterFusion层及其配置文件保存到目录中,以便可以通过load_adapter_fusion()进行共享或重新加载。

Parameters
  • save_directory (str) - 用于保存AdapterFusion的目录路径。

  • adapter_names (Union[Fuse, list, str]) – 要保存的AdapterFusion。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

Raises

ValueError – 如果给定的AdapterFusion名称无效。

save_adapter_setup(save_directory: str, adapter_setup: Union[str, list, AdapterCompositionBlock], meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, use_safetensors: bool = False)

将适配器设置保存到目录中,以便可以使用load_adapter_setup()进行共享或重新加载。

Parameters
  • save_directory (str) - 适配器设置应保存到的目录路径。

  • adapter_setup (Union[str, list, AdapterCompositionBlock]) – 要保存的适配器设置。通常是一个适配器组合块。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

save_all_adapter_fusions(save_directory: str, meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, use_safetensors: bool = False)

将此模型的所有AdapterFusion层及其配置保存到指定位置的子文件夹中。

Parameters
  • save_directory (str) - 用于保存AdapterFusion层的目录路径。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

save_all_adapters(save_directory: str, meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, use_safetensors: bool = False)

将此模型的所有适配器及其配置保存到指定位置的子文件夹中。

Parameters
  • save_directory (str) - 适配器应保存到的目录路径。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

set_active_adapters(adapter_setup: Union[list, AdapterCompositionBlock], skip_layers: Optional[List[int]] = None)

设置默认在每个前向传播中使用的适配器模块。如果未找到具有给定名称的适配器,则不会激活相应类型的模块。

Parameters

adapter_setup (list) – 默认激活的适配器列表。可以是融合(fusion)或堆叠(stacking)配置。

share_parameters(adapter_names: Union[MultiTask, list, str], name: Optional[str] = None, reference_adapter_name: Optional[str] = None)

在指定的适配器层和基础模型子模块之间共享参数。

该方法通过将多个适配器的参数链接到一个公共参考,实现了参数共享。它将共享操作应用于适配器层和基础模型子模块。

Parameters
  • adapter_names (Union[MultiTask, list, str]) - 指定需要共享参数的适配器名称。如果提供的是MultiTask对象,则会使用其子适配器名称。

  • name (Optional[str], default=None) – 共享参数的自定义名称。 如果未提供,名称将通过连接adapter_names派生。

  • reference_adapter_name (Optional[str], default=None) – 用作参数共享参考的现有适配器名称。

Raises
  • TypeError - 如果任何适配器配置不是MultiTaskConfig类型。

  • ValueError - 如果参考适配器不在提供的适配器名称中。

  • AssertionError - 如果适配器列表为空。

supports_adapter(type_or_config: Union[str, AdapterConfig]) bool

检查模型是否支持给定的适配器类型。

Parameters

adapter_type (str) – 要检查的适配器类型。

Returns

如果适配器类型受支持则为True,否则为False。

Return type

布尔值

train_adapter(adapter_setup: Union[list, AdapterCompositionBlock], train_embeddings=False)

将模型设置为训练给定适配器的模式。

train_adapter_fusion(adapter_setup: Union[list, AdapterCompositionBlock], unfreeze_adapters=False)

将模型设置为由适配器名称列表确定的适配器融合训练模式。

unshare_parameters(adapter_names: Union[MultiTask, list, str], name: Optional[str] = None)

移除指定适配器层和基础模型子模块之间的参数共享。

此方法将分离给定适配器之间的共享参数,将其恢复为独立的参数集。该操作会同时应用于适配器层和基础模型的子模块。

Parameters
  • adapter_names (Union[MultiTask, list, str]) – 需要解除共享参数的适配器名称。如果提供的是MultiTask对象,将使用其子适配器名称。

  • name (Optional[str], default=None) – 非共享参数的自定义名称。 如果未提供,名称将通过连接adapter_names派生而来。

ModelWithHeadsAdaptersMixin

class adapters.ModelWithHeadsAdaptersMixin(config, *args, **kwargs)

为支持加载/保存适配器到带有头部(head)的Transformer模型的Mixin扩展。

add_adapter(adapter_name: str, config=None, overwrite_ok: bool = False, set_active: bool = False)

向模型添加指定类型的新适配器模块。

Parameters
  • adapter_name (str) – 要添加的适配器模块名称。

  • config (strdict, 可选) –

    适配器配置,可以是以下任意一种:

    • 预定义配置字典的字符串标识符

    • 指定完整配置的配置字典

    • 如果未提供,将使用此适配器类型的默认配置

  • overwrite_ok (bool, optional) – 如果存在同名适配器,是否覆盖。默认值(False)会抛出异常。

  • set_active (bool, optional) – 设置该适配器为活动状态。默认情况下(False),适配器会被添加但不会激活。

如果 self.base_model 是 self,必须继承自实现了此方法的类,以防止无限递归

average_head(head_name: str, head_list: Union[List[str], Dict[str, float]], weights: Optional[List[float]] = None, normalize_weights: bool = True, overwrite_ok: bool = False, set_active: bool = False)

添加一个新的预测头作为一组现有预测头的加权平均值。

Parameters
  • head_name (str) – 要添加的新预测头的名称。

  • head_list (List[str] or Dict[str, float]) - 指定需要计算权重平均值的现有头部。可以是一个头部名称列表,也可以是一个将头部名称映射到权重的字典。

  • weights (Optional[List[float]], optional) – 列表中每个头对应的权重。 如果未提供,将为每个头分配相等的权重。

  • normalize_weights (bool, optional) – 是否对权重进行归一化处理。 如果设为True,权重将被归一化为总和等于1。 默认为True。

  • overwrite_ok (bool, optional) – 如果存在同名头部,是否覆盖。默认值(False)会抛出异常。

  • set_active (bool, optional) – 设置该头部为活动状态。默认情况下(False),头部会被添加但不会激活。

delete_adapter(adapter_name: str)

从模型中删除指定名称的适配器。

Parameters

adapter_name (str) – 适配器的名称。

get_adapter(name)

如果 self.base_model 是 self,必须继承自实现了此方法的类,以防止无限递归

init_adapters(model_config, adapters_config)

该方法从模型配置中初始化适配器模块和融合模块。

iter_layers() Iterable[Tuple[int, Module]]

遍历模型的所有层。

load_adapter(adapter_name_or_path: str, config: Optional[Union[dict, str]] = None, version: Optional[str] = None, model_name: Optional[str] = None, load_as: Optional[str] = None, with_head: bool = True, custom_weights_loaders: Optional[List[WeightsLoader]] = None, leave_out: Optional[List[int]] = None, id2label=None, set_active: bool = False, use_safetensors: bool = False, **kwargs) str

从本地文件系统或远程位置加载预训练的PyTorch适配器模块。

Parameters
  • adapter_name_or_path (str) –

    可以是以下任意一种:

    • 从Adapter Hub加载的预训练任务适配器的标识符

    • 包含使用model.save_adapter()保存的适配器权重的目录路径

    • 指向包含已保存适配器模块的zip文件夹的URL

  • config (dictstr, 可选) – 已弃用。

  • version (str, optional) – 要加载的适配器版本。

  • model_name (str, optional) – 已弃用。

  • load_as (str, optional) – 使用此名称加载适配器。默认情况下,将使用保存适配器时使用的名称。

  • leave_out – 在加载适配器时动态丢弃指定Transformer层中的适配器模块。

  • set_active (bool, optional) – 设置加载的适配器为活动状态。默认情况下(False),适配器会被加载但不会激活。

  • use_safetensors (bool, optional) - 如果为True,当存在safetensors检查点时,权重将通过safetensors加载。否则将使用常规的torch保存方法。

Returns

适配器添加到模型时所使用的名称。

Return type

字符串

load_adapter_fusion(adapter_fusion_name_or_path: str, load_as: Optional[str] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, set_active: bool = False, with_head: bool = True, use_safetensors: bool = False, **kwargs) str

从本地文件系统加载预训练的AdapterFusion层。

Parameters
  • adapter_fusion_name_or_path (str) – 指向包含使用model.save_adapter_fusion()保存的AdapterFusion权重的目录路径。

  • load_as (str, optional) – 使用此名称加载AdapterFusion。 默认情况下,将使用保存AdapterFusion层时使用的名称。

  • set_active (bool, optional) – 是否激活已加载的AdapterFusion。默认情况下(False),AdapterFusion会被加载但不会激活。

  • use_safetensors (bool, optional) - 如果为True,当存在safetensors检查点时,权重将通过safetensors加载。否则将使用常规的torch保存方法。

Returns

将AdapterFusion添加到模型时使用的名称。

Return type

字符串

load_adapter_setup(adapter_setup_name_or_path: str, version: Optional[str] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, set_active: bool = False, use_safetensors: bool = False, **kwargs) str

从本地文件系统或远程位置加载适配器设置。

Parameters
  • adapter_setup_name_or_path (str) –

    可以是以下任意一种:

    • HuggingFace模型中心上某个仓库的标识符

    • 包含使用model.save_adapter_setup()保存的适配器权重的目录路径

    • 指向包含已保存适配器模块的zip文件夹的URL

  • version (str, optional) – 要加载的适配器版本。

  • set_active (bool, optional) - 设置加载的适配器配置为活动状态。默认情况下(False),适配器配置会被加载但不会激活。

  • use_safetensors (bool, optional) - 如果为True,当存在safetensors检查点时,权重将通过safetensors加载。否则将使用常规的torch保存方法。

Returns

已加载的适配器设置及可用的头部设置(如有)。

Return type

元组[AdapterCompositionBlock, 任意类型]

load_head(save_directory: str, load_as: Optional[str] = None, id2label: Optional[Dict[int, str]] = None, use_safetensors: bool = False, **kwargs) str

从使用save_head()保存的目录中加载模型预测头。

Parameters
  • save_directory (str) - 预测头保存目录的路径。

  • load_as (str, optional) – 使用此名称加载AdapterFusion。 默认情况下,将使用保存AdapterFusion层时使用的名称。

  • id2label (Dict[int, str], optional) - 提供从类别ID到类别标签的自定义映射。默认为None。

  • use_safetensors (bool, optional) - 如果为True,当存在safetensors检查点时,权重将通过safetensors加载。否则将使用常规的torch保存方法。

Returns

预测头添加到模型时使用的名称。

Return type

字符串

save_adapter(save_directory: str, adapter_name: str, with_head: bool = True, meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, use_safetensors: bool = False)

将适配器及其配置文件保存到目录中,以便可以使用load_adapter()进行共享或重新加载。

Parameters
  • save_directory (str) - 适配器应保存到的目录路径。

  • adapter_name (str) – 要保存的适配器名称。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

Raises

ValueError – 如果给定的适配器名称无效。

save_adapter_fusion(save_directory: str, adapter_names: Union[Fuse, list, str], meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, with_head: Union[bool, str] = False, use_safetensors: bool = False)

将AdapterFusion层及其配置文件保存到目录中,以便可以通过load_adapter_fusion()进行共享或重新加载。

Parameters
  • save_directory (str) - 用于保存AdapterFusion的目录路径。

  • adapter_names (Union[Fuse, list, str]) – 要保存的AdapterFusion。

  • with_head (Union[bool, str]) - 如果为True,将保存一个与AdapterFusionLayer同名的头部。如果是字符串,则将使用该字符串作为要保存的头部的名称。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

Raises

ValueError – 如果给定的AdapterFusion名称无效。

save_adapter_setup(save_directory: str, adapter_setup: Union[str, list, AdapterCompositionBlock], head_setup: Optional[Union[bool, str, list, AdapterCompositionBlock]] = None, meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, use_safetensors: bool = False)

将适配器设置保存到目录中,以便可以使用load_adapter_setup()进行共享或重新加载。

Parameters
  • save_directory (str) - 适配器设置应保存到的目录路径。

  • adapter_setup (Union[str, list, AdapterCompositionBlock]) – 要保存的适配器设置。通常是一个适配器组合块。

  • head_setup (可选[Union[bool, str, list, AdapterCompositionBlock]], 可选) –

    要保存的头部设置。可以是以下任意一种:

    • True:保存没有灵活头部的模型的默认头部。

    • str:保存具有给定名称的单个头部。

    • list:保存一个头部列表。

    • AdapterCompositionBlock:保存自定义头部设置。

    • None(默认):不保存任何头部。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

save_all_adapters(save_directory: str, with_head: bool = True, meta_dict: Optional[dict] = None, custom_weights_loaders: Optional[List[WeightsLoader]] = None, use_safetensors: bool = False)

将此模型的所有适配器及其配置保存到指定位置的子文件夹中。

Parameters
  • save_directory (str) - 适配器应保存到的目录路径。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

save_all_heads(save_directory: str, use_safetensors: bool = False)

将此模型的所有预测头保存到指定位置的子文件夹中。

Parameters
  • save_directory (str) - 预测头文件应保存的基础目录路径。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

save_head(save_directory: str, head_name: Optional[str] = None, use_safetensors: bool = False) None

将模型预测头保存到目录中,以便可以使用load_head()重新加载。

Parameters
  • save_directory (str) - 预测头应保存到的目录路径。

  • head_name (str, optional) – 要保存的头部名称。如果模型只有一个头部,则设置为None。默认为None。

  • use_safetensors (bool, optional) - 如果为True,权重将通过safetensors保存。否则将使用常规的torch保存方法。

train_adapter(adapter_setup: Union[list, AdapterCompositionBlock], train_embeddings=False)

将模型设置为训练给定适配器的模式。如果self.base_model等于self,则必须继承自实现此方法的类,以避免无限递归。

train_adapter_fusion(adapter_setup: Union[list, AdapterCompositionBlock], unfreeze_adapters=False)

将模型设置为由适配器名称列表确定的适配器融合训练模式。如果self.base_model是self,则必须继承自实现此方法的类,以防止无限递归。

ModelWithFlexibleHeadsAdaptersMixin

class adapters.ModelWithFlexibleHeadsAdaptersMixin(*args, **kwargs)

为模型类添加灵活的预测头。由XModelWithHeads类实现。

property active_head: Union[str, List[str]]

该模型的当前预测头配置。可以是单个可用头的名称(字符串)或包含多个可用头的列表。当配置为头列表时,同一个基础模型会通过所有指定的头进行前向传播。

Returns

描述活动头部配置的字符串或字符串列表。

Return type

Union[str, List[str]]

adapter_to(name: str, device: Optional[Union[device, str]] = None, dtype: Optional[dtype] = None)

将指定名称的适配器移动到指定的设备和数据类型。

Parameters
  • name (str) – 要移动的适配器名称。

  • device (torch.devicestr, 可选) – 适配器应移动到的设备。

  • dtype (torch.dtype, optional) – 适配器应转换的目标数据类型。

add_causal_lm_head(head_name, activation_function='gelu', layers=2, overwrite_ok=False)

在模型顶部添加一个因果语言建模头。

Parameters
  • head_name (str) – 头部的名称。

  • activation_function (str, optional) – 激活函数。默认为'gelu'。

  • layers (int, optional) – 层数。默认为2。

  • overwrite_ok (bool, optional) – 如果存在同名头部则强制覆盖。默认为False。

add_classification_head(head_name, num_labels=2, layers=2, activation_function='tanh', overwrite_ok=False, multilabel=False, id2label=None, use_pooler=False)

在模型顶部添加一个序列分类头。

Parameters
  • head_name (str) – 头部的名称。

  • num_labels (int, optional) – 分类标签的数量。默认为2。

  • layers (int, optional) – 层数。默认为2。

  • activation_function (str, optional) – 激活函数。默认为'tanh'。

  • overwrite_ok (bool, optional) – 如果存在同名头部则强制覆盖。默认为 False。

  • multilabel (bool, optional) – 启用多标签分类设置。默认为 False。

add_dependency_parsing_head(head_name, num_labels=2, overwrite_ok=False, id2label=None)

在模型顶部添加一个双仿射依赖解析头。该解析头采用了“监督句法解析对语言理解有益吗?一项实证研究”(Glavaš & Vulić, 2021)中描述的架构(https://arxiv.org/pdf/2008.06788.pdf)。

Parameters
  • head_name (str) – 头部的名称。

  • num_labels (int, optional) – 标签数量。默认为2。

  • overwrite_ok (bool, optional) – 如果存在同名头部则强制覆盖。默认为False。

  • id2label (dict, optional) – 从标签ID到标签的映射。默认为None。

add_image_classification_head(head_name, num_labels=2, layers=1, activation_function='tanh', overwrite_ok=False, multilabel=False, id2label=None, use_pooler=False)

在模型顶部添加一个图像分类头。

Parameters
  • head_name (str) – 头部的名称。

  • num_labels (int, optional) – 分类标签的数量。默认为2。

  • layers (int, optional) – 层数。默认为1。

  • activation_function (str, optional) – 激活函数。默认为'tanh'。

  • overwrite_ok (bool, optional) – 如果已存在同名头部,强制覆盖。默认为 False。

  • multilabel (bool, optional) – 启用多标签分类设置。默认为 False。

add_masked_lm_head(head_name, activation_function='gelu', layers=2, overwrite_ok=False)

在模型顶部添加一个掩码语言建模头。

Parameters
  • head_name (str) – 头部的名称。

  • activation_function (str, optional) – 激活函数。默认为'gelu'。

  • layers (int, optional) – 层数。默认为2。

  • overwrite_ok (bool, optional) – 如果存在同名头部则强制覆盖。默认为False。

add_multiple_choice_head(head_name, num_choices=2, layers=2, activation_function='tanh', overwrite_ok=False, id2label=None, use_pooler=False)

在模型顶部添加一个多项选择头部。

Parameters
  • head_name (str) – 头部的名称。

  • num_choices (int, optional) – 选项数量。默认为2。

  • layers (int, optional) – 层数。默认为2。

  • activation_function (str, optional) – 激活函数。默认为'tanh'。

  • overwrite_ok (bool, optional) – 如果已存在同名头部则强制覆盖。默认为False。

add_qa_head(head_name, num_labels=2, layers=1, activation_function='tanh', overwrite_ok=False, id2label=None)

在模型顶部添加一个问答头。

Parameters
  • head_name (str) – 头部的名称。

  • num_labels (int, optional) – 分类标签的数量。默认为2。

  • layers (int, optional) – 层数。默认为1。

  • activation_function (str, optional) – 激活函数。默认为'tanh'。

  • overwrite_ok (bool, optional) – 如果存在同名头部则强制覆盖。默认为 False。

add_seq2seq_lm_head(head_name, layers=1, overwrite_ok=False)

在模型顶部添加一个序列到序列的语言建模头。

Parameters
  • head_name (str) – 头部的名称。

  • layers (int, optional) – 层数。默认为1。

  • overwrite_ok (bool, optional) – 如果存在同名头部则强制覆盖。默认为False。

add_tagging_head(head_name, num_labels=2, layers=1, activation_function='tanh', overwrite_ok=False, id2label=None)

在模型顶部添加一个标记分类头。

Parameters
  • head_name (str) – 头部的名称。

  • num_labels (int, optional) – 分类标签的数量。默认为2。

  • layers (int, optional) – 层数。默认为1。

  • activation_function (str, optional) – 激活函数。默认为'tanh'。

  • overwrite_ok (bool, optional) – 如果存在同名头部则强制覆盖。默认为False。

delete_head(head_name: str)

从模型中删除指定名称的预测头。

Parameters

head_name (str) – 要删除的预测名称。

forward_head(all_outputs, head_name=None, cls_output=None, attention_mask=None, return_dict=False, context=None, **kwargs)

通过预测头配置的前向传递。有三种方式可以指定所使用的预测头配置(按优先级排序):

  1. 如果传入了head_name参数,则使用指定名称的头部模块。

  2. 如果在AdapterSetup上下文中执行forward调用,则会从该上下文中读取头部配置。

  3. 如果设置了active_head属性,则从该属性读取头部配置。

Parameters
  • all_outputs (dict) – 基础模型的输出结果。

  • head_name (str, optional) – 要使用的预测头名称。如果为None,则使用当前激活的头。

  • cls_output (torch.Tensor, optional) – 模型的分类输出。

  • attention_mask (torch.Tensor, optional) – 模型的注意力掩码。

  • return_dict (bool) – 是否返回一个ModelOutput而不是普通元组。

  • get_cls_from_eos_tokens (bool) – 如果设为True,则从序列中最后一个标记获取分类器标记表示。 设为True时还需要同时传入eos_mask

  • **kwargs – 传递给头部前向传播的额外关键字参数。

get_labels(head_name=None)

返回给定头部正在分配/预测的标签

Parameters
  • head_name – (str, 可选参数) 指定返回标签的头部名称。默认为None。

  • returned (如果名称为None,则返回活动头的标签) –

返回: 标签

get_labels_dict(head_name=None)

返回给定头部对应的id2label字典

Parameters
  • head_name – (str, 可选参数) 指定要返回标签的头部名称。默认为None。

  • returned (如果名称为None,则返回当前活动头的标签) –

返回: id2label

head_type()

检查装饰函数所属的头部类型,如果模型不支持该头部类型则抛出错误。

set_active_adapters(adapter_setup: Union[list, AdapterCompositionBlock], skip_layers: Optional[List[int]] = None)

设置默认在每个前向传递中使用的适配器模块。此设置可以通过在forward()传递中传入adapter_names参数来覆盖。如果找不到具有给定名称的适配器,则不会激活相应类型的模块。如果调用模型类支持命名的预测头,该方法将尝试激活一个预测头,其名称与传入的适配器名称列表中的最后一个适配器相同。

Parameters

adapter_setup (list) – 默认激活的适配器列表。可以是融合(fusion)或堆叠(stacking)配置。

tie_weights()

将输入嵌入和输出嵌入之间的权重绑定起来。

如果在配置中设置了torchscript标志,则无法处理参数共享,因此我们改为克隆权重。

PushAdapterToHubMixin

class adapters.hub_mixin.PushAdapterToHubMixin

提供将适配器上传至HuggingFace模型中心支持的Mixin类。

push_adapter_setup_to_hub(repo_id: str, adapter_setup: Union[str, list, AdapterCompositionBlock], head_setup: Optional[Union[bool, str, list, AdapterCompositionBlock]] = None, datasets_tag: Optional[str] = None, local_path: Optional[str] = None, commit_message: Optional[str] = None, private: Optional[bool] = None, token: Optional[Union[bool, str]] = None, overwrite_adapter_card: bool = False, create_pr: bool = False, revision: Optional[str] = None, commit_description: Optional[str] = None, adapter_card_kwargs: Optional[dict] = None)

将适配器设置上传至HuggingFace的模型中心。

Parameters
  • repo_id (str) - 要上传到的模型中心仓库名称。

  • adapter_setup (Union[str, list, AdapterCompositionBlock]) – 要上传的适配器设置。通常是一个适配器组合块。

  • head_setup (Optional[Union[bool, str, list, AdapterCompositionBlock]], optional) – 要上传的头部设置。

  • datasets_tag (str, optional) – 来自https://huggingface.co/datasets的数据集标识符。默认为None。

  • local_path (str, optional) – 用作适配器仓库克隆目录的本地路径。如果未指定,将创建一个临时目录。默认为None。

  • commit_message (str, 可选) – 推送时提交的消息。默认会根据类类型设置为"add config""add tokenizer""add model"

  • private (bool, 可选) - 创建的仓库是否应为私有(需要付费订阅)。

  • token (boolstr, 可选) – 用于远程文件的HTTP Bearer授权令牌。如果为True,将使用运行huggingface-cli login时生成的令牌(存储在~/.huggingface中)。如果未指定repo_url,则默认为True

  • overwrite_adapter_card (bool, optional) – 用新生成的适配器卡片覆盖已存在的卡片。 如果设置为False,则仅在不存在适配器卡片时才会生成新卡片。默认为False。

  • create_pr (bool, optional) – 是否创建一个包含上传文件的PR还是直接提交。

  • revision (str, 可选) – 上传文件推送到的分支。

  • commit_description (str, 可选) – 将要创建的提交的描述

  • adapter_card_kwargs (Optional[dict], optional) – 传递给适配器卡片文本生成的其他参数。 当前包含:tags(标签)、language(语言)、license(许可证)、metrics(指标)、architecture_training(架构训练)、results(结果)、citation(引用)。

Returns

模型中心上适配器仓库的URL。

Return type

字符串

push_adapter_to_hub(repo_id: str, adapter_name: str, datasets_tag: Optional[str] = None, local_path: Optional[str] = None, commit_message: Optional[str] = None, private: Optional[bool] = None, token: Optional[Union[bool, str]] = None, overwrite_adapter_card: bool = False, create_pr: bool = False, revision: Optional[str] = None, commit_description: Optional[str] = None, adapter_card_kwargs: Optional[dict] = None)

将适配器上传至HuggingFace的模型中心。

Parameters
  • repo_id (str) - 要上传到的模型中心仓库名称。

  • adapter_name (str) - 要上传的适配器名称。

  • datasets_tag (str, optional) – 来自https://huggingface.co/datasets的数据集标识符。默认为None。

  • local_path (str, optional) – 用作适配器仓库克隆目录的本地路径。如果未指定,将创建一个临时目录。默认为None。

  • commit_message (str, 可选) – 推送时提交的消息。默认会根据类类型设置为 "add config""add tokenizer""add model"

  • private (bool, 可选) - 创建的仓库是否应为私有(需要付费订阅)。

  • token (boolstr, 可选) – 用于远程文件的HTTP Bearer授权令牌。如果为True,将使用运行huggingface-cli login时生成的令牌(存储在~/.huggingface中)。如果未指定repo_url,则默认为True

  • overwrite_adapter_card (bool, optional) – 用新生成的适配器卡片覆盖已存在的卡片。 如果设置为False,则仅在不存在适配器卡片时才会生成新卡片。默认为False。

  • create_pr (bool, optional) – 是否创建一个包含上传文件的PR或直接提交。

  • revision (str, 可选) – 上传文件推送到的分支。

  • commit_description (str, 可选) – 将要创建的提交的描述

  • adapter_card_kwargs (Optional[dict], optional) – 传递给适配器卡片文本生成的额外参数。 当前包含:tags(标签)、language(语言)、license(许可证)、metrics(指标)、architecture_training(架构训练)、results(结果)、citation(引用)。

Returns

模型中心上适配器仓库的URL。

Return type

字符串