MBart

MBart模型由Yinhan Liu、Jiatao Gu、Naman Goyal、Xian Li、Sergey Edunov、Marjan Ghazvininejad、Mike Lewis和Luke Zettlemoyer在Multilingual Denoising Pre-training for Neural Machine Translation一文中提出。

根据摘要,MBART是一种基于BART目标的序列到序列去噪自编码器,通过在大规模单语语料库上进行多语言预训练。mBART是首个通过多语言全文去噪来预训练完整序列到序列模型的方法之一,而先前的方法仅关注编码器、解码器或文本部分的重建。

MBartAdapter模型

class adapters.MBartAdapterModel(config: MBartConfig, **kwargs)

MBART模型支持在顶部添加多个灵活的预测头选项。 该模型继承自[PreTrainedModel]。请查看超类文档了解该库为其所有模型实现的通用方法 (如下载或保存、调整输入嵌入大小、修剪头部等)。

This model is also a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) subclass. Use it as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage and behavior.

Parameters

config ([MBartConfig]) – 包含模型所有参数的模型配置类。使用配置文件初始化时不会加载模型权重,仅加载配置。请查看[~PreTrainedModel.from_pretrained]方法来加载模型权重。

property active_adapters: AdapterCompositionBlock

如果您不熟悉适配器和PEFT方法,我们建议您阅读PEFT官方文档了解更多信息:https://huggingface.co/docs/peft

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

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

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

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

Returns

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

Return type

Union[str, List[str]]

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 (strdict, 可选) –

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

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

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

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

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

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

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

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会被添加但不会激活。

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_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。

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。

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) – 适配器的名称。

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

删除指定适配器的AdapterFusion层。

Parameters

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

delete_head(head_name: str)

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

Parameters

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

eject_prefix_tuning(name: str)

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

Parameters

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

forward(input_ids=None, attention_mask=None, decoder_input_ids=None, decoder_attention_mask=None, head_mask=None, decoder_head_mask=None, cross_attn_head_mask=None, encoder_outputs=None, inputs_embeds=None, decoder_inputs_embeds=None, use_cache=None, output_attentions=None, output_hidden_states=None, return_dict=None, past_key_values=None, head=None, **kwargs)

[MBartAdapterModel]的前向方法重写了__call__特殊方法。

<提示>

尽管前向传递的步骤需要在此函数内定义,但之后应该调用[Module]实例而非此函数,因为前者会负责运行预处理和后处理步骤,而后者会静默忽略这些步骤。

Parameters
  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) –

    词汇表中输入序列标记的索引。默认情况下,如果您提供了填充,它将被忽略。

    可以使用[AutoTokenizer]获取索引。详情请参阅[PreTrainedTokenizer.encode]和 [PreTrainedTokenizer.__call__]。

    [什么是输入ID?](../glossary#input-ids)

  • attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) –

    用于避免对填充标记索引执行注意力计算的掩码。掩码值选自 [0, 1]:

    • 1 表示该标记未被掩码,

    • 0 表示该标记被掩码.

    [什么是注意力掩码?](../glossary#attention-mask)

  • decoder_input_ids (torch.LongTensor of shape (batch_size, target_sequence_length), optional) –

    Indices of decoder input sequence tokens in the vocabulary.

    Indices can be obtained using [AutoTokenizer]. See [PreTrainedTokenizer.encode] and [PreTrainedTokenizer.__call__] for details.

    [What are decoder input IDs?](../glossary#decoder-input-ids)

    MBart uses a specific language id token as the starting token for decoder_input_ids generation that varies according to source and target language, e.g. 25004 for en_XX, and 25003 for de_DE. If past_key_values is used, optionally only the last decoder_input_ids have to be input (see past_key_values).

    For translation and summarization training, decoder_input_ids should be provided. If no decoder_input_ids is provided, the model will create this tensor by shifting the input_ids to the right for denoising pre-training following the paper.

  • decoder_attention_mask (torch.LongTensor of shape (batch_size, target_sequence_length), 可选) – 默认行为:生成一个忽略decoder_input_ids中填充标记的张量。默认情况下也会使用因果掩码。

  • head_mask (torch.Tensor of shape (encoder_layers, encoder_attention_heads), optional) –

    用于屏蔽编码器中注意力模块选定头部的掩码。掩码值选自[0, 1]范围:

    • 1表示头部未被屏蔽

    • 0表示头部被屏蔽

  • decoder_head_mask (torch.Tensor 形状为 (decoder_layers, decoder_attention_heads), 可选) –

    用于屏蔽解码器中注意力模块选定头部的掩码。掩码值选自 [0, 1]:

    • 1 表示头部未被屏蔽,

    • 0 表示头部被屏蔽.

  • cross_attn_head_mask (torch.Tensor 形状为 (decoder_layers, decoder_attention_heads), 可选) –

    用于在解码器中屏蔽交叉注意力模块中选定注意力头的掩码。掩码值选自 [0, 1]:

    • 1 表示该注意力头未被屏蔽,

    • 0 表示该注意力头被屏蔽.

  • encoder_outputs (tuple(tuple(torch.FloatTensor), 可选) – 元组包含 (last_hidden_state, 可选: hidden_states, 可选: attentions) 形状为 (batch_size, sequence_length, hidden_size)last_hidden_state, 可选) 是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力机制。

  • past_key_values (tuple(tuple(torch.FloatTensor)), 可选, 当传入use_cache=Trueconfig.use_cache=True时返回) –

    长度为config.n_layerstuple(torch.FloatTensor)元组,其中每个元组包含2个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)的张量,以及2个形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)的额外张量。

    包含预先计算好的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码(参见past_key_values输入)。

    如果使用past_key_values,用户可以选择仅输入形状为(batch_size, 1)的最后decoder_input_ids(那些未将其过去键值状态提供给此模型的输入),而不是形状为(batch_size, sequence_length)的所有decoder_input_ids

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), 可选) – 可选地,您可以选择直接传递嵌入表示而不是传递input_ids。 如果您希望对如何将input_ids索引转换为关联向量有更多控制,而不是使用模型的内部嵌入查找矩阵,这将非常有用。

  • decoder_inputs_embeds (torch.FloatTensor of shape (batch_size, target_sequence_length, hidden_size), optional) –

    可选地,您可以选择直接传递嵌入表示而非传递decoder_input_ids。如果使用了past_key_values,可以仅输入最后一个decoder_inputs_embeds(参见past_key_values)。当您希望对如何将decoder_input_ids索引转换为关联向量有比模型内部嵌入查找矩阵更多控制时,这很有用。

    如果decoder_input_idsdecoder_inputs_embeds都未设置,则decoder_inputs_embeds将取inputs_embeds的值。

  • use_cache (bool, 可选) - 如果设置为True,将返回past_key_values键值状态,可用于加速解码过程(参见past_key_values)。

  • output_attentions (bool, 可选) – 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions

  • output_hidden_states (bool, 可选) – 是否返回所有层的隐藏状态。有关返回张量中hidden_states的更多详情,请参阅相关说明。

  • return_dict (bool, 可选) – 是否返回一个[~utils.ModelOutput]而不是普通元组。

  • labels (torch.LongTensor of shape (batch_size,), optional) – 用于计算序列分类/回归损失的标签。索引值应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels > 1 则计算分类损失(交叉熵)。

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

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

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,则从序列中最后一个<eos>标记获取分类器标记表示。 设为True时还需要同时传入eos_mask

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

freeze_model(freeze=True)

冻结模型的所有权重。

get_adapter(name)

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

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

get_output_embeddings() Union[Module, List[Module]]

返回模型的输出嵌入。

Returns

一个将隐藏状态映射到词汇表的torch模块。

Return type

nn.Module

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函数的额外关键字参数。

head_type()

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

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

字符串

merge_adapter(name: str)

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

Parameters

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

prepare_inputs_for_generation(decoder_input_ids, past=None, attention_mask=None, head_mask=None, decoder_head_mask=None, cross_attn_head_mask=None, use_cache=None, encoder_outputs=None, **kwargs)

为生成准备模型输入。包括计算4D注意力掩码或根据现有缓存切片输入等操作。

有关预期参数的详细信息,请参阅模型文档中的前向传递部分(不同模型可能对例如past_key_values等参数有不同要求)。该函数适用于大多数LLM模型,可直接使用。

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

字符串

reset_adapter()

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

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_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, 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保存方法。

save_pretrained(save_directory: Union[str, PathLike], **kwargs)

将模型及其配置文件保存到目录中,以便可以使用[~PreTrainedModel.from_pretrained]类方法重新加载。

Parameters
  • save_directory (stros.PathLike) - 要保存到的目录。如果不存在将会被创建。

  • is_main_process (bool, 可选, 默认为 True) – 调用此函数的进程是否为主进程。在分布式训练(如TPU)中需要在所有进程上调用此函数时非常有用。在这种情况下,仅在主进程上设置is_main_process=True以避免竞态条件。

  • state_dict (嵌套的torch.Tensor字典) - 要保存的模型状态字典。默认为self.state_dict(),但也可用于仅保存模型的部分内容,或在恢复模型状态字典时需要采取特殊预防措施时使用(例如使用模型并行时)。

  • save_function (Callable) – 用于保存状态字典的函数。在分布式训练(如TPU)中非常有用,当需要用其他方法替代torch.save时。

  • push_to_hub (bool, 可选, 默认为 False) – 是否在保存后将模型推送至Hugging Face模型中心。您可以通过repo_id指定要推送到的代码库(默认使用您命名空间中save_directory的名称)。

  • max_shard_size (int or str, optional, defaults to “5GB”) –

    The maximum size for a checkpoint before being sharded. Checkpoints shard will then be each of size lower than this size. If expressed as a string, needs to be digits followed by a unit (like “5MB”). We default it to 5GB in order for models to be able to run easily on free-tier google colab instances without CPU OOM issues.

    If a single weight of the model is bigger than max_shard_size, it will be in its own checkpoint shard which will be bigger than max_shard_size.

  • safe_serialization (bool, 可选, 默认为 True) - 是否使用safetensors或传统的PyTorch方式(使用pickle)保存模型。

  • variant (str, 可选) – 如果指定此参数,权重将以pytorch_model..bin的格式保存。

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

  • save_peft_format (bool, 可选, 默认为 True) – 为了与PEFT库保持向后兼容性,当适配器权重附加到模型时,适配器状态字典的所有键都需要以base_model.model为前缀。高级用户可以通过将save_peft_format设置为False来禁用此行为。

  • kwargs (Dict[str, Any], 可选) – 传递给[~utils.PushToHubMixin.push_to_hub]方法的额外关键字参数。

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

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

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

布尔值

tie_weights()

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

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

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,则必须继承自实现此方法的类,以防止无限递归。

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派生而来。