X-MOD
概述
《通过预训练模块化 Transformer 消除多语言诅咒》一文中提出了 X-MOD 模型,该文由 Jonas Pfeiffer、Naman Goyal、Xi Lin、Xian Li、James Cross、Sebastian Riedel 和 Mikel Artetxe 撰写。[链接](http://dx.doi.org/10.18653/v1/2022.naacl-main.255) X-MOD 扩展了像 XLM-R 这样的多语言掩码语言模型,在预训练期间包括了特定语言的模块化组件(语言适配器)。在微调过程中,每一层的语言适配器都被冻结。
以下是论文的摘要:
已知多语言预训练模型受多语言诅咒之苦,覆盖的语言越多,每种语言的性能就会下降。我们通过引入特定语言的模块来解决此问题,这使我们能够增加模型的总体容量,同时保持每种语言的可训练参数总数保持不变。与后续学习特定语言组件的工作不同,我们从一开始就对跨语言模块化(X-MOD)模型的模块进行预训练。我们在自然语言推理、命名实体识别和问答上的实验表明,我们的方法不仅减轻了语言之间的负面影响,还实现了积极的迁移,从而提高了单语言和多语言性能。此外,我们的方法可以在后来添加语言而不会引起性能的明显下降,不再限制模型的使用限于预训练的语言集合。
该模型由 jvamvas 贡献。原始代码可在[这里](https://github.com/facebookresearch/fairseq/tree/58cc6cca18f15e6d56e3f60c959fe4f878960a60/fairseq/models/xmod)找到,原始文档可在[这里](https://github.com/facebookresearch/fairseq/tree/58cc6cca18f15e6d56e3f60c959fe4f878960a60/examples/xmod)找到。
使用技巧
技巧
- X-MOD 与 XLM-R 类似,但不同之处在于需要指定输入语言以激活正确的语言适配器。
- 主要模型(基础和大型)为 81 种语言提供了适配器。
适配器使用
输入语言
指定输入语言有两种方式
- 在模型使用前设置默认语言
from transformers import XmodModel
model = XmodModel.from_pretrained("facebook/xmod-base")
model.set_default_language("en_XX")
- 通过显式传递每个样本的语言适配器索引
import torch
input_ids = torch.tensor(
[
[0, 581, 10269, 83, 99942, 136, 60742, 23, 70, 80583, 18276, 2],
[0, 1310, 49083, 443, 269, 71, 5486, 165, 60429, 660, 23, 2],
]
)
lang_ids = torch.LongTensor(
[
0, # en_XX
8, # de_DE
]
)
output = model(input_ids, lang_ids=lang_ids)
微调
论文推荐在微调期间冻结嵌入层和语言适配器。提供了一种实现这一点的方案。
model.freeze_embeddings_and_language_adapters()
# Fine-tune the model ...
跨语言迁移
微调后,可以通过激活目标语言的适配器来测试零样本跨语言迁移。
model.set_default_language("de_DE")
# Evaluate the model on German examples ...
资源
XmodConfig
类 transformers.XmodConfig
< 来源 >参数
- vocab_size (
int
, 可选, 默认为30522) — X-MOD模型词汇表大小。定义了在调用XmodModel
时inputs_ids
可以代表的不同标记的数量。 - hidden_size (
int
, 可选, 默认为768) — 编码层和池化层的维度。 - num_hidden_layers (
int
, 可选, 默认为12) — Transformer编码器中的隐藏层数。 - num_attention_heads (
int
, 可选, 默认值为12) — Transformer编码器每个注意力层的注意力头数。 - intermediate_size (
int
, 可选, 默认值为3072) — Transformer编码器中“中间层”(通常称为前馈层)的维度。 - hidden_act (
str
或Callable
, 可选, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,支持 "gelu"、"relu"、"silu" 和 "gelu_new"。 - hidden_dropout_prob (
float
, 可选, 默认为 0.1) — 所有嵌入层、编码器层和池化层的dropout概率。 - attention_probs_dropout_prob (
float
, 可选, 默认为 0.1) — 注意力概率的dropout比。 - max_position_embeddings (
int
, 可选, 默认为 512) — 该模型可能用到的最大序列长度。通常设置得大一些以防万一(例如,512 或 1024 或 2048)。 - type_vocab_size (
int
, 可选,默认为2) — 在调用 XmodModel 时传入的token_type_ids
的词汇表大小。 - initializer_range (
float
, 可选,默认为0.02) — 用于初始化所有权重矩阵的截断正态分布初始化器的标准差。 - layer_norm_eps (
float
, 可选,默认为1e-12) — 层归一化层使用的ε值。 - position_embedding_type (
str
, 可选,默认为"absolute"
) — 位置嵌入类型。选择其中一个"absolute"
、"relative_key"
、"relative_key_query"
。对于位置嵌入,请选择"absolute"
。有关"relative_key"
的更多信息,请参阅《Self-Attention with Relative Position Representations (Shaw et al.)》(https://arxiv.org/abs/1803.02155)。有关"relative_key_query"
的更多信息,请参阅《Improve Transformer Models with Better Relative Position Embeddings (Huang et al.)》中的第 方法 4(https://arxiv.org/abs/2009.13658)。 - is_decoder (
bool
, 可选,默认为False
) — 模型是否用作解码器。如果为False
,则模型用作编码器。 - use_cache (
bool
, 可选,默认为True
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅当config.is_decoder=True
时相关。 - classifier_dropout (
float
, 可选) — 分类头的丢弃比例。 - pre_norm (
bool
, 可选, 默认为False
) — 是否在每个块之前应用层归一化。 - adapter_reduction_factor (
int
或float
, 可选, 默认为 2) — 相对于hidden_size
,适配器维度减少的系数。 - adapter_layer_norm (
bool
, 可选, 默认为False
) — 是否在适配器模块(所有适配器共享)之前应用新的层归一化。 - adapter_reuse_layer_norm (
bool
, 可选, 默认为True
) — 是否复用第二个层归一化并将其应用于适配器模块之前。 - ln_before_adapter (
bool
, 可选, 默认为True
) — 是否在适配器模块周围的残差连接之前应用层归一化。 - languages (
Iterable[str]
, 可选, 默认为["en_XX"]
) — 应初始化适配器模块的语言代码序列。 - default_language (
str
, optional) — 默认语言的代码。如果没有明确传递语言代码到前向方法,则假设输入在此语言中。
这是存储 XmodModel 配置的配置类。它用于根据指定的参数实例化 X-MOD 模型,定义模型架构。使用默认值实例化配置将产生与 facebook/xmod-base 架构相似的配置。
配置对象继承自 PretrainedConfig 并可以用于控制模型输出。更多详细信息请参阅 PretrainedConfig 文档。
示例
>>> from transformers import XmodConfig, XmodModel
>>> # Initializing an X-MOD facebook/xmod-base style configuration
>>> configuration = XmodConfig()
>>> # Initializing a model (with random weights) from the facebook/xmod-base style configuration
>>> model = XmodModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
XmodModel
class transformers.XmodModel
< source >( config add_pooling_layer = True )
参数
- config (XmodConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只有配置。请查看 from_pretrained() 方法来加载模型权重。
裸 X-MOD 模型变压器输出原始隐藏状态,没有任何特定头。
此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。
模型可以表现为编码器(只有自注意力),也可以表现为解码器,在这种情况下,在自注意力层之间添加了一层交叉注意力,遵循 Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser 和 Illia Polosukhin 在 Attention is all you need 中描述的架构。
要表现为解码器,模型需要用配置的 is_decoder
参数设置为 True
来初始化。要用于 Seq2Seq 模型,模型需要同时将 is_decoder
参数和 add_cross_attention
设置为 True
;正向传递时预期输入为 encoder_hidden_states
。
.. _Attention is all you need: https://arxiv.org/abs/1706.03762
前向传递
< source >( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None encoder_hidden_states: 可选 = None encoder_attention_mask: 可选 = None past_key_values: 可选 = None use_cache: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None )
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。索引可以通过使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- lang_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
,可选) — 分别为每个样本应激活的语言适配器的索引。默认值:对应于self.config.default_language
的索引。 - attention_mask (
torch.FloatTensor
形状为(batch_size, sequence_length)
,可选) — 避免在填充标记索引上进行注意力的掩码。选择掩码值[0, 1]
:- 1 代表未被掩码的标记,
- 0 代表被掩码的标记。
- token_type_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
,可选) — 区分标记索引以指明输入的前后部分。索引选择在[0, 1]
:- 0 代表句子 A 的标记,
- 1 代表句子 B 的标记。
- position_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围在[0, config.max_position_embeddings - 1]
之间。 - head_mask (
torch.FloatTensor
形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于取消自我注意模块中选定头的掩码。掩码值选择在[0, 1]
:- 1 表示该头未被掩码,
- 0 表示该头被掩码。
- inputs_embeds (
torch.FloatTensor
形状为(batch_size, sequence_length, hidden_size)
,可选) — 可选,直接传递嵌入表示,而不是传递input_ids
。这在您想更多地控制如何将input_ids
索引转换为相关向量,而不仅仅是模型内部嵌入查找矩阵时非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。关于返回张量下的更多详细信息,请参阅attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。关于返回张量下的更多详细信息,请参阅hidden_states
。 - return_dict (
bool
, 可选) — 是否返回ModelOutput而不仅仅是平常见组。 - encoder_hidden_states (形状为
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则用于交叉注意力操作。 - encoder_attention_mask (形状为
(batch_size, sequence_length)
的torch.FloatTensor
,可选) — 用于避免对编码器输入中的填充标记索引执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用掩码。掩码值范围选择在[0, 1]
:- 1 表示 未掩码 的标记;
- 0 表示 掩码 的标记。
- past_key_values (长度为
config.n_layers
的tuple(tuple(torch.FloatTensor))
,每个元组包含 4 个张量) - of 形状
(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
— 包含注意力块的预计算的键和值隐藏状态。可用于加速解码。如果使用
past_key_values
,用户可以选择只输入形状为(batch_size, 1)
的最后一个decoder_input_ids
(那些没有将过去键值状态提供给此模型)而不是所有形状为(batch_size, sequence_length)
的decoder_input_ids
。 - use_cache (
bool
,可选)- 如果设置为True
,则返回past_key_values
的键值状态,并可用来加速解码(见past_key_values
)。
类 XmodModel 的前向方法,覆盖了特殊的 __call__
方法。
虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module
实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。
XmodForCausalLM
class transformers.XmodForCausalLM
< 源代码 >( config )
参数
- config (XmodConfig) — 包含模型所有参数的模型配置类。使用配置文件进行初始化时,不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法来加载模型权重。
带有顶部语言建模
头的 X-MOD 模型,用于 CLM 微调。
此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。
前向传递
< 源代码 >( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None encoder_hidden_states: 可选 = None encoder_attention_mask: 可选 = None labels: 可选 = None past_key_values: Tuple = None use_cache: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None )
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 输入序列 token 在词汇表中的索引。索引可以通过使用 AutoTokenizer 获得。详情请见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- lang_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选项) — 分别为每个样本应激活的语言适配器索引。默认值:与self.config.default_language
对应的索引。 - attention_mask (
torch.FloatTensor
的形状为(batch_size, sequence_length)
,可选项) — 用于避免在对填充标记索引执行注意力操作时的掩码。选定的掩码值在[0, 1]
之间:- 1 代表 非掩码 标记的标记,
- 0 代表 掩码 标记的标记。
- token_type_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选项) — 段落标记索引,用以指示输入的第一部分和第二部分。索引选自[0, 1]
:- 0 代表 句子 A 标记,
- 1 代表 句子 B 标记。
- position_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
,可选)—— 每个输入序列标记的位置嵌入中的索引。选取范围[0, config.max_position_embeddings - 1]
。 - head_mask (形状为
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)—— 用于中止自注意力模块选定的头的掩码。掩码值在[0, 1]
范围内:- 1 表示头未 掩码,
- 0 表示头被 掩码。
- inputs_embeds (形状为
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)—— 可选的,您可以选择传入嵌入式表示而不传递input_ids
。如果您希望比模型内部嵌入查找矩阵有更多控制权来将input_ids
索引转换为相关向量,则此操作很有用。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。详细信息请见返回张量中的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。详细信息请见返回张量中的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回ModelOutput,而不是一个普通的元组。 - encoder_hidden_states (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, 可选) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中用于。,// HTML_TAG_END --> - encoder_attention_mask (
torch.FloatTensor
of shape(batch_size, sequence_length)
, 可选) — 避免在编码器输入中的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用。掩码值选择在[0, 1]
范围内:- 1 表示 未掩码 的标记;
- 0 表示 掩码 的标记。
- labels (
torch.LongTensor
of shape(batch_size, sequence_length)
, 可选) — 用于计算从左到右的语言模型损失(下一个词预测)的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(见input_ids
的文档说明)。索引设置为-100
的标记将被忽略(掩码),仅计算标签在[0, ..., config.vocab_size]
范围内的标记的损失。,// HTML_TAG_END -->
《XmodForCausalLM》的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module
实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。
类 transformers.XmodForMaskedLM
< source >( config )
参数
- config (XmodConfig) — Model configuration class with all the parameters of the model. Initializing with a config file does not load the weights associated with the model, only the configuration. Check out the from_pretrained() method to load the model weights.
X-MOD 模型,顶部带有 语言建模
的头。
此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。
前向传递
< source >参数
- lang_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, 可选) — 对应每个样本应激活的语言适配器索引。默认:与self.config.default_language
对应的索引。 - attention_mask (
torch.FloatTensor
of shape(batch_size, sequence_length)
, 可选) — 用于防止在填充token索引上执行注意力的掩码。在[0, 1]
中选定的掩码值:- 对于未掩码的token,为1,
- 对于已掩码的token,为0。
- token_type_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, 可选) — 用于指示输入的第一和第二部分的段token索引。在[0, 1]
中选定的索引: - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。请参阅返回的张量中的attentions
以获取更多详细信息。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。请参阅返回的张量中的hidden_states
以获取更多详细信息。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。 - labels (
torch.LongTensor
形状为(batch_size, sequence_length)
,可选) — 用于计算掩码语言模型损失的标签。索引应在[-100, 0, ..., config.vocab_size]
(见input_ids
的文档字符串)范围内。索引设置为-100
的标记将被忽略(掩码),损失只对带有标签的范围在[0, ..., config.vocab_size]
的标记进行计算。 - kwargs (
Dict[str, any]
,可选,默认为 {}) — 用于隐藏已弃用的旧参数。
XmodForMaskedLM 的 forward 方法,重载了 __call__
特殊方法。
虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module
实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。
XmodForSequenceClassification
类 transformers.XmodForSequenceClassification
< 来源 >( config )
参数
- 配置 (XmodConfig) — 模型配置类,包含所有模型参数。使用配置文件初始化不会加载与模型关联的权重,只有配置。查看from_pretrained() 方法来加载模型权重。
X-MOD 模型转换器,在上方具有序列分类/回归头部(在池化输出之上的一层线性层),例如用于 GLUE 任务。
此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。
前向传递
< 来源 >( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None )
参数
- attention_mask (
torch.FloatTensor
的形状为(batch_size, sequence_length)
,可选) — 避免在填充 token 索引上执行 attention 的掩码。选定的掩码值在[0, 1]
范围内:- 1 表示 未掩码 的 token,
- 0 表示 已掩码 的 token。
- token_type_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选) — 用于指示输入的首次和第二部分的 segment token 索引。选定的索引在[0, 1]
范围内:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选) — 存在于位置嵌入中的每个输入序列 token 的位置索引。选择题号的范围在[0, config.max_position_embeddings - 1]
内。 - head_mask (
torch.FloatTensor
形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使标头被取消选择的自我注意力模块的掩码。选定的掩码值在[0, 1]
之间:- 1 表示头没有 被掩码,
- 0 表示头被 掩码。
- inputs_embeds (
torch.FloatTensor
形状为(batch_size, sequence_length, hidden_size)
,可选) — 可选,你也可直接传入嵌入表示,而不是传入input_ids
。如果你想要比模型内部嵌入查找矩阵有更多的控制权来将input_ids
索引转换为相关向量,这种方法很有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回的张力下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回ModelOutput而不是普通元组。 - labels (
torch.LongTensor
的形状为(batch_size,)
,可选) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels == 1
,将计算回归损失(均方损失),如果config.num_labels > 1
,将计算分类损失(交叉熵)。
XmodForSequenceClassification的前向方法重写了__call__
特殊方法。
虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module
实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。
XmodForMultipleChoice
类 transformers.XmodForMultipleChoice
< source >( config )
参数
- config (XmodConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载模型相关的权重,仅加载配置。查看from_pretrained() 方法以加载模型权重。
顶部带有多个选择的分类头(在池化输出之上的一层线性层和softmax)的X-MOD模型,例如用于RocStories/SWAG任务。
此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。
前向传递
< 源代码 >( input_ids: Optional = None lang_ids: Optional = None token_type_ids: Optional = None attention_mask: Optional = None labels: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )
参数
- input_ids (
torch.LongTensor
of shape(batch_size, num_choices, sequence_length)
) — 输入序列令牌在词汇表中的索引。索引可以通过使用 AutoTokenizer 获取。详情请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- lang_ids (
torch.LongTensor
形状为(batch_size, num_choices, sequence_length)
,可选) — 分别为每个样本应激活的语言适配器的索引。默认值:对应self.config.default_language
的索引。 - attention_mask (
torch.FloatTensor
形状为(batch_size, num_choices, sequence_length)
,可选) — 用于防止在填充词索引上执行注意力运算的掩码。掩码值选取范围为[0, 1]
:- 1 表示 未掩码 的令牌;
- 0 表示 掩码 的令牌。
- token_type_ids (
torch.LongTensor
形状为(batch_size, num_choices, sequence_length)
,可选) — 段落词索引,用于指示输入的第一部分和第二部分。索引范围选取为[0, 1]
:- 0 对应于 句子 A 令牌;
- 1 对应于 句子 B 令牌。
- position_ids (形状为
(batch_size, num_choices, sequence_length)
的torch.LongTensor
,可选) — 每个输入序列标记在位置嵌入中的位置索引。在[0, config.max_position_embeddings - 1]
的范围内选择。 - head_mask (形状为
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选) — 用于取消选择自注意力模块中选定头部的掩码。掩码值在[0, 1]
中选择:- 1 表示头部 未被掩码 ,
- 0 表示头部被 掩码 。
- inputs_embeds (形状为
(batch_size, num_choices, sequence_length, hidden_size)
的torch.FloatTensor
,可选) — 可选地,你可以直接传递嵌入表示,而不是传递input_ids
。当你想比模型内部的嵌入查找矩阵有更多控制权时,这很有用,将input_ids
索引转换为相关向量。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。详细信息请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。详细信息请参阅返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回ModelOutput对象而不是普通元组。 - labels (
torch.LongTensor
的形状为(batch_size,)
,可选) — 计算多选题分类损失的标签。索引应在[0, ..., num_choices-1]
范围内,其中num_choices
是输入张量第二个维度的尺寸。(参见上面的input_ids
)
XmodForMultipleChoice 向前方法,覆盖了 __call__
特殊方法。
虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module
实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。
XmodForTokenClassification
类 transformers.XmodForTokenClassification
< source >( config )
参数
- config (XmodConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载模型相关的权重,只有配置。请检查from_pretrained()方法来加载模型权重。
在顶部带有标记分类掩头(隐藏状态 output 上面的一个线性层)的 X-MOD 模型,例如用于命名实体识别 (NER) 任务。
此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。
前向传递
< source >( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None )
参数
- input_ids (
torch.LongTensor
形状(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。可以通过使用AutoTokenizer获取索引。有关详细信息,请参阅PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- lang_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选) — 应为每个样本激活的语言适配器索引。默认:对应于self.config.default_language
的索引。 - attention_mask (
torch.FloatTensor
的形状为(batch_size, sequence_length)
,可选) — 避免在填充词索引上执行注意力的掩码。掩码值选择在[0, 1]
:- 1 代表 未掩码 的令牌,
- 0 代表 掩码 的令牌。
- token_type_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选) — 用于指示输入的第一、二部分的分段令牌索引。索引选择在[0, 1]
:- 0 代表一个 句子 A 令牌,
- 1 代表一个 句子 B 令牌。
- position_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。选择在[0, config.max_position_embeddings - 1]
范围内。 - head_mask (
torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 取消选定头部以使自注意力模块失效的掩码。掩码值在[0, 1]
范围内选择:- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
- inputs_embeds (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 如果不想传递input_ids
,而是直接传递嵌入表示,则可以选择这样做。这在您想比模型内部嵌入查找矩阵有更多控制权如何将input_ids
索引转换为关联向量时非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。详细信息请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。详细信息请参阅返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回ModelOutput 而不是普通的元组。 - labels (
torch.LongTensor
形状为(batch_size, sequence_length)
,可选)——用于计算标记分类损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。
XmodForTokenClassification 的 forward 方法重载了特殊方法 __call__
。
虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module
实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。
XmodForQuestionAnswering
类 transformers.XmodForQuestionAnswering
< 来源 >( config )
参数
- config (XmodConfig) — 模型配置类,包含所有模型参数。使用配置文件初始化不加载与模型关联的权重,只有配置。请查看 from_pretrained() 方法以加载模型权重。
在SQuAD(Span-based question-answering任务)等extractive question-answering任务上具有span分类头的X-MOD模型(在hidden-states输出之上的线性层计算span start logits和span end logits)。
此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。
前向传递
< 源代码 >( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None start_positions: 可选 = None end_positions: 可选 = None output_attentions: 可选 = None : 可选 = None : 可选 = None )
参数
- input_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
) — 输入序列_TOKEN的词库索引。索引可以通过使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 以及 PreTrainedTokenizer.call()。
- lang_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
,可选项) — 每个样本应激活的语言适配器的索引。默认:对应self.config.default_language
的索引。 - attention_mask (
torch.FloatTensor
形状为(batch_size, sequence_length)
,可选项) — 用于避免在填充标记索引上执行注意力操作的掩码。掩码值选择在[0, 1]
:- 1 对于 非掩码 标记,
- 0 对于 掩码 标记。
- token_type_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
,可选项) — 段标记索引,用于指示输入的第一部分和第二部分。索引选择在[0, 1]
:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
- position_ids (可选的
torch.LongTensor
,形状为(batch_size, sequence_length)
) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (可选的
torch.FloatTensor
形状为(num_heads,)
或(num_layers, num_heads)
) — 用于禁用自注意力模块中选定头的掩码。掩码值选择在[0, 1]
:- 1 表示头未被掩码 hóa;
- 0 表示头被掩码 hóa。
- inputs_embeds (可选的
torch.FloatTensor
形状为(batch_size, sequence_length, hidden_size)
) — 可以选择直接传递嵌入表示,而不是传递input_ids
。这在需要比模型内部嵌入查找矩阵有更多控制权的情况下很有用,即如何将input_ids
索引转换为相关向量。 - output_attentions (
bool
, optional) — 是否返回所有注意力层的注意力张量。关于返回的张量中的更多信息,请参阅attentions
。 - output_hidden_states (
bool
, optional) — 是否返回所有层的隐藏状态。有关返回的张量中的更多信息,请参阅hidden_states
。 - return_dict (
bool
, optional) — 是否返回一个 ModelOutput 而不是纯元组。 - XmodForQuestionAnswering 前向方法,重写了特殊方法
__call__
。虽然前向传递的食谱需要在函数内部定义,但应该在调用
Module
实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。