Transformers--4-37-中文文档-三十-

Transformers 4.37 中文文档(三十)

原文:huggingface.co/docs/transformers

SwitchTransformers

原文链接: huggingface.co/docs/transformers/v4.37.2/en/model_doc/switch_transformers

概述

SwitchTransformers 模型是由 William Fedus、Barret Zoph 和 Noam Shazeer 在Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity中提出的。

Switch Transformer 模型使用了稀疏的 T5 编码器-解码器架构,其中 MLP 被 Mixture of Experts(MoE)替换。一个路由机制(在这种情况下是前 1 个)将每个标记与一个专家关联起来,其中每个专家都是一个密集的 MLP。虽然开关变压器比其等效的密集模型有更多的权重,但稀疏性允许更好的扩展和更好的规模微调性能。在前向传递过程中,只使用了一小部分权重。路由机制允许模型动态选择相关权重,从而增加模型容量而不增加操作数量。

论文摘要如下:

在深度学习中,模型通常对所有输入重复使用相同的参数。专家混合(MoE)违背了这一点,而是为每个传入的示例选择不同的参数。结果是一个稀疏激活的模型 - 具有惊人数量的参数 - 但是计算成本恒定。然而,尽管 MoE 取得了几个显著的成功,但广泛采用受到了复杂性、通信成本和训练不稳定性的阻碍 - 我们通过 Switch Transformer 来解决这些问题。我们简化了 MoE 路由算法,并设计了直观的改进模型,减少了通信和计算成本。我们提出的训练技术有助于解决不稳定性问题,并且我们展示了大型稀疏模型可以首次使用更低精度(bfloat16)格式进行训练。我们基于 T5-Base 和 T5-Large 设计模型,利用相同的计算资源实现了高达 7 倍的预训练速度提升。这些改进延伸到多语言设置,我们在所有 101 种语言中测量了对 mT5-Base 版本的增益。最后,我们通过在“Colossal Clean Crawled Corpus”上预训练高达万亿参数模型,将语言模型的当前规模提升,并实现了 T5-XXL 模型的 4 倍加速。

该模型由Younes BelkadaArthur Zucker贡献。原始代码可以在这里找到。

使用提示

  • SwitchTransformers 使用 T5Tokenizer,可以直接从每个模型的存储库中加载。

  • 发布的权重是在英语遮蔽语言建模任务上预训练的,应进行微调。

资源

  • 翻译任务指南

  • 总结任务指南

SwitchTransformersConfig

class transformers.SwitchTransformersConfig

<来源>

( vocab_size = 32128 d_model = 768 d_kv = 64 d_ff = 2048 expert_capacity = 64 num_layers = 12 num_sparse_encoder_layers = 3 num_decoder_layers = 12 num_sparse_decoder_layers = 3 num_heads = 12 num_experts = 8 router_bias = False router_jitter_noise = 0.01 router_dtype = 'float32' router_ignore_padding_tokens = False relative_attention_num_buckets = 32 relative_attention_max_distance = 128 dropout_rate = 0.1 layer_norm_epsilon = 1e-06 router_z_loss_coef = 0.001 router_aux_loss_coef = 0.001 initializer_factor = 1.0 dense_act_fn = 'relu' is_encoder_decoder = True add_router_probs = False use_cache = True pad_token_id = 0 eos_token_id = 1 **kwargs )

参数

  • vocab_sizeint可选,默认为 32128) - SwitchTransformers 模型的词汇量。定义了在调用 SwitchTransformersModel 时可以表示的不同标记的数量。

  • d_modelint可选,默认为 768) - 编码器层和池化层的大小。

  • d_kvint可选,默认为 64) - 每个注意力头的键、查询、值投影的大小。d_kv必须等于d_model // num_heads

  • d_ff (int, optional, defaults to 2048) — 每个SwitchTransformersBlock中间级前馈层的大小。

  • expert_capacity (int, optional, defaults to 64) — 每个专家可以存储的令牌数量。如果设置为 1,则模型将表现得像一个常规 Transformer。

  • num_layers (int, optional, defaults to 12) — Transformer 编码器层中的稠密隐藏层数量。

  • num_sparse_encoder_layers (int, optional, defaults to 3) — Transformer 编码器层中稀疏(MoE)稠密隐藏层的数量。

  • num_decoder_layers (int, optional, defaults to 12) — Transformer 解码器中的隐藏层数量。如果未设置,将使用与num_layers相同的值。

  • num_sparse_decoder_layers (int, optional, defaults to 3) — Transformer 解码器层中稀疏(MoE)稠密隐藏层的数量。

  • num_heads (int, optional, defaults to 12) — 每个注意力层中的注意力头数。

  • num_experts (int, optional, defaults to 8) — 每个 SwitchTransformer 层的专家数量。

  • router_bias (bool, optional, defaults to False) — 是否向路由器添加偏置。

  • router_jitter_noise (float, optional, defaults to 0.01) — 添加到路由器的噪音量。

  • router_dtype (str, optional, default to "float32") — 用于路由器的dtype。最好将dtype保持为"float32",如论文中的选择性精度讨论中所指定的。

  • router_ignore_padding_tokens (bool, optional, defaults to False) — 在路由时是否忽略填充标记。

  • relative_attention_num_buckets (int, optional, defaults to 32) — 每个注意力层使用的桶数。

  • relative_attention_max_distance (int, optional, defaults to 128) — 用于桶分离的较长序列的最大距离。

  • dropout_rate (float, optional, defaults to 0.1) — 所有 dropout 层的比率。

  • layer_norm_eps (float, optional, defaults to 1e-6) — 层归一化层使用的 epsilon。

  • router_z_loss_coef (float, optional, defaults to 0.001) — 总损失的 z 损失因子。

  • router_aux_loss_coef (float, optional, defaults to 0.001) — 总损失的辅助损失因子。

  • initializer_factor (float, optional, defaults to 1.0) — 初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。

  • dense_act_fn (string, optional, defaults to "relu") — 要使用的前馈层类型。应为"relu""gated-gelu"之一。SwitchTransformersv1.1 使用"gated-gelu"前馈投影。原始 SwitchTransformers 使用"relu"

  • add_router_probs (bool, optional, defaults to False) — 是否输出路由器概率以计算路由器辅助损失。

  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。

这是一个配置类,用于存储 SwitchTransformersModel 的配置。根据指定的参数实例化 SwitchTransformers 模型,定义模型架构。使用默认值实例化配置将产生类似于 SwitchTransformers google/switch-base-8架构的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。

SwitchTransformersTop1Router

class transformers.SwitchTransformersTop1Router

<来源>

( config: SwitchTransformersConfig )

使用令牌选择顶级专家分配的路由器。

该路由器使用与 Switch Transformer (arxiv.org/abs/2101.03961)和 V-MoE (arxiv.org/abs/2106.05974)相同的机制:令牌选择其顶级专家。项目按router_probs排序,然后路由到其选择的专家,直到达到专家的expert_capacity不能保证每个令牌都由专家处理,也不能保证每个专家至少收到一个令牌。

_compute_router_probabilities

<来源>

( hidden_states: Tensor ) → export const metadata = 'undefined';router_probabilities (torch.Tensor)

参数

  • hidden_states (torch.Tensor) — (batch_size, sequence_length, hidden_dim) 从中计算路由器概率的隐藏状态。

返回

router_probabilities (torch.Tensor)

形状为(batch_size, sequence_length, num_experts)的张量,对应于每个令牌和专家的概率。用于将令牌路由到专家。router_logits (torch.Tensor): 形状为(batch_size, sequence_length, num_experts)的对应原始路由器 logits 的对数张量。稍后用于计算路由器 z-loss。

从输入隐藏状态计算路由器概率。

forward

<来源>

( hidden_states: Tensor )

参数

  • hidden_states (torch.Tensor) — [num_groups, tokens_per_group, hidden_dim] 发送给专家的输入。

每个路由器类的通用前向函数。每个路由器都期望具有相同的输入隐藏状态(hidden_states),对应于每个令牌的隐藏状态,expert_capacity对应于路由器将发送到每个专家的令牌数量,一些路由器可以将少量令牌发送给每个专家。

每个路由器的工作方式如下:它期望每个令牌的隐藏状态,从router_weights获取router_probsrouter_logits。这将为每个令牌分配原始概率以分配给专家。然后每个路由器类将不得不定义自己的_compute_routing_instructions

SwitchTransformersSparseMLP

class transformers.SwitchTransformersSparseMLP

<来源>

( config: SwitchTransformersConfig expert_class: Module = <class 'transformers.models.switch_transformers.modeling_switch_transformers.SwitchTransformersDenseActDense'> )

Switch Transformers Sparse MLP 模块的实现。

forward

<来源>

( hidden_states )

稍等,这可能有点难以理解。按正确顺序,MoE 层执行以下操作:

1- 从路由器获取router_mask。掩码的形状为(batch_size, sequence_length, num_expert),对应于router_probs的 argmax。在计算隐藏状态时需要这些概率:它们被广播到隐藏状态值(可以解释为缩放因子)。

2- 将令牌分派给其关联的专家。我们对专家进行经典的 for 循环,并为每个专家分配相应的隐藏状态。

SwitchTransformersModel

class transformers.SwitchTransformersModel

<来源>

( config: SwitchTransformersConfig )

参数

  • config(SwitchTransformersConfig)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

裸的 SWITCH_TRANSFORMERS 模型变压器输出原始隐藏状态,没有特定的头部。

SWITCH_TRANSFORMERS 模型是由Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity中提出的,作者是William FedusBarret ZophNoam Shazeer。它是一个编码器-解码器 T5 样式的模型,具有稀疏前馈,代表专家混合(MoE)架构。

该模型继承自 PreTrainedModel。检查超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

该模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None output_router_logits: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqMoEModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor)- 词汇表中输入序列标记的索引。SWITCH_TRANSFORMERS 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是输入 ID?

    要了解有关如何为预训练准备input_ids的更多信息,请查看 SWITCH_TRANSFORMERS Training。

  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)- 用于避免在填充标记索引上执行注意力的掩码。选择在[0, 1]中的掩码值:

    • 对于未被masked的标记为 1。

    • 对于被masked的标记为 0。

    什么是注意力掩码?

  • decoder_input_ids(形状为(batch_size, target_sequence_length)torch.LongTensor可选)- 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    SWITCH_TRANSFORMERS 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,则可选择仅输入最后的decoder_input_ids(请参阅past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 SWITCH_TRANSFORMERS Training。

  • decoder_attention_mask(形状为(batch_size, target_sequence_length)torch.BoolTensor可选)- 默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果掩码也将默认使用。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于使编码器中自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]中:

    • 1 表示头部未被掩码

    • 0 表示头部被掩码

  • decoder_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于在解码器中使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]中:

    • 1 表示头部未被掩码

    • 0 表示头部被掩码

  • cross_attn_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.Tensor可选)- 用于使解码器中交叉注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]中:

    • 1 表示头部未被掩码

    • 0 表示头部被掩码

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

  • past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含 4 个形状为(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

  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)- 可选地,可以直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制权,以便将input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。

  • decoder_inputs_embeds(形状为(batch_size, target_sequence_length, hidden_size)torch.FloatTensor可选)- 可选地,可以直接传递嵌入表示,而不是传递decoder_input_ids。如果使用了past_key_values,则只需输入最后一个decoder_inputs_embeds(参见past_key_values)。如果您想要更多控制权,以便将decoder_input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵。

    如果decoder_input_idsdecoder_inputs_embeds都未设置,则decoder_inputs_embedsinputs_embeds的值。

  • use_cachebool可选)- 如果设置为True,则返回past_key_values键值状态,并可用于加速解码(参见past_key_values)。

  • output_attentionsbool可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions

  • output_hidden_statesbool可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states

  • output_router_logitsbool可选)- 是否返回所有路由器的对数。它们对于计算路由器损失很有用,在推理期间不应返回。

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

返回

transformers.modeling_outputs.Seq2SeqMoEModelOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqMoEModelOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=Falseconfig.return_dict=False)包含根据配置(SwitchTransformersConfig)和输入的不同元素。

  • last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size)) — 模型解码器最后一层的隐藏状态序列。

    如果仅使用 past_key_values,则输出形状为 (batch_size, 1, hidden_size) 的序列的最后一个隐藏状态。

  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 长度为 config.n_layerstuple(torch.FloatTensor) 元组,每个元组有两个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量,以及两个额外的形状为 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的张量。

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

  • decoder_hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组。

    解码器每一层的隐藏状态以及可选的初始嵌入输出。

  • decoder_attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • decoder_router_logits (tuple(torch.FloatTensor), optional, 当传递 output_router_logits=Trueconfig.add_router_probs=True 时返回) — 形状为 (batch_size, sequence_length, num_experts)torch.FloatTensor 元组(每层一个)。

    解码器模型的路由器 logits,用于计算混合专家模型的辅助损失。

  • cross_attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

    解码器交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组。

    编码器每一层的隐藏状态以及可选的初始嵌入输出。

  • encoder_attentions (tuple(torch.FloatTensor), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • encoder_router_logits (tuple(torch.FloatTensor), 可选, 当传递output_router_logits=Trueconfig.add_router_probs=True时返回) — 形状为(batch_size, sequence_length, num_experts)torch.FloatTensor元组(每层一个)。

    编码器模型的路由器 logits,用于计算辅助损失和稀疏模块的 z_loss。

SwitchTransformersModel 的 forward 方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, SwitchTransformersModel

>>> tokenizer = AutoTokenizer.from_pretrained("google/switch-base-8")
>>> model = SwitchTransformersModel.from_pretrained("google/switch-base-8")

>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids  # Batch size 1

>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for SwitchTransformersModel.
>>> # This is not needed for torch's SwitchTransformersForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)

>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state

SwitchTransformersForConditionalGeneration

class transformers.SwitchTransformersForConditionalGeneration

< source >

( config: SwitchTransformersConfig )

参数

  • config (SwitchTransformersConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

SWITCH_TRANSFORMERS 模型在顶部有一个语言建模头。

SWITCH_TRANSFORMERS 模型是由William FedusBarret ZophNoam Shazeer提出的,其在Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity中描述。它是一种具有稀疏前馈的编码器-解码器 T5-like 模型,代表着专家混合(MoE)架构。

此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

< source >

( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None output_router_logits: Optional = True return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqMoEOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为(batch_size, sequence_length)) — 词汇表中输入序列标记的索引。SWITCH_TRANSFORMERS 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 来获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是输入 ID?

    要了解有关如何为预训练准备 input_ids 的更多信息,请查看 SWITCH_TRANSFORMERS Training。

  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值在 [0, 1] 中选择:

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

    • 0 表示被 掩码 的标记。

    什么是注意力掩码?

  • decoder_input_ids (torch.LongTensor of shape (batch_size, target_sequence_length), optional) — 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    SWITCH_TRANSFORMERS 使用 pad_token_id 作为 decoder_input_ids 生成的起始标记。如果使用 past_key_values,则可以选择仅输入最后的 decoder_input_ids(参见 past_key_values)。

    要了解有关如何为预训练准备 decoder_input_ids 的更多信息,请查看 SWITCH_TRANSFORMERS Training。

  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), optional) — 默认行为:生成一个张量,忽略 decoder_input_ids 中的填充标记。因果掩码也将默认使用。

  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使编码器中的自注意力模块中的选定头部失效的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部未被 掩码

    • 0 表示头部被 掩码

  • decoder_head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使解码器中的自注意力模块中的选定头部失效的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部未被 掩码

    • 0 表示头部被 掩码

  • cross_attn_head_mask (torch.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使解码器中的交叉注意力模块中的选定头部失效的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部未被 掩码

    • 0 表示头部被 掩码

  • encoder_outputs (tuple(tuple(torch.FloatTensor), optional) — 元组由 (last_hidden_state, optional: hidden_states, optional: attentions) 组成,last_hidden_state 的形状为 (batch_size, sequence_length, hidden_size),是编码器最后一层输出的隐藏状态序列。在解码器的交叉注意力中使用。

  • past_key_values (tuple(tuple(torch.FloatTensor)) of length config.n_layers with each tuple having 4 tensors of shape (batch_size, num_heads, sequence_length - 1, embed_size_per_head)) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。

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

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

  • decoder_inputs_embeds (torch.FloatTensor,形状为(batch_size, target_sequence_length, hidden_size)可选) — 可选地,可以直接传递嵌入表示,而不是传递decoder_input_ids。如果使用past_key_values,则只需输入最后的decoder_inputs_embeds(参见past_key_values)。如果要更好地控制如何将decoder_input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。

    如果decoder_input_idsdecoder_inputs_embeds都未设置,则decoder_inputs_embedsinputs_embeds的值。

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

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

  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回的张量下的hidden_states

  • output_router_logits (bool可选) — 是否返回所有路由器的逻辑。用于计算路由器损失,不应在推理期间返回。

  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。

  • labels (torch.LongTensor,形状为(batch_size,)可选) — 用于计算序列分类/回归损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]中。所有设置为-100的标签都被忽略(掩码),损失仅计算标签在[0, ..., config.vocab_size]中的标签

返回

transformers.modeling_outputs.Seq2SeqMoEOutputtuple(torch.FloatTensor)

一个transformers.modeling_outputs.Seq2SeqMoEOutput或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False,则根据配置(SwitchTransformersConfig)和输入返回不同的元素。

  • loss (torch.FloatTensor,形状为(1,)可选,当提供labels时返回) — 语言建模损失。

  • logits (torch.FloatTensor,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。

  • 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输入)。

  • decoder_hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组。

    解码器在每一层输出的隐藏状态以及初始嵌入输出。

  • decoder_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • decoder_router_logitstuple(torch.FloatTensor)可选,当传递output_router_logits=Trueconfig.add_router_probs=True时返回)— 形状为(batch_size, sequence_length, num_experts)torch.FloatTensor元组(每层一个)。

    解码器模型的路由器 logits,用于计算混合专家模型的辅助损失。

  • cross_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入输出的输出+每层的输出)。

    每层输出的编码器的隐藏状态加上初始嵌入输出。

  • encoder_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • encoder_router_logitstuple(torch.FloatTensor)可选,当传递output_router_logits=Trueconfig.add_router_probs=True时返回)— 形状为(batch_size, sequence_length, num_experts)torch.FloatTensor元组(每层一个)。

    编码器模型的路由器 logits,用于计算混合专家模型的辅助损失和 z_loss。

SwitchTransformersForConditionalGeneration 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, SwitchTransformersForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("google/switch-base-8")
>>> model = SwitchTransformersForConditionalGeneration.from_pretrained("google/switch-base-8")

>>> # training
>>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
>>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="pt").input_ids
>>> outputs = model(input_ids=input_ids, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits

>>> # inference
>>> input_ids = tokenizer(
...     "summarize: studies have shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> outputs = model.generate(input_ids)
>>> # . To, let’s say you have a dog. To summarize:
>>> # Since the model has been trained on MLM, this will output gibberish

SwitchTransformersEncoderModel

class transformers.SwitchTransformersEncoderModel

<来源>

( config: SwitchTransformersConfig )

参数

  • config(SwitchTransformersConfig)— 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

SWITCH_TRANSFORMERS 模型的基本 transformer 输出编码器的原始隐藏状态,没有特定的头部。

SWITCH_TRANSFORMERS 模型是由William FedusBarret ZophNoam ShazeerSwitch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity中提出的。它是一种编码器-解码器 T5 样式的模型,具有稀疏的前馈,代表着专家混合(MoE)架构。

此模型继承自 PreTrainedModel。检查超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None output_router_logits: Optional = True return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.MoEModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为(batch_size, sequence_length)) — 词汇表中输入序列标记的索引。SWITCH_TRANSFORMERS 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    要了解有关如何为预训练准备input_ids的更多信息,请查看 SWITCH_TRANSFORMERS Training。

  • attention_mask (torch.FloatTensor,形状为(batch_size, sequence_length)可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]之间:

    • 1 表示未被masked的标记,

    • 0 表示被masked的标记。

    什么是注意力掩码?

  • head_mask (torch.FloatTensor,形状为(num_heads,)(num_layers, num_heads)可选) — 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]之间:

    • 1 表示头部未被masked

    • 0 表示头部被masked

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

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

  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states

  • output_router_logits (bool, 可选) — 是否返回所有路由器的 logits。它们对于计算路由器损失很有用,在推断期间不应返回。

  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通元组。

返回

transformers.modeling_outputs.MoEModelOutputtuple(torch.FloatTensor)

一个transformers.modeling_outputs.MoEModelOutput或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(SwitchTransformersConfig)和输入而异的各种元素。

  • last_hidden_state (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出 + 每个层的输出)的形状为(batch_size, sequence_length, hidden_size)

    模型在每一层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — torch.FloatTensor元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

  • router_probs (tuple(torch.FloatTensor), optional, 当传递output_router_probs=Trueconfig.add_router_probs=True时返回或当config.output_router_probs=True时返回) — torch.FloatTensor元组(每个层一个)的形状为(batch_size, sequence_length, num_experts)

    由 MoE 路由器计算的原始路由器概率,这些术语用于计算混合专家模型的辅助损失和 z 损失。

SwitchTransformersEncoderModel 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, SwitchTransformersEncoderModel

>>> tokenizer = AutoTokenizer.from_pretrained("google/switch-base-8")
>>> model = SwitchTransformersEncoderModel.from_pretrained("google/switch-base-8")
>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> outputs = model(input_ids=input_ids)
>>> last_hidden_states = outputs.last_hidden_state

T5

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/t5

模型 空间 论文页面

概述

T5 模型在探索统一文本到文本转换器的迁移学习极限中由Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu提出。

论文摘要如下:

迁移学习,即模型首先在数据丰富的任务上进行预训练,然后在下游任务上进行微调,已成为自然语言处理(NLP)中的一种强大技术。迁移学习的有效性催生了多种方法、方法论和实践。在本文中,我们通过引入一个将每个语言问题转换为文本到文本格式的统一框架,探索了 NLP 的迁移学习技术领域。我们的系统研究比较了数十个语言理解任务上的预训练目标、架构、无标签数据集、迁移方法和其他因素。通过将我们的探索见解与规模和我们的新“巨大干净爬取语料库”相结合,我们在许多涵盖摘要、问答、文本分类等方面的基准上取得了最先进的结果。为了促进未来关于 NLP 的迁移学习的工作,我们发布了我们的数据集、预训练模型和代码。

所有检查点都可以在hub上找到。

该模型由thomwolf贡献。原始代码可以在这里找到。

使用提示

  • T5 是一个编码器-解码器模型,预训练于无监督和监督任务的多任务混合中,每个任务都转换为文本到文本格式。通过为每个任务的输入添加不同的前缀,例如,对于翻译:将英语翻译成德语:…,对于摘要:总结:…,T5 可以在各种任务上直接使用。

  • 预训练包括监督和自监督训练。监督训练是在 GLUE 和 SuperGLUE 基准提供的下游任务上进行的(将它们转换为上面解释的文本到文本任务)。

  • 自监督训练使用损坏的标记,随机删除 15%的标记并用单独的标记替换它们(如果有几个连续的标记被标记为删除,则整个组将被替换为单个标记)。编码器的输入是损坏的句子,解码器的输入是原始句子,目标是被删除的标记,由它们的标记标记。

  • T5 使用相对标量嵌入。编码器输入的填充可以在左侧和右侧进行。

  • 查看下面的训练、推理和脚本部分,了解有关使用的所有详细信息。

T5 有不同的尺寸:

基于原始 T5 模型,Google 发布了一些后续作品:

  • T5v1.1:T5v1.1 是 T5 的改进版本,进行了一些架构调整,仅在 C4 上进行了预训练,没有混合监督任务。请参阅 T5v1.1 的文档,可以在这里找到。

  • MT5:mT5 是一个多语言 T5 模型。它在包括 101 种语言的 mC4 语料库上进行了预训练。请参考可以在这里找到的 mT5 的文档。

  • byT5:byT5 是一个在字节序列而不是 SentencePiece 子词标记序列上进行预训练的 T5 模型。请参考可以在这里找到的 byT5 的文档。

  • UL2:UL2 是一个类似 T5 的模型,预训练于各种去噪目标。

  • Flan-T5:Flan 是一种基于提示的预训练方法。Flan-T5 是在 Flan 数据集上训练的 T5 模型,包括:taskmaster2djaym7/wiki_dialogdeepmind/code_contestslambadagsm8kaqua_ratesnliquascqed

  • FLan-UL2:使用“Flan”提示调整和数据集收集对 UL2 模型进行微调。

  • UMT5:UmT5 是一个多语言 T5 模型,训练于一个改进和更新的 mC4 多语言语料库,跨 107 种语言,使用一种新的采样方法 UniMax。请参考可以在这里找到的 mT5 的文档。

训练

T5 是一个编码器-解码器模型,将所有 NLP 问题转换为文本到文本的格式。它使用教师强制进行训练。这意味着在训练时,我们总是需要一个输入序列和一个相应的目标序列。输入序列通过input_ids馈送到模型。目标序列向右移动,即在前面加上一个起始序列标记,并通过decoder_input_ids馈送到解码器。在教师强制风格中,目标序列然后附加 EOS 标记,并对应于labels。在这里,PAD 标记被用作起始序列标记。T5 可以以监督和无监督的方式进行训练/微调。

可以使用 T5ForConditionalGeneration(或 Tensorflow/Flax 变体),它在解码器顶部包含了语言建模头。

  • 无监督去噪训练

在这种设置中,输入序列的片段被所谓的哨兵标记(又名唯一的掩码标记)屏蔽,输出序列由相同的哨兵标记和真实被屏蔽的标记的串联形成。每个哨兵标记代表这个句子的一个唯一的掩码标记,应该以<extra_id_0><extra_id_1>等形式开始,一直到<extra_id_99>。默认情况下,T5Tokenizer 中有 100 个哨兵标记可用。

例如,句子“The cute dog walks in the park”中的“cute dog”和“the”被屏蔽后应该被处理如下:

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration

>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")

>>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
>>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="pt").input_ids

>>> # the forward function automatically creates the correct decoder_input_ids
>>> loss = model(input_ids=input_ids, labels=labels).loss
>>> loss.item()
3.7837

如果您有兴趣在新语料库上预训练 T5,请查看 Examples 目录中的run_t5_mlm_flax.py脚本。

  • 监督训练

在这种设置中,输入序列和输出序列是标准的序列到序列的输入输出映射。假设我们想要为翻译调整模型,例如,我们有一个训练示例:输入序列“The house is wonderful.”和输出序列“Das Haus ist wunderbar.”,那么它们应该被准备为模型如下:

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration

>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")

>>> input_ids = tokenizer("translate English to German: The house is wonderful.", return_tensors="pt").input_ids
>>> labels = tokenizer("Das Haus ist wunderbar.", return_tensors="pt").input_ids

>>> # the forward function automatically creates the correct decoder_input_ids
>>> loss = model(input_ids=input_ids, labels=labels).loss
>>> loss.item()
0.2542

如您所见,为了计算损失,模型只需要 2 个输入:input_ids(编码输入序列的input_ids)和labels(编码目标序列的input_ids)。模型将根据labels自动创建decoder_input_ids,将它们向右移动一个位置并在前面添加config.decoder_start_token_id,对于 T5 来说等于 0(即填充标记的 id)。还要注意任务前缀:我们在编码之前在输入序列前面添加了‘translate English to German: ’。这将有助于提高性能,因为这个任务前缀在 T5 的预训练中使用过。

然而,上面的示例只显示了一个训练示例。在实践中,我们通常批量训练深度学习模型。这意味着我们必须将示例填充/截断到相同的长度。对于编码器-解码器模型,通常定义max_source_lengthmax_target_length,分别确定输入和输出序列的最大长度(否则将被截断)。这些应根据任务仔细设置。

此外,我们必须确保labels的填充标记 ID 不被损失函数考虑。在 PyTorch 和 Tensorflow 中,可以通过用-100 替换它们来实现,-100 是CrossEntropyLossignore_index。在 Flax 中,可以使用decoder_attention_mask来忽略损失中的填充标记(有关详细信息,请参阅Flax 摘要脚本)。我们还将attention_mask作为模型的附加输入传递,以确保忽略输入的填充标记。下面的代码示例说明了所有这些。

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration
>>> import torch

>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")

>>> # the following 2 hyperparameters are task-specific
>>> max_source_length = 512
>>> max_target_length = 128

>>> # Suppose we have the following 2 training examples:
>>> input_sequence_1 = "Welcome to NYC"
>>> output_sequence_1 = "Bienvenue à NYC"

>>> input_sequence_2 = "HuggingFace is a company"
>>> output_sequence_2 = "HuggingFace est une entreprise"

>>> # encode the inputs
>>> task_prefix = "translate English to French: "
>>> input_sequences = [input_sequence_1, input_sequence_2]

>>> encoding = tokenizer(
...     [task_prefix + sequence for sequence in input_sequences],
...     padding="longest",
...     max_length=max_source_length,
...     truncation=True,
...     return_tensors="pt",
... )

>>> input_ids, attention_mask = encoding.input_ids, encoding.attention_mask

>>> # encode the targets
>>> target_encoding = tokenizer(
...     [output_sequence_1, output_sequence_2],
...     padding="longest",
...     max_length=max_target_length,
...     truncation=True,
...     return_tensors="pt",
... )
>>> labels = target_encoding.input_ids

>>> # replace padding token id's of the labels by -100 so it's ignored by the loss
>>> labels[labels == tokenizer.pad_token_id] = -100

>>> # forward pass
>>> loss = model(input_ids=input_ids, attention_mask=attention_mask, labels=labels).loss
>>> loss.item()
0.188

额外的训练提示:

  • 当使用 AdamW 优化器时,T5 模型需要比Trainer中设置的默认学习率略高。通常,对于大多数问题(分类、摘要、翻译、问答、问题生成),1e-4 和 3e-4 效果很好。请注意,T5 是使用 AdaFactor 优化器进行预训练的。

根据这篇论坛帖子,任务前缀在(1)进行多任务训练时(2)您的任务与 T5 预训练混合中使用的监督任务之一类似或相关时很重要(请参阅论文的附录 D,了解使用的任务前缀)。

如果在 TPU 上训练,建议将数据集的所有示例填充到相同的长度,或者使用pad_to_multiple_of来使用少量预定义的桶大小以适应所有示例。在 TPU 上动态填充批次到最长示例不建议,因为它会在训练期间遇到的每个批次形状触发重新编译,从而显著减慢训练速度。只填充到批次中最长的示例会导致在 TPU 上训练非常缓慢。

推理

在推理时,建议使用 generate()。这种方法负责对输入进行编码,并通过交叉注意力层将编码隐藏状态馈送到解码器,自回归地生成解码器输出。查看这篇博文了解使用 Transformers 生成文本的所有细节。还有这篇博文解释了编码器-解码器模型中生成的工作原理。

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration

>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")

>>> input_ids = tokenizer("translate English to German: The house is wonderful.", return_tensors="pt").input_ids
>>> outputs = model.generate(input_ids)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Das Haus ist wunderbar.

请注意,T5 使用pad_token_id作为decoder_start_token_id,因此在生成时如果不使用 generate(),请确保以pad_token_id开头。

上面的示例只显示了一个单独的示例。您也可以进行批量推理,如下所示:

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration

>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")

>>> task_prefix = "translate English to German: "
>>> # use different length sentences to test batching
>>> sentences = ["The house is wonderful.", "I like to work in NYC."]

>>> inputs = tokenizer([task_prefix + sentence for sentence in sentences], return_tensors="pt", padding=True)

>>> output_sequences = model.generate(
...     input_ids=inputs["input_ids"],
...     attention_mask=inputs["attention_mask"],
...     do_sample=False,  # disable sampling to test if batching affects output
... )

>>> print(tokenizer.batch_decode(output_sequences, skip_special_tokens=True))
['Das Haus ist wunderbar.', 'Ich arbeite gerne in NYC.']

由于 T5 已经使用了跨度掩码去噪目标进行训练,因此可以在推理过程中用于预测标记(被掩码的)标记。然后,预测的标记将被放置在标记之间。

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration

>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")

>>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids

>>> sequence_ids = model.generate(input_ids)
>>> sequences = tokenizer.batch_decode(sequence_ids)
>>> sequences
['<pad><extra_id_0> park offers<extra_id_1> the<extra_id_2> park.</s>']

性能

如果希望获得更快的训练和推理性能,请为 NVIDIA GPU 安装NVIDIA APEX,或为 AMD GPU 安装ROCm APEX,然后模型将自动使用apex.normalization.FusedRMSNorm而不是T5LayerNorm。前者使用优化的融合内核,比后者快几倍。

资源

一个官方 Hugging Face 和社区资源(由🌎表示),帮助您开始使用 T5。如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将进行审查!资源应该理想地展示一些新内容,而不是重复现有资源。

文本分类

标记分类

文本生成

摘要

填充掩码

  • FlaxT5ForConditionalGeneration 由这个示例脚本支持,用于训练具有跨度掩码语言模型目标的 T5。该脚本还展示了如何训练 T5 分词器。FlaxT5ForConditionalGeneration 也由这个笔记本支持。

翻译

问答

🚀 部署

T5Config

class transformers.T5Config

<来源>

( vocab_size = 32128 d_model = 512 d_kv = 64 d_ff = 2048 num_layers = 6 num_decoder_layers = None num_heads = 8 relative_attention_num_buckets = 32 relative_attention_max_distance = 128 dropout_rate = 0.1 layer_norm_epsilon = 1e-06 initializer_factor = 1.0 feed_forward_proj = 'relu' is_encoder_decoder = True use_cache = True pad_token_id = 0 eos_token_id = 1 classifier_dropout = 0.0 **kwargs )

参数

  • vocab_size (int, optional, defaults to 32128) — T5 模型的词汇量。定义了在调用 T5Model 或 TFT5Model 时可以表示的不同标记数量。

  • d_model (int, optional, defaults to 512) — 编码器层和池化层的大小。

  • d_kv (int, optional, defaults to 64) — 每个注意力头的键、查询、值投影的大小。投影层的inner_dim将被定义为num_heads * d_kv

  • d_ff (int, optional, defaults to 2048) — 每个T5Block中间的前馈层的大小。

  • num_layers (int, optional, defaults to 6) — Transformer 编码器中隐藏层的数量。

  • num_decoder_layers (int, optional) — Transformer 解码器中隐藏层的数量。如果未设置,将使用与num_layers相同的值。

  • num_heads (int, optional, defaults to 8) — Transformer 编码器中每个注意力层的注意力头数。

  • relative_attention_num_buckets (int, optional, defaults to 32) — 每个注意力层使用的桶数量。

  • relative_attention_max_distance (int, optional, defaults to 128) — 较长序列的最大距离,用于桶分离。

  • dropout_rate (float, optional, defaults to 0.1) — 所有 dropout 层的比率。

  • classifier_dropout (float, optional, defaults to 0.0) — 分类器的 dropout 比率。

  • layer_norm_eps (float, optional, defaults to 1e-6) — 层归一化层使用的 epsilon。

  • initializer_factor (float, optional, defaults to 1) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。

  • feed_forward_proj (string, optional, defaults to "relu") — 要使用的前馈层类型。应为"relu""gated-gelu"之一。T5v1.1 使用"gated-gelu"前馈投影。原始 T5 使用"relu"

  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。

这是用于存储 T5Model 或 TFT5Model 配置的配置类。它用于根据指定的参数实例化 T5 模型,定义模型架构。使用默认值实例化配置将产生类似于 T5 t5-small架构的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。

T5Tokenizer

class transformers.T5Tokenizer

<来源>

( vocab_file eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' extra_ids = 100 additional_special_tokens = None sp_model_kwargs: Optional = None legacy = None **kwargs )

参数

  • vocab_filestr)—包含实例化分词器所需词汇表的SentencePiece文件(通常具有.spm扩展名)。

  • eos_tokenstr可选,默认为"</s>")—序列结束标记。

    构建序列时使用特殊标记,这不是用于序列结束的标记。使用的标记是sep_token

  • unk_tokenstr可选,默认为"<unk>")—未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。

  • pad_tokenstr可选,默认为"<pad>")—用于填充的标记,例如在批处理不同长度的序列时使用。

  • extra_idsint可选,默认为 100)—添加到词汇表中用作哨兵的额外 ID 数量。这些标记可通过调用 get_sentinel_tokens 方法访问为“id{%d}>”,其中”{%d}”是 0 到 extra_ids-1 之间的数字。这些标记可以通过调用 get_sentinel_token_ids 方法检索,额外的特殊标记(List[str]可选):分词器使用的其他特殊标记。

  • sp_model_kwargsdict可选)—将传递给SentencePieceProcessor.__init__()方法。SentencePiece 的 Python 包装器可用于设置:

    • enable_sampling:启用子词正则化。

    • nbest_size:unigram 的采样参数。对于 BPE-Dropout 无效。

      • nbest_size = {0,1}:不执行采样。

      • nbest_size > 1:从 nbest_size 结果中采样。

      • nbest_size < 0:假设 nbest_size 是无限的,并使用前向过滤和后向采样算法从所有假设(格)中采样。

    • alpha:unigram 采样的平滑参数,以及 BPE-dropout 的合并操作的丢弃概率。

  • legacybool可选)—是否应使用分词器的legacy行为。Legacy 是在#24622 和#25224 合并之前,包括修复正确处理出现在特殊标记之后的标记的内容。一个简单的例子:

    • legacy=True

构建一个 T5 分词器。基于SentencePiece

此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

<来源>

( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])—要添加特殊标记的 ID 列表。

  • token_ids_1List[int]可选)—用于序列对的可选第二个 ID 列表。

返回

List[int]

具有适当特殊标记的 input IDs 列表。

通过连接和添加特殊标记从序列或序列对构建用于序列分类任务的模型输入。序列的格式如下:

  • 单个序列:X </s>

  • 序列对:A </s> B </s>

get_special_tokens_mask

< source >

( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])— ID 列表。

  • token_ids_1List[int]可选)— 可选的第二个 ID 列表,用于序列对。

  • already_has_special_tokensbool可选,默认为False)— 标记列表是否已经格式化为模型的特殊标记。

返回

List[int]

一个整数列表,范围为[0, 1]:1 表示特殊标记,0 表示序列标记。

从没有添加特殊标记的标记列表中检索序列 ID。当使用分词器的prepare_for_model方法添加特殊标记时,将调用此方法。

create_token_type_ids_from_sequences

< source >

( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])— ID 列表。

  • token_ids_1List[int]可选)— 可选的第二个 ID 列表,用于序列对。

返回

List[int]

零列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。T5 不使用标记类型 ID,因此返回一个零列表。

save_vocabulary

< source >

( save_directory: str filename_prefix: Optional = None )

T5TokenizerFast

class transformers.T5TokenizerFast

< source >

( vocab_file = None tokenizer_file = None eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' extra_ids = 100 additional_special_tokens = None **kwargs )

参数

  • vocab_filestr)— 包含实例化分词器所需词汇的SentencePiece文件(通常具有.spm扩展名)。

  • eos_tokenstr可选,默认为"</s>")— 序列结束标记。

    在构建使用特殊标记的序列时,这不是用于序列结束的标记。使用的标记是sep_token

  • unk_tokenstr可选,默认为"<unk>")— 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。

  • pad_tokenstr可选,默认为"<pad>")— 用于填充的标记,例如在批处理不同长度的序列时使用。

  • extra_idsint可选,默认为 100)— 添加一些额外的 ID 到词汇表中,用作哨兵。这些标记可以作为“id{%d}>”访问,其中”{%d}”是 0 到 extra_ids-1 之间的数字。可以通过调用 get_sentinel_tokens 方法检索这些标记,通过调用 get_sentinel_token_ids 方法获取标记 ID

  • additional_special_tokensList[str]可选)— 分词器使用的额外特殊标记。

构建一个“快速”T5 分词器(由 HuggingFace 的tokenizers库支持)。基于Unigram

这个分词器继承自 PreTrainedTokenizerFast,其中包含大部分主要方法。用户应参考这个超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

< source >

( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])— 将添加特殊标记的 ID 列表。

  • token_ids_1List[int]可选)— 可选的第二个 ID 列表,用于序列对。

返回

List[int]

具有适当特殊标记的 input IDs 列表。

通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。序列的格式如下:

  • 单个序列:X </s>

  • 序列对:A </s> B </s>

create_token_type_ids_from_sequences

<来源>

( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])- ID 列表。

  • token_ids_1List[int]可选)- 序列对的第二个 ID 列表。

返回

List[int]

零的列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。T5 不使用 token type ids,因此返回一个零的列表。

PytorchHide Pytorch 内容

T5Model

class transformers.T5Model

<来源>

( config: T5Config )

参数

  • config(T5Config)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

裸的 T5 模型转换器输出原始隐藏状态,没有特定的头部。

T5 模型是由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本转换器的迁移学习极限中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器转换器。

这个模型继承自 PreTrainedModel。查看超类文档,了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

这个模型也是 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor)- 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()获取详细信息。

    什么是 input IDs?

    了解如何为预训练准备input_ids,请查看 T5 Training。

  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)- 避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]中:

    • 对于未被masked的标记为 1。

    • 对于被masked的标记为 0。

    什么是注意力掩码?

  • decoder_input_ids(形状为(batch_size, target_sequence_length)torch.LongTensor可选)- 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    T5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用了past_key_values,可以选择仅输入最后一个decoder_input_ids(参见past_key_values)。

    要了解更多关于如何为预训练准备decoder_input_ids的信息,请查看 T5 Training。

  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), optional) — 默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果掩码也将默认使用。

  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 编码器中自注意力模块中选择性屏蔽头部的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部未被屏蔽,

    • 0 表示头部被屏蔽。

  • decoder_head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 解码器中自注意力模块中选择性屏蔽头部的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部未被屏蔽,

    • 0 表示头部被屏蔽。

  • cross_attn_head_mask (torch.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 解码器中交叉注意力模块中选择性屏蔽头部的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部未被屏蔽,

    • 0 表示头部被屏蔽。

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

  • past_key_values (tuple(tuple(torch.FloatTensor)) of length config.n_layers with each tuple having 4 tensors of shape (batch_size, num_heads, sequence_length - 1, embed_size_per_head)) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。

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

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 可选地,可以直接传递嵌入表示,而不是传递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_embedsinputs_embeds的值。

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

  • output_attentionsbool可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions

  • output_hidden_statesbool可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states

  • return_dictbool可选)- 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_outputs.Seq2SeqModelOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqModelOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包括根据配置(T5Config)和输入的各种元素。

  • last_hidden_state(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor)- 模型解码器最后一层的隐藏状态序列。

    如果仅使用past_key_values,则输出形状为(batch_size, 1, hidden_size)的序列的最后一个隐藏状态。

  • past_key_valuestuple(tuple(torch.FloatTensor))可选,当传递use_cache=Trueconfig.use_cache=True时返回)- 长度为config.n_layers的元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)的张量。

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

  • decoder_hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)的每层的torch.FloatTensor元组。

    解码器在每一层输出的隐藏状态以及可选的初始嵌入输出。

  • decoder_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)的每层的torch.FloatTensor元组。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)的每层的torch.FloatTensor元组。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)- 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)的每层的torch.FloatTensor元组。

    每层编码器的隐藏状态以及可选的初始嵌入输出。

  • encoder_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后使用,用于计算自注意力头中的加权平均值。

T5Model 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会负责运行前处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, T5Model

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = T5Model.from_pretrained("t5-small")

>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids  # Batch size 1

>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for T5Model.
>>> # This is not needed for torch's T5ForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)

>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state

T5ForConditionalGeneration

class transformers.T5ForConditionalGeneration

<来源>

( config: T5Config )

参数

  • config(T5Config)— 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

带有语言建模头部的 T5 模型。

T5 模型是由 Colin Raffel,Noam Shazeer,Adam Roberts,Katherine Lee,Sharan Narang,Michael Matena,Yanqi Zhou,Wei Li,Peter J. Liu 在探索统一文本到文本变换器的迁移学习极限中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器变换器。

这个模型继承自 PreTrainedModel。查看超类文档以了解库实现的通用方法(如下载或保存,调整输入嵌入大小,修剪头等)。

这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqLMOutput or tuple(torch.FloatTensor)

参数

  • input_idstorch.LongTensor,形状为(batch_size, sequence_length))— 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()以获取详细信息。

    什么是输入 ID?

    了解如何为预训练准备input_ids,请查看 T5 训练。

  • attention_masktorch.FloatTensor,形状为(batch_size, sequence_length)可选)— 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]之间:

    • 对于未被masked的标记为 1,

    • 对于被masked的标记为 0。

    什么是注意力掩码?

  • decoder_input_idstorch.LongTensor,形状为(batch_size, target_sequence_length)可选)— 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    T5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用了past_key_values,则可能只需输入最后的decoder_input_ids(参见past_key_values)。

    有关如何为预训练准备decoder_input_ids的更多信息,请查看 T5 Training。

  • decoder_attention_mask(形状为(batch_size, target_sequence_length)torch.BoolTensor可选)- 默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果掩码也将默认使用。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于将编码器中自注意力模块的选定头部置零的掩码。掩码值在[0, 1]中选择:

    • 1 表示头部未被masked

    • 0 表示头部被masked

  • decoder_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于将解码器中自注意力模块的选定头部置零的掩码。掩码值在[0, 1]中选择:

    • 1 表示头部未被masked

    • 0 表示头部被masked

  • cross_attn_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.Tensor可选)- 用于将解码器中交叉注意力模块的选定头部置零的掩码。掩码值在[0, 1]中选择:

    • 1 表示头部未被masked

    • 0 表示头部被masked

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

  • past_key_values(长度为config.n_layers的元组(元组(torch.FloatTensor)),每个元组包含 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)的张量)- 包含注意力块的预计算键和值隐藏状态。可用于加速解码。

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

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

  • decoder_inputs_embedstorch.FloatTensor,形状为(batch_size, target_sequence_length, hidden_size)可选)- 可选地,您可以选择直接传递嵌入表示,而不是传递decoder_input_ids。如果使用了past_key_values,则可能只需输入最后的decoder_inputs_embeds(参见past_key_values)。如果您希望更多地控制如何将decoder_input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。

    如果decoder_input_idsdecoder_inputs_embeds都未设置,则decoder_inputs_embedsinputs_embeds的值。

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

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

  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states

  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。

  • labels (torch.LongTensor of shape (batch_size,)可选) — 用于计算序列分类/回归损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]中。所有标签设置为-100都将被忽略(掩盖),损失仅计算标签在[0, ..., config.vocab_size]中的情况。

返回

transformers.modeling_outputs.Seq2SeqLMOutput 或tuple(torch.FloatTensor)

transformers.modeling_outputs.Seq2SeqLMOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包括各种元素,具体取决于配置(T5Config)和输入。

  • loss (torch.FloatTensor of shape (1,)可选,当提供labels时返回) — 语言建模损失。

  • logits (torch.FloatTensor of shape (batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。

  • 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输入)。

  • decoder_hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入输出的输出+每层的输出)。

    每层解码器的隐藏状态加上初始嵌入输出。

  • decoder_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的注意力权重,在注意力 SoftMax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 SoftMax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size)可选) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入的输出,如果模型有一个嵌入层,+ 一个用于每一层的输出)。

    编码器在每一层输出的隐藏状态加上初始嵌入输出。

  • encoder_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

T5ForConditionalGeneration 的前向方法覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, T5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")

>>> # training
>>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
>>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="pt").input_ids
>>> outputs = model(input_ids=input_ids, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits

>>> # inference
>>> input_ids = tokenizer(
...     "summarize: studies have shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> outputs = model.generate(input_ids)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
>>> # studies have shown that owning a dog is good for you.

T5EncoderModel

class transformers.T5EncoderModel

<来源>

( config: T5Config )

参数

  • config(T5Config)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

裸的 T5 模型变换器输出编码器的原始隐藏状态,没有特定的头部在顶部。

T5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本转换的迁移学习极限中提出。它是一个在文本到文本去噪生成设置中预训练的编码器解码器变换器。

这个模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以了解所有与一般用法和行为相关的事项。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor)— 输入序列标记在词汇表中的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。详细信息请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    要了解有关如何为预训练准备input_ids的更多信息,请查看 T5 Training。

  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]中选择:

    • 对于未被masked的标记为 1,

    • 对于被masked的标记为 0。

    什么是注意力掩码?

  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]中选择:

    • 对于未被masked的头部为 1,

    • 对于被masked的头部为 0。

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

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

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states

  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_outputs.BaseModelOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含各种元素,取决于配置(T5Config)和输入。

  • last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组。

    模型在每一层的输出的隐藏状态加上可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组。

    在自注意力头中使用注意力 softmax 后的注意力权重,用于计算加权平均值。

T5EncoderModel 的前向方法,覆盖__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此之后调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, T5EncoderModel

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = T5EncoderModel.from_pretrained("t5-small")
>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> outputs = model(input_ids=input_ids)
>>> last_hidden_states = outputs.last_hidden_state

T5ForSequenceClassification

class transformers.T5ForSequenceClassification

< source >

( config: T5Config )

参数

  • config(T5Config)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

T5 模型在顶部带有序列分类/头(汇聚输出的线性层),例如用于 GLUE 任务。

T5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本转换的迁移学习极限中提出。它是一个在文本到文本去噪生成设置中预训练的编码器解码器变压器。

此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以了解与一般使用和行为相关的所有事项。

forward

<来源>

( input_ids: LongTensor = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor)- 词汇表中输入序列标记的索引。T5 是一个带有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    索引可以使用 AutoTokenizer 获得。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是输入 ID?

    要了解有关如何为预训练准备input_ids的更多信息,请查看 T5 训练。

  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]中:

    • 1 用于未被“掩码”掉的标记,

    • 0 用于被“掩码”掉的标记。

    什么是注意力掩码?

  • decoder_input_ids(形状为(batch_size, target_sequence_length)torch.LongTensor可选)- 词汇表中解码器输入序列标记的索引。

    索引可以使用 AutoTokenizer 获得。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    T5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,则可选择仅输入最后的decoder_input_ids(请参阅past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 T5 训练。

  • decoder_attention_mask(形状为(batch_size, target_sequence_length)torch.BoolTensor可选)- 默认行为:生成一个忽略decoder_input_ids中填充标记的张量。因果掩码也将默认使用。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于在编码器中使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]

    • 1 表示头部未被masked

    • 0 表示头部被masked

  • decoder_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于在解码器中使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]

    • 1 表示头部未被masked

    • 0 表示头部被masked

  • cross_attn_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.Tensor可选)- 用于在解码器中使交叉注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]

    • 1 表示头部未被masked

    • 0 表示头部被masked

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

  • past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)的张量)- 包含注意力块的预计算键和值隐藏状态。可用于加速解码。

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

  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)- 可选地,您可以直接传递嵌入表示,而不是传递input_ids。如果您希望更多地控制如何将input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。

  • decoder_inputs_embeds(形状为(batch_size, target_sequence_length, hidden_size)torch.FloatTensor可选)- 可选地,您可以直接传递嵌入表示,而不是传递decoder_input_ids。如果使用了past_key_values,可选地只需输入最后的decoder_inputs_embeds(参见past_key_values)。如果您希望更多地控制如何将decoder_input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。

    如果decoder_input_idsdecoder_inputs_embeds都未设置,则decoder_inputs_embedsinputs_embeds的值。

  • use_cachebool可选)- 如果设置为True,则返回past_key_values键值状态,并可用于加速解码(参见past_key_values)。

  • output_attentionsbool可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions

  • output_hidden_statesbool可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states

  • return_dictbool可选)- 是否返回 ModelOutput 而不是普通元组。

  • labels(形状为(batch_size,)torch.LongTensor可选)- 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]中。如果config.num_labels > 1,则计算分类损失(交叉熵)。

返回

transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含根据配置(T5Config)和输入的不同元素。

  • loss (torch.FloatTensor,形状为(1,)可选,当提供label时返回) — 分类(如果config.num_labels==1则为回归)损失。

  • logits (torch.FloatTensor,形状为(batch_size, config.num_labels)) — SoftMax 之前的分类(如果config.num_labels==1则为回归)得分。

  • 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输入)。

  • decoder_hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入层的输出加上每层的输出)。

    解码器在每一层的输出隐藏状态加上初始嵌入输出。

  • decoder_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入层的输出加上每层的输出)。

    编码器在每一层的输出隐藏状态加上初始嵌入输出。

  • encoder_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

T5ForSequenceClassification 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module 实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。

T5ForQuestionAnswering

class transformers.T5ForQuestionAnswering

< source >

( config: T5Config )

参数

  • config (T5Config) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。

T5 模型在顶部具有用于提取式问答任务的跨度分类头,如 SQuAD(在隐藏状态输出的顶部进行线性层计算 span start logitsspan end logits)。

T5 模型在 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer 一文中由 Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu 提出。它是一个在文本到文本去噪生成设置中预训练的编码器解码器变换器。

此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以了解所有与一般用法和行为相关的事项。

forward

< source >

( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None start_positions: Optional = None end_positions: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

    要了解如何为预训练准备 input_ids,请查看 T5 Training。

  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在 [0, 1] 之间:

    • 对于未被掩码的标记为 1

    • 对于被掩码的标记为 0

    什么是注意力掩码?

  • decoder_input_ids (torch.LongTensor of shape (batch_size, target_sequence_length), optional) — 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    T5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,可以选择仅输入最后一个decoder_input_ids(参见past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 T5 Training。

  • decoder_attention_mask (torch.BoolTensor,形状为(batch_size, target_sequence_length)optional) — 默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果掩码也将默认使用。

  • head_mask (torch.FloatTensor,形状为(num_heads,)(num_layers, num_heads)optional) — 用于使编码器中的自注意力模块中的选定头部失效的掩码。选择的掩码值在[0, 1]中:

    • 1 表示头部未被masked

    • 0 表示头部被masked

  • decoder_head_mask (torch.FloatTensor,形状为(num_heads,)(num_layers, num_heads)optional) — 用于使解码器中的自注意力模块中的选定头部失效的掩码。选择的掩码值在[0, 1]中:

    • 1 表示头部未被masked

    • 0 表示头部被masked

  • cross_attn_head_mask (torch.Tensor,形状为(num_heads,)(num_layers, num_heads)optional) — 用于使解码器中的交叉注意力模块中的选定头部失效的掩码。选择的掩码值在[0, 1]中:

    • 1 表示头部未被masked

    • 0 表示头部被masked

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

  • past_key_values (tuple(tuple(torch.FloatTensor)),长度为config.n_layers,每个元组包含形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)的 4 个张量) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。

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

  • inputs_embeds (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)optional) — 可选地,可以选择直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。

  • decoder_inputs_embeds (torch.FloatTensor,形状为(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_embedsinputs_embeds的值。

  • use_cache (bool, optional) — 如果设置为True,则返回past_key_values键值状态,可以用于加速解码(参见past_key_values)。

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

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量中的hidden_states

  • return_dictbool可选)- 是否返回一个 ModelOutput 而不是一个普通元组。

  • start_positions(形状为(batch_size,)torch.LongTensor可选)- 用于计算标记跨度的起始位置(索引)的标签。位置被夹在序列的长度(sequence_length)内。序列外的位置不会被考虑在内以计算损失。

  • end_positions(形状为(batch_size,)torch.LongTensor可选)- 用于计算标记跨度的结束位置(索引)的标签。位置被夹在序列的长度(sequence_length)内。序列外的位置不会被考虑在内以计算损失。

返回

transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(T5Config)和输入而异的各种元素。

  • loss(形状为(1,)torch.FloatTensor可选,当提供labels时返回)- 总跨度提取损失是起始和结束位置的交叉熵之和。

  • start_logits(形状为(batch_size, sequence_length)torch.FloatTensor)- 跨度起始得分(SoftMax 之前)。

  • end_logits(形状为(batch_size, sequence_length)torch.FloatTensor)- 跨度结束得分(SoftMax 之前)。

  • past_key_valuestuple(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输入)。

  • decoder_hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出+每层的输出)。

    解码器在每一层输出的隐藏状态加上初始嵌入输出。

  • decoder_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层的输出,+ 每层的输出)。

    每层编码器的隐藏状态加上初始嵌入输出。

  • encoder_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

T5ForQuestionAnswering 的前向方法,覆盖了__call__特殊方法。

尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

TensorFlow 隐藏 TensorFlow 内容

TFT5Model

class transformers.TFT5Model

<来源>

( config *inputs **kwargs )

参数

  • config(T5Config)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

裸 T5 模型转换器输出原始隐藏状态,没有特定的头部。

T5 模型是由 Colin Raffel,Noam Shazeer,Adam Roberts,Katherine Lee,Sharan Narang,Michael Matena,Yanqi Zhou,Wei Li,Peter J. Liu 在探索统一文本到文本转换器的迁移学习极限中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器转换器。

此模型继承自 TFPreTrainedModel。查看超类文档,了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档,了解与一般用法和行为相关的所有事项。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或者

  • 将所有输入作为列表、元组或字典的第一个位置参数。

支持第二种格式的原因是 Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于这种支持,当使用model.fit()等方法时,应该可以“正常工作” - 只需以model.fit()支持的任何格式传递输入和标签即可!但是,如果您想在 Keras 方法之外使用第二种格式,例如在使用 KerasFunctional API 创建自己的层或模型时,有三种可能性可以用来收集第一个位置参数中的所有输入张量:

  • 只有input_ids的单个张量,没有其他内容:model(input_ids)

  • 一个长度可变的列表,其中包含按照文档字符串中给定的顺序的一个或多个输入张量:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])

  • 一个包含与文档字符串中给定的输入名称相关联的一个或多个输入张量的字典:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心任何这些内容,因为您可以像对待其他 Python 函数一样传递输入!

call

<来源>

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None decoder_input_ids: np.ndarray | tf.Tensor | None = None decoder_attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None decoder_head_mask: np.ndarray | tf.Tensor | None = None encoder_outputs: np.ndarray | tf.Tensor | None = None past_key_values: Optional[Tuple[Tuple[Union[np.ndarray, tf.Tensor]]]] = None inputs_embeds: np.ndarray | tf.Tensor | None = None decoder_inputs_embeds: np.ndarray | tf.Tensor | None = None use_cache: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFSeq2SeqModelOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)tf.Tensor)- 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧或左侧填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。

    什么是输入 ID?

    了解如何为预训练准备inputs,请查看 T5 Training。

  • decoder_input_ids(形状为(batch_size, target_sequence_length)tf.Tensor可选)- 用于序列到序列训练。T5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,则可能只需输入最后的decoder_input_ids(请参阅past_key_values)。

    了解如何为预训练准备decoder_input_ids,请查看 T5 Training。

  • attention_mask(形状为(batch_size, sequence_length)tf.Tensor可选)- 用于避免在填充标记索引上执行注意力。选择的掩码值在[0, 1]中:

    • 1 表示未被屏蔽的标记,

    • 0 表示被屏蔽的标记。

    什么是注意力掩码?

  • decoder_attention_mask(形状为(batch_size, target_sequence_length)tf.Tensor可选)- 默认行为:生成一个忽略decoder_input_ids中填充标记的张量。因果掩码也将默认使用。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)tf.Tensor可选)- 用于在编码器中使自注意力模块中选择的头部失效的掩码。选择的掩码值在[0, 1]中:

    • 1 表示头部未被屏蔽,

    • 0 表示头部被屏蔽。

  • decoder_head_mask(形状为(num_heads,)(num_layers, num_heads)tf.Tensor可选)- 用于在解码器中使自注意力模块中选择的头部失效的掩码。选择的掩码值在[0, 1]中:

    • 1 表示头部未被屏蔽,

    • 0 表示头部被屏蔽。

  • encoder_outputstuple(tuple(tf.FloatTensor)可选)- 元组包括(last_hidden_state可选hidden_states可选attentionslast_hidden_state的形状为(batch_size, sequence_length, hidden_size),是编码器最后一层的隐藏状态序列。用于解码器的交叉注意力。

  • past_key_values(长度为config.n_layerstuple(tuple(tf.Tensor)),每个元组包含 4 个形状为(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

  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)tf.Tensor可选) — 可选地,您可以选择直接传递嵌入表示而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。

  • decoder_inputs_embeds(形状为(batch_size, target_sequence_length, hidden_size)tf.Tensor可选) — 可选地,您可以选择直接传递嵌入表示而不是传递decoder_input_ids。如果使用past_key_values,则只需输入最后一个decoder_inputs_embeds(参见past_key_values)。如果您想要更多控制如何将decoder_input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。

    如果decoder_input_idsdecoder_inputs_embeds都未设置,则decoder_inputs_embedsinputs_embeds的值。

  • use_cachebool可选,默认为True) — 如果设置为True,则返回past_key_values键值状态,并可用于加速解码(请参见past_key_values)。

  • output_attentionsbool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。

  • output_hidden_statesbool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。

  • return_dictbool可选) — 是否返回一个 ModelOutput 而不是一个普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。

  • trainingbool可选,默认为False) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。

返回

transformers.modeling_tf_outputs.TFSeq2SeqModelOutput 或tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFSeq2SeqModelOutput 或一个tf.Tensor元组(如果传递return_dict=False或当config.return_dict=False时)包括根据配置(T5Config)和输入的各种元素。

  • last_hidden_state(形状为(batch_size, sequence_length, hidden_size)tf.Tensor) — 模型解码器最后一层的隐藏状态序列。

    如果仅使用past_key_values,则输出形状为(batch_size, 1, hidden_size)的序列的最后一个隐藏状态。

  • past_key_valuesList[tf.Tensor]可选,当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layerstf.Tensor列表,每个张量的形状为(2, batch_size, num_heads, sequence_length, embed_size_per_head)

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

  • decoder_hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)tf.Tensor 元组(一个用于嵌入输出,一个用于每一层的输出)。

    解码器在每一层输出的隐藏状态加上初始嵌入输出。

  • decoder_attentions (tuple(tf.Tensor), 可选, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)tf.Tensor 元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后使用,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(tf.Tensor), 可选, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)tf.Tensor 元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后使用,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (tf.Tensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)tf.Tensor 元组(一个用于嵌入输出,一个用于每一层的输出)。

    编码器在每一层输出的隐藏状态加上初始嵌入输出。

  • encoder_attentions (tuple(tf.Tensor), 可选, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)tf.Tensor 元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后使用,用于计算自注意力头中的加权平均值。

TFT5Model 的前向方法,覆盖了 __call__ 特殊方法。

虽然前向传递的方法需要在此函数内定义,但应该在此之后调用 Module 实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, TFT5Model

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = TFT5Model.from_pretrained("t5-small")

>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="tf"
... ).input_ids  # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="tf").input_ids  # Batch size 1

>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for T5Model.
>>> # This is not needed for torch's T5ForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)

>>> # forward pass
>>> outputs = model(input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state

TFT5ForConditionalGeneration

transformers.TFT5ForConditionalGeneration

<来源>

( config *inputs **kwargs )

参数

  • config (T5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。

带有顶部 语言建模 头的 T5 模型。

T5 模型由 Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu 在 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer 中提出。它是一个在文本到文本去噪生成设置中预训练的编码器解码器 transformer。

该模型继承自 TFPreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取有关一般用法和行为的所有相关信息。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(如 PyTorch 模型),

  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是,Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于有了这种支持,当使用model.fit()等方法时,应该可以“正常工作” - 只需以model.fit()支持的任何格式传递输入和标签即可!但是,如果您想在 Keras 方法之外使用第二种格式,比如在使用 Keras 的Functional API 创建自己的层或模型时,有三种可能性可以用来收集所有输入张量放在第一个位置参数中:

  • 一个仅包含input_ids的单个张量,没有其他内容:model(input_ids)

  • 一个长度不定的列表,其中包含一个或多个按照文档字符串中给定顺序的输入张量:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])

  • 一个字典,其中包含一个或多个与文档字符串中给定输入名称相关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,在使用子类化创建模型和层时,您无需担心任何问题,因为您可以像对待任何其他 Python 函数一样传递输入!

call

<来源>

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None decoder_input_ids: np.ndarray | tf.Tensor | None = None decoder_attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None decoder_head_mask: np.ndarray | tf.Tensor | None = None encoder_outputs: np.ndarray | tf.Tensor | None = None past_key_values: Optional[Tuple[Tuple[Union[np.ndarray, tf.Tensor]]]] = None inputs_embeds: np.ndarray | tf.Tensor | None = None decoder_inputs_embeds: np.ndarray | tf.Tensor | None = None labels: np.ndarray | tf.Tensor | None = None use_cache: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFSeq2SeqLMOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)tf.Tensor) - 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧或左侧填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。

    什么是输入 ID?

    要了解有关如何为预训练准备inputs的更多信息,请查看 T5 Training。

  • decoder_input_ids(形状为(batch_size, target_sequence_length)tf.Tensor可选) - 用于序列到序列训练。T5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用了past_key_values,则只需选择最后的decoder_input_ids输入(参见past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 T5 Training。

  • attention_mask(形状为(batch_size, sequence_length)tf.Tensor可选) - 用于避免在填充标记索引上执行注意力。掩码值在[0, 1]中选择:

    • 对于未被“掩码”的标记,将其设为 1,

    • 对于被“掩码”的标记,将其设为 0。

    什么是注意力掩码?

  • decoder_attention_mask(形状为(batch_size, target_sequence_length)tf.Tensor可选) - 默认行为:生成一个忽略decoder_input_ids中填充标记的张量。因果掩码也将默认使用。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)tf.Tensor可选) - 用于在编码器的自注意力模块中使选定头部失效的掩码。掩码值在[0, 1]中选择:

    • 1 表示头部未被“掩码”,

    • 0 表示头部被“掩码”。

  • decoder_head_mask (tf.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于将解码器中自注意力模块的选定头部置零的掩码。掩码值选定在 [0, 1] 范围内:

    • 1 表示头部未被遮蔽,

    • 0 表示头部被遮蔽。

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

  • past_key_values (tuple(tuple(tf.Tensor)),长度为 config.n_layers,每个元组有 4 个形状为 (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

  • inputs_embeds (tf.Tensor of shape (batch_size, sequence_length, hidden_size), optional) — 可选地,您可以直接传递嵌入表示,而不是传递 input_ids。如果您想要更多控制权,以便将 input_ids 索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。

  • decoder_inputs_embeds (tf.Tensor 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_embedsinputs_embeds 的值。

  • use_cache (bool, optional, 默认为 True) — 如果设置为 True,将返回 past_key_values 键值状态,可用于加速解码(参见 past_key_values)。

  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的 attentions。此参数仅可在急切模式下使用,在图模式下,将使用配置中的值。

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的 hidden_states。此参数仅可在急切模式下使用,在图模式下,将使用配置中的值。

  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下,该值将始终设置为 True。

  • training (bool, optional, 默认为 False) — 是否在训练模式下使用模型(某些模块,如丢弃模块,在训练和评估之间具有不同的行为)。

  • labels (tf.Tensor of shape (batch_size, sequence_length), optional) — 用于计算交叉熵分类损失的标签。索引应在 [0, ..., config.vocab_size - 1] 范围内。

返回

transformers.modeling_tf_outputs.TFSeq2SeqLMOutput 或 tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFSeq2SeqLMOutput 或一个tf.Tensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(T5Config)和输入的各种元素。

  • loss (tf.Tensor of shape (n,), optional, 当提供labels时返回,其中 n 是未屏蔽标签的数量) — 语言建模损失。

  • logits (tf.Tensor of shape (batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。

  • past_key_values (List[tf.Tensor], optional, 当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layerstf.Tensor列表,每个张量的形状为(2, batch_size, num_heads, sequence_length, embed_size_per_head)

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

  • decoder_hidden_states (tuple(tf.Tensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入输出,一个用于每一层的输出)。

    解码器每一层的隐藏状态以及初始嵌入输出。

  • decoder_attentions (tuple(tf.Tensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。

    解码器的注意力权重,在注意力 SoftMax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(tf.Tensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 SoftMax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (tf.Tensor of shape (batch_size, sequence_length, hidden_size), optional) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(tf.Tensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入输出,一个用于每一层的输出)。

    编码器每一层的隐藏状态以及初始嵌入输出。

  • encoder_attentions (tuple(tf.Tensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。

    编码器的注意力权重,在注意力 SoftMax 之后,用于计算自注意力头中的加权平均值。

TFT5ForConditionalGeneration 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, TFT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = TFT5ForConditionalGeneration.from_pretrained("t5-small")

>>> # training
>>> inputs = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="tf").input_ids
>>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="tf").input_ids
>>> outputs = model(inputs, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits

>>> # inference
>>> inputs = tokenizer(
...     "summarize: studies have shown that owning a dog is good for you", return_tensors="tf"
... ).input_ids  # Batch size 1
>>> outputs = model.generate(inputs)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
>>> # studies have shown that owning a dog is good for you

TFT5EncoderModel

class transformers.TFT5EncoderModel

<来源>

( config *inputs **kwargs )

参数

  • config(T5Config) - 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

裸 T5 模型变换器输出编码器的原始隐藏状态,而没有特定的头部。

T5 模型是由 Colin Raffel,Noam Shazeer,Adam Roberts,Katherine Lee,Sharan Narang,Michael Matena,Yanqi Zhou,Wei Li,Peter J. Liu 在探索具有统一文本到文本变换器的迁移学习极限中提出的。它是一个在文本到文本去噪生成设置中进行预训练的编码器解码器变换器。

此模型继承自 TFPreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有内容。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或

  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

第二种格式得到支持的原因是,当将输入传递给模型和层时,Keras 方法更喜欢这种格式。由于这种支持,在使用诸如model.fit()之类的方法时,对您来说应该“只需工作” - 只需以model.fit()支持的任何格式传递您的输入和标签!然而,如果您想在 Keras 方法之外使用第二种格式,比如在使用 KerasFunctional API 创建自己的层或模型时,有三种可能性可以用来收集所有输入张量在第一个位置参数中:

  • 一个只有input_ids的单个张量,没有其他内容:model(input_ids)

  • 一个长度不同的列表,其中包含一个或多个输入张量,按照文档字符串中给定的顺序:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])

  • 一个字典,其中包含一个或多个与文档字符串中给定的输入名称相关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您不需要担心这些问题,因为您可以像将输入传递给任何其他 Python 函数一样传递输入!

call

<来源>

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFBaseModelOutput or tuple(tf.Tensor)

参数

  • inputs(形状为(batch_size, sequence_length)tf.Tensor) - 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧或左侧填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。

    要了解有关如何为预训练准备inputs的更多信息,请查看 T5 Training。

  • attention_mask (tf.Tensor,形状为(batch_size, sequence_length)optional) — 避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]中选择:

    • 1 表示未被masked的标记,

    • 0 表示被masked的标记。

    什么是注意力掩码?

  • inputs_embeds (tf.Tensor,形状为(batch_size, sequence_length, hidden_size)optional) — 可选地,您可以选择直接传递嵌入表示而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。

  • head_mask (tf.Tensor,形状为(num_heads,)(num_layers, num_heads)optional) — 用于使自注意力模块中的选定头部失效的掩码。掩码值在[0, 1]中选择:

    • 1 表示头部未被masked

    • 0 表示头部被masked

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

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states

  • return_dict (bool, optional) — 是否返回一个 ModelOutput 而不是一个普通的元组。

  • training (booloptional,默认为False) — 是否在训练模式下使用模型(一些模块,如 dropout 模块,在训练和评估之间具有不同的行为)。

返回

transformers.modeling_tf_outputs.TFBaseModelOutput 或tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFBaseModelOutput 或一个tf.Tensor元组(如果传递return_dict=Falseconfig.return_dict=False,则包括各种元素,具体取决于配置(T5Config)和输入。

  • last_hidden_state (tf.Tensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。

  • hidden_states (tuple(tf.FloatTensor)optional,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出,一个用于每一层的输出)。

    模型在每一层输出的隐藏状态加上初始嵌入输出。

  • attentions (tuple(tf.Tensor)optional,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。

    在自注意力头中用于计算加权平均值的注意力 softmax 之后的注意力权重。

TFT5EncoderModel 的前向方法,覆盖__call__特殊方法。

虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, TFT5EncoderModel

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = TFT5EncoderModel.from_pretrained("t5-small")

>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="tf"
... ).input_ids  # Batch size 1
>>> outputs = model(input_ids)

JAXHide JAX 内容

FlaxT5Model

class transformers.FlaxT5Model

<来源>

( config: T5Config input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )

__call__

<来源>

( input_ids: Array attention_mask: Optional = None decoder_input_ids: Array = None decoder_attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput or tuple(torch.FloatTensor)

参数

  • input_ids (jnp.ndarray of shape (batch_size, sequence_length)) — 输入序列标记在词汇表中的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。

    索引可以使用 AutoTokenizer 获得。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    输入 ID 是什么?

    要了解如何为预训练准备input_ids,请查看 T5 训练。

  • attention_mask (jnp.ndarray of shape (batch_size, sequence_length), optional) — 避免在填充标记索引上执行注意力的掩码。选择的掩码值为[0, 1]

    • 对于未被掩码的标记,为 1,

    • 对于被掩码的标记为 0。

    注意力掩码是什么?

  • decoder_input_ids (jnp.ndarray of shape (batch_size, target_sequence_length), optional) — 解码器输入序列标记在词汇表中的索引。

    索引可以使用 AutoTokenizer 获得。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    解码器输入 ID 是什么?

    T5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用了past_key_values,可以选择仅输入最后一个decoder_input_ids(参见past_key_values)。

    要了解如何为预训练准备decoder_input_ids,请查看 T5 训练。

  • decoder_attention_mask (jnp.ndarray of shape (batch_size, target_sequence_length), optional) — 默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果掩码也将默认使用。

  • encoder_outputs (tuple(tuple(jnp.ndarray), optional) — 元组包括(last_hidden_state,可选:hidden_states,可选:attentionslast_hidden_state的形状为(batch_size, sequence_length, hidden_size),是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。

  • past_key_values (tuple(tuple(jnp.ndarray)),长度为config.n_layers,每个元组有 4 个形状为(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

返回

transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或一个torch.FloatTensor元组(如果传递了return_dict=Falseconfig.return_dict=False时)包含根据配置(T5Config)和输入而异的各种元素。

  • logits (jnp.ndarray,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。

  • past_key_values (tuple(tuple(jnp.ndarray)), 可选, 当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layerstuple(jnp.ndarray)元组,每个元组有 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输入)。

  • decoder_hidden_states (tuple(jnp.ndarray), 可选, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)jnp.ndarray元组(一个用于嵌入输出,一个用于每一层的输出)。

    解码器每一层输出的隐藏状态以及初始嵌入输出。

  • decoder_attentions (tuple(jnp.ndarray), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(jnp.ndarray), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (jnp.ndarray,形状为(batch_size, sequence_length, hidden_size)可选) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(jnp.ndarray), 可选, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)jnp.ndarray元组(一个用于嵌入输出,一个用于每一层的输出)。

    编码器每一层输出的隐藏状态以及初始嵌入输出。

  • encoder_attentions (tuple(jnp.ndarray), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

FlaxT5PreTrainedModel的前向方法覆盖了__call__特殊方法。

虽然前向传递的步骤需要在这个函数内定义,但应该在之后调用Module实例,而不是这个函数,因为前者会处理前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, FlaxT5Model

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = FlaxT5Model.from_pretrained("t5-small")

>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="np"
... ).input_ids
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="np").input_ids

>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for T5Model.
>>> # This is not needed for torch's T5ForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)

>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state

encode

<来源>

( input_ids: Array attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (jnp.ndarray,形状为(batch_size, sequence_length)) — 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    关于如何为预训练准备input_ids,请查看 T5 训练。

  • attention_mask (jnp.ndarray,形状为(batch_size, sequence_length)可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]之间:

    • 对于未被masked的标记为 1。

    • 对于被masked的标记为 0。

    什么是注意力掩码?

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

  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states

  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_flax_outputs.FlaxBaseModelOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(<class 'transformers.models.t5.configuration_t5.T5Config'>)和输入的不同元素。

  • last_hidden_state (jnp.ndarray,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。

  • hidden_states (tuple(jnp.ndarray)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)jnp.ndarray元组(一个用于嵌入输出,一个用于每一层的输出)。

    模型在每一层输出的隐藏状态加上初始嵌入输出。

  • attentions (tuple(jnp.ndarray), 可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

示例:

>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("t5-small")

>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)

decode

<来源>

( decoder_input_ids encoder_outputs encoder_attention_mask: Optional = None decoder_attention_mask: Optional = None past_key_values: dict = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions or tuple(torch.FloatTensor)

参数

  • decoder_input_ids (jnp.ndarray,形状为(batch_size, target_sequence_length)) — 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    在训练时,应提供decoder_input_ids

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

  • encoder_attention_mask (jnp.ndarray of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在 [0, 1] 之间:

    • 对于未被 masked 的标记,值为 1。

    • 对于被 masked 的标记,值为 0。

    什么是注意力掩码?

  • decoder_attention_mask (jnp.ndarray of shape (batch_size, target_sequence_length), optional) — 默认行为:生成一个张量,忽略 decoder_input_ids 中的填充标记。因果掩码也将默认使用。

    如果要更改填充行为,应根据需要进行修改。有关默认策略的更多信息,请参见 论文 中的图表 1。

  • past_key_values (Dict[str, np.ndarray], optional, 由 init_cache 返回或传递先前的 past_key_values 时返回) — 可用于快速自回归解码的预计算隐藏状态(注意力块中的键和值)的字典。预计算的键和值隐藏状态的形状为 [batch_size, max_length]

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

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量中的 hidden_states

  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或 tuple(torch.FloatTensor)

transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或一个 torch.FloatTensor 元组(如果传递 return_dict=Falseconfig.return_dict=False)包含根据配置 (<class 'transformers.models.t5.configuration_t5.T5Config'>) 和输入而异的各种元素。

  • last_hidden_state (jnp.ndarray of shape (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。

    如果仅使用 past_key_values,则输出形状为 (batch_size, 1, hidden_size) 的序列的最后一个隐藏状态。

  • past_key_values (tuple(tuple(jnp.ndarray)), optional, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 长度为 config.n_layerstuple(jnp.ndarray) 元组,每个元组有 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量,如果 config.is_encoder_decoder=True,还有 2 个额外的形状为 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的张量。

    包含预先计算的隐藏状态(自注意力块中的键和值以及在交叉注意力块中,如果 config.is_encoder_decoder=True,还包括)可用于加速顺序解码的(请参见 past_key_values 输入)。

  • hidden_states (tuple(jnp.ndarray), optional, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)jnp.ndarray 元组(一个用于嵌入的输出 + 一个用于每个层的输出)。

    模型在每一层的输出的隐藏状态以及初始嵌入输出。

  • attentions (tuple(jnp.ndarray)可选,当传递output_attentions=True或当config.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    在注意力 softmax 之后使用的注意力权重,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(jnp.ndarray)可选,当传递output_attentions=Trueconfig.add_cross_attention=True或当config.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后使用,用于计算交叉注意力头中的加权平均值。

示例:

>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration
>>> import jax.numpy as jnp

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("t5-small")

>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)

>>> decoder_start_token_id = model.config.decoder_start_token_id
>>> decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype="i4") * decoder_start_token_id

>>> outputs = model.decode(decoder_input_ids, encoder_outputs)
>>> logits = outputs.logits

FlaxT5ForConditionalGeneration

class transformers.FlaxT5ForConditionalGeneration

<来源>

( config: T5Config input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )

__call__

<来源>

( input_ids: Array attention_mask: Optional = None decoder_input_ids: Array = None decoder_attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput or tuple(torch.FloatTensor)

参数

  • input_ids (jnp.ndarray,形状为(batch_size, sequence_length)) — 输入序列标记在词汇表中的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都对输入进行填充。

    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()获取详细信息。

    什么是输入 ID?

    要了解有关如何为预训练准备input_ids的更多信息,请查看 T5 训练。

  • attention_mask (jnp.ndarray,形状为(batch_size, sequence_length)可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]之间:

    • 1 表示未被masked的标记。

    • 0 表示被masked的标记。

    什么是注意力掩码?

  • decoder_input_ids (jnp.ndarray,形状为(batch_size, target_sequence_length)可选) — 解码器输入序列标记在词汇表中的索引。

    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()获取详细信息。

    什么是解码器输入 ID?

    T5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,则可以选择仅输入最后的decoder_input_ids(参见past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 T5 训练。

  • decoder_attention_mask (jnp.ndarray,形状为(batch_size, target_sequence_length)可选) — 默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果掩码也将默认使用。

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

  • past_key_values (tuple(tuple(jnp.ndarray)),长度为config.n_layers,每个元组有 4 个形状为(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

返回

transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或 tuple(torch.FloatTensor)

一个 transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(T5Config)和输入的不同元素。

  • logits (jnp.ndarray,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。

  • past_key_values (tuple(tuple(jnp.ndarray)), optional, 当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layerstuple(jnp.ndarray)元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)的张量。

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

  • decoder_hidden_states (tuple(jnp.ndarray), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)jnp.ndarray元组(一个用于嵌入的输出 + 一个用于每个层的输出)。

    解码器在每一层的输出的隐藏状态加上初始嵌入输出。

  • decoder_attentions (tuple(jnp.ndarray)optional,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(jnp.ndarray)optional,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (jnp.ndarray,形状为(batch_size, sequence_length, hidden_size)optional) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(jnp.ndarray)optional,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)jnp.ndarray元组(一个用于嵌入的输出 + 一个用于每个层的输出)。

    编码器在每一层的输出的隐藏状态加上初始嵌入输出。

  • encoder_attentionstuple(jnp.ndarray)可选,当传递output_attentions=True或当config.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

FlaxT5PreTrainedModel的前向方法,覆盖了__call__特殊方法。

尽管前向传递的步骤需要在此函数内定义,但应该在之后调用Module实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("t5-small")

>>> ARTICLE_TO_SUMMARIZE = "summarize: My friends are cool but they eat too many carbs."
>>> inputs = tokenizer([ARTICLE_TO_SUMMARIZE], return_tensors="np")

>>> # Generate Summary
>>> summary_ids = model.generate(inputs["input_ids"]).sequences
>>> print(tokenizer.decode(summary_ids[0], skip_special_tokens=True, clean_up_tokenization_spaces=False))

encode

<来源>

( input_ids: Array attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)jnp.ndarray)— 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    了解如何为预训练准备input_ids,请查看 T5 训练。

  • attention_mask(形状为(batch_size, sequence_length)jnp.ndarray可选)— 用于避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]中:

    • 对于未被masked的标记为 1,

    • 对于被masked的标记为 0。

    什么是注意力掩码?

  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量下的attentions

  • output_hidden_statesbool可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的hidden_states

  • return_dictbool可选)— 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_flax_outputs.FlaxBaseModelOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或一个torch.FloatTensor元组(如果传递了return_dict=False或当config.return_dict=False时)包括各种元素,取决于配置(<class 'transformers.models.t5.configuration_t5.T5Config'>)和输入。

  • last_hidden_state(形状为(batch_size, sequence_length, hidden_size)jnp.ndarray)— 模型最后一层的隐藏状态序列的输出。

  • hidden_statestuple(jnp.ndarray)可选,当传递output_hidden_states=True或当config.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)jnp.ndarray元组(一个用于嵌入输出,一个用于每一层的输出)。

    模型在每一层输出的隐藏状态以及初始嵌入输出。

  • attentionstuple(jnp.ndarray)可选,当传递output_attentions=True或当config.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    在注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

示例:

>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("t5-small")

>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)

decode

<来源>

( decoder_input_ids encoder_outputs encoder_attention_mask: Optional = None decoder_attention_mask: Optional = None past_key_values: dict = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions or tuple(torch.FloatTensor)

参数

  • decoder_input_ids (jnp.ndarray of shape (batch_size, target_sequence_length)) — 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    对于训练,应提供decoder_input_ids

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

  • encoder_attention_mask (jnp.ndarray of shape (batch_size, sequence_length), 可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在 [0, 1] 之间:

    • 对于未被掩码的标记为 1,

    • 对于被掩码的标记为 0。

    什么是注意力掩码?

  • decoder_attention_mask (jnp.ndarray of shape (batch_size, target_sequence_length), 可选) — 默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果掩码也将默认使用。

    如果要更改填充行为,应根据需要进行修改。有关默认策略的更多信息,请参见论文中的图表 1。

  • past_key_values (Dict[str, np.ndarray], 可选, 由init_cache返回或传递先前的past_key_values时返回) — 预先计算的隐藏状态字典(注意力块中的键和值),可用于快速自回归解码。预先计算的键和值隐藏状态的形状为 [batch_size, max_length]

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

  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量中的hidden_states

  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

返回值

transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)

一个 transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或一个torch.FloatTensor元组(如果传递了return_dict=Falseconfig.return_dict=False)包括根据配置(<class 'transformers.models.t5.configuration_t5.T5Config'>)和输入的不同元素。

  • logits (jnp.ndarray of shape (batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。

  • hidden_statestuple(jnp.ndarray)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)jnp.ndarray元组(一个用于嵌入的输出,一个用于每一层的输出)。

    模型在每一层输出的隐藏状态以及初始嵌入输出。

  • attentionstuple(jnp.ndarray)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

  • cross_attentionstuple(jnp.ndarray)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)jnp.ndarray元组(每层一个)。

    注意力 softmax 后的交叉注意力权重,用于计算交叉注意力头中的加权平均值。

  • past_key_valuestuple(tuple(jnp.ndarray))可选,当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layersjnp.ndarray元组的元组,每个元组包含自注意力和交叉注意力层的缓存键、值状态,如果模型用于编码器-解码器设置,则相关。仅在config.is_decoder = True时相关。

    包含预先计算的隐藏状态(注意力块中的键和值),可以用于加速顺序解码(查看past_key_values输入)。

示例:

>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration
>>> import jax.numpy as jnp

>>> tokenizer = AutoTokenizer.from_pretrained("t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("t5-small")

>>> text = "summarize: My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)

>>> decoder_start_token_id = model.config.decoder_start_token_id
>>> decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype="i4") * decoder_start_token_id

>>> outputs = model.decode(decoder_input_ids, encoder_outputs)
>>> logits = outputs.logits

FlaxT5EncoderModel

class transformers.FlaxT5EncoderModel

<来源>

( config: T5Config input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )

__call__

<来源>

( input_ids: Array attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None )

参数

  • input_ids(形状为(batch_size, sequence_length)jnp.ndarray) — 词汇表中输入序列标记的索引。T5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    了解如何为预训练准备input_ids,请查看 T5 训练。

  • attention_mask(形状为(batch_size, sequence_length)jnp.ndarray可选) — 避免在填充标记索引上执行注意力的掩码。选择的掩码值为[0, 1]

    • 1 表示未被掩盖的标记,

    • 0 表示被掩盖的标记。

    什么是注意力遮罩?

  • output_attentionsbool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请查看返回张量下的attentions

  • output_hidden_statesbool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请查看返回张量下的hidden_states

  • return_dictbool可选) — 是否返回 ModelOutput 而不是普通元组。

FlaxT5EncoderModel 的前向方法,覆盖了__call__特殊方法。

尽管前向传播的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是调用此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。

T5v1.1

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/t5v1.1

概述

T5v1.1 是由 Colin Raffel 等人在google-research/text-to-text-transfer-transformer存储库中发布的。这是原始 T5 模型的改进版本。这个模型是由patrickvonplaten贡献的。原始代码可以在这里找到。

使用提示

可以直接将 T5v1.1 的权重插入到 T5 模型中,如下所示:

>>> from transformers import T5ForConditionalGeneration

>>> model = T5ForConditionalGeneration.from_pretrained("google/t5-v1_1-base")

T5 版本 1.1 相对于原始 T5 模型包括以下改进:

  • 在前馈隐藏层中使用 GEGLU 激活,而不是 ReLU。参见这篇论文

  • 在预训练中关闭了 Dropout(质量优胜)。在微调期间应重新启用 Dropout。

  • 仅在 C4 上进行预训练,没有混合下游任务。

  • 嵌入层和分类器层之间没有参数共享。

  • “xl”和“xxl”取代了“3B”和“11B”。模型形状有些不同 - 更大的d_model和较小的num_headsd_ff

注意:T5 版本 1.1 仅在C4上进行了预训练,不包括任何监督训练。因此,这个模型在用于下游任务之前必须进行微调,与原始 T5 模型不同。由于 t5v1.1 是无监督预训练的,单任务微调时使用任务前缀并没有真正的优势。如果进行多任务微调,应该使用前缀。

Google 发布了以下变体:

请参考 T5 的文档页面获取所有 API 参考、提示、代码示例和笔记本。

TAPEX

原文:huggingface.co/docs/transformers/v4.37.2/en/model_doc/tapex

此模型仅处于维护模式,我们不接受任何更改其代码的新 PR。

如果在运行此模型时遇到任何问题,请重新安装支持此模型的最后一个版本:v4.30.0。您可以通过运行以下命令来执行:pip install -U transformers==4.30.0

概述

TAPEX 模型是由 Qian Liu、Bei Chen、Jiaqi Guo、Morteza Ziyadi、Zeqi Lin、Weizhu Chen、Jian-Guang Lou 在TAPEX: Table Pre-training via Learning a Neural SQL Executor中提出的。TAPEX 对 BART 模型进行预训练,以解决合成 SQL 查询,然后可以微调以回答与表格数据相关的自然语言问题,以及执行表格事实检查。

TAPEX 已在几个数据集上进行了微调:

  • SQA (Microsoft 的顺序问答)

  • WTQ(由斯坦福大学提供的维基表问题)

  • WikiSQL(由 Salesforce 提供)

  • TabFact(由 USCB NLP 实验室提供)。

论文摘要如下:

最近在语言模型预训练方面取得了巨大成功,通过利用大规模的非结构化文本数据。然而,由于缺乏大规模高质量的表格数据,将预训练应用于结构化表格数据仍然是一个挑战。在本文中,我们提出了 TAPEX,以表明通过学习一个神经 SQL 执行器可以实现表格预训练,这是通过自动合成可执行的 SQL 查询及其执行输出获得的合成语料库。TAPEX 通过引导语言模型在多样化、大规模和高质量的合成语料库上模仿 SQL 执行器来解决数据稀缺性挑战。我们在四个基准数据集上评估了 TAPEX。实验结果表明,TAPEX 在所有这些数据集上均大幅优于以前的表格预训练方法,并在所有数据集上取得了新的最先进结果。这包括将弱监督的 WikiSQL 指称准确率提高到 89.5%(+2.3%),将 WikiTableQuestions 指称准确率提高到 57.5%(+4.8%),将 SQA 指称准确率提高到 74.5%(+3.5%),以及将 TabFact 准确率提高到 84.2%(+3.2%)。据我们所知,这是第一项利用合成可执行程序进行表格预训练并在各种下游任务上取得新的最先进结果的工作。

使用提示

  • TAPEX 是一个生成(seq2seq)模型。可以直接将 TAPEX 的权重插入到 BART 模型中。

  • TAPEX 在中心点上有检查点,这些检查点要么只是预训练的,要么在 WTQ、SQA、WikiSQL 和 TabFact 上进行了微调。

  • 句子+表格以句子 + " " + 线性化表格的形式呈现给模型。线性化表格的格式如下:col: col1 | col2 | col 3 row 1 : val1 | val2 | val3 row 2 : ...

  • TAPEX 有自己的分词器,可以轻松为模型准备所有数据。可以将 Pandas DataFrames 和字符串传递给分词器,它将自动创建input_idsattention_mask(如下面的使用示例所示)。

用途:推理

下面,我们说明如何使用 TAPEX 进行表格问答。正如大家所看到的,可以直接将 TAPEX 的权重插入到 BART 模型中。我们使用 Auto API,它将根据中心点上的配置文件自动实例化适当的分词器(TapexTokenizer)和模型(BartForConditionalGeneration)。

>>> from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
>>> import pandas as pd

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/tapex-large-finetuned-wtq")
>>> model = AutoModelForSeq2SeqLM.from_pretrained("microsoft/tapex-large-finetuned-wtq")

>>> # prepare table + question
>>> data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
>>> table = pd.DataFrame.from_dict(data)
>>> question = "how many movies does Leonardo Di Caprio have?"

>>> encoding = tokenizer(table, question, return_tensors="pt")

>>> # let the model generate an answer autoregressively
>>> outputs = model.generate(**encoding)

>>> # decode back to text
>>> predicted_answer = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
>>> print(predicted_answer)
53

请注意,TapexTokenizer 还支持批量推断。因此,可以提供不同表/问题的批处理,或单个表和多个问题的批处理,或单个查询和多个表的批处理。让我们举个例子:

>>> # prepare table + question
>>> data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
>>> table = pd.DataFrame.from_dict(data)
>>> questions = [
...     "how many movies does Leonardo Di Caprio have?",
...     "which actor has 69 movies?",
...     "what's the first name of the actor who has 87 movies?",
... ]
>>> encoding = tokenizer(table, questions, padding=True, return_tensors="pt")

>>> # let the model generate an answer autoregressively
>>> outputs = model.generate(**encoding)

>>> # decode back to text
>>> tokenizer.batch_decode(outputs, skip_special_tokens=True)
[' 53', ' george clooney', ' brad pitt']

如果要进行表验证(即确定给定句子是否由表的内容支持或反驳的任务),可以实例化一个 BartForSequenceClassification 模型。 TAPEX 在 hub 上有针对 TabFact 进行微调的检查点,这是表事实检查的重要基准(它达到 84%的准确率)。下面的代码示例再次利用了 Auto API。

>>> from transformers import AutoTokenizer, AutoModelForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/tapex-large-finetuned-tabfact")
>>> model = AutoModelForSequenceClassification.from_pretrained("microsoft/tapex-large-finetuned-tabfact")

>>> # prepare table + sentence
>>> data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
>>> table = pd.DataFrame.from_dict(data)
>>> sentence = "George Clooney has 30 movies"

>>> encoding = tokenizer(table, sentence, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**encoding)

>>> # print prediction
>>> predicted_class_idx = outputs.logits[0].argmax(dim=0).item()
>>> print(model.config.id2label[predicted_class_idx])
Refused

TAPEX 架构与 BART 相同,除了标记化。有关配置类及其参数的信息,请参阅 BART 文档。下面记录了 TAPEX 特定的标记器。

TapexTokenizer

class transformers.TapexTokenizer

<来源>

( vocab_file merges_file do_lower_case = True errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = False max_cell_length = 15 **kwargs )

参数

  • vocab_filestr)—词汇表文件的路径。

  • merges_filestr)—合并文件的路径。

  • do_lower_casebool可选,默认为True)—在标记化时是否将输入转换为小写。

  • errorsstr可选,默认为"replace")—解码字节为 UTF-8 时要遵循的范例。有关更多信息,请参阅bytes.decode

  • bos_tokenstr可选,默认为"<s>")—在预训练期间使用的序列开始标记。可以用作序列分类器标记。

    使用特殊标记构建序列时,这不是用于序列开头的标记。使用的标记是cls_token

  • eos_tokenstr可选,默认为"</s>")—序列结束标记。

    构建序列时使用特殊标记时,这不是用于序列结尾的标记。使用的标记是sep_token

  • sep_tokenstr可选,默认为"</s>")—分隔符标记,在从多个序列构建序列时使用,例如,用于序列分类的两个序列或用于问题回答的文本和问题。它也用作使用特殊标记构建的序列的最后一个标记。

  • cls_tokenstr可选,默认为"<s>")—分类器标记,用于进行序列分类(对整个序列进行分类,而不是对每个标记进行分类)。在使用特殊标记构建时,它是序列的第一个标记。

  • unk_tokenstr可选,默认为"<unk>")—未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。

  • pad_tokenstr可选,默认为"<pad>")—用于填充的标记,例如在批处理不同长度的序列时。

  • mask_tokenstr可选,默认为"<mask>")—用于屏蔽值的标记。在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。

  • add_prefix_spacebool可选,默认为False)—是否在输入中添加初始空格。这允许将前导单词视为任何其他单词。(BART 标记器通过前导空格检测单词的开头)。

  • max_cell_lengthint可选,默认为 15)—线性化表时每个单元格的最大字符数。如果超过此数字,将进行截断。

构建一个 TAPEX 标记器。基于字节级字节对编码(BPE)。

此分词器可用于展平一个或多个表格,并将它们与一个或多个相关句子连接起来,以供 TAPEX 模型使用。TAPEX 分词器创建的格式如下:

句子列:col1 | col2 | col 3 行 1:val1 | val2 | val3 行 2:…

分词器支持单个表格+单个查询,单个表格和多个查询(在这种情况下,每个查询将被复制以匹配每个表格),单个查询和多个表格(在这种情况下,每个表格将被复制以匹配每个查询),以及多个表格和查询。换句话说,您可以为分词器提供一批表格+问题,以便为模型准备它们。

分词本身基于 BPE 算法。它与 BART、RoBERTa 和 GPT-2 使用的算法相同。

此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

__call__

< source >

( table: Union = None query: Union = None answer: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 pad_to_multiple_of: Optional = None return_tensors: Union = None return_token_type_ids: Optional = None return_attention_mask: Optional = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs )

参数

  • tablepd.DataFrameList[pd.DataFrame])— 包含表格数据的表格。

  • querystrList[str]可选)— 与一个或多个表格相关的句子或句子批次。请注意,句子的数量必须与表格的数量相匹配。

  • answerstrList[str]可选)— 可选地,与问题相关的答案作为监督。

  • add_special_tokensbool可选,默认为True)— 在编码序列时是否添加特殊标记。这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens函数,该函数定义了自动添加到输入 id 的标记。如果要自动添加boseos标记,则这很有用。

  • paddingboolstr或 PaddingStrategy,可选,默认为False)— 激活和控制填充。接受以下值:

    • True'longest':填充到批次中最长的序列(如果只提供单个序列,则不填充)。

    • 'max_length': 使用参数max_length指定的最大长度进行填充,或者如果未提供该参数,则填充到模型的最大可接受输入长度。

    • False'do_not_pad'(默认):不填充(即可以输出具有不同长度的序列的批次)。

  • truncationboolstr或 TruncationStrategy,可选,默认为False)— 激活和控制截断。接受以下值:

    • True'longest_first':使用参数max_length指定的最大长度进行截断,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批对序列),则将逐个标记截断,从最长序列中删除一个标记。

    • 'only_first': 使用参数max_length指定的最大长度进行截断,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批对序列),则只会截断第一个序列。

    • 'only_second': 使用参数max_length指定的最大长度进行截断,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批对序列),则只会截断第二个序列。

    • False'do_not_truncate'(默认):不截断(即可以输出长度大于模型最大可接受输入大小的批次)。

  • max_length (int, 可选) — 控制截断/填充参数之一使用的最大长度。

    如果未设置或设置为 None,则将使用预定义的模型最大长度(如果截断/填充参数需要最大长度)。如果模型没有特定的最大输入长度(如 XLNet),则将禁用截断/填充到最大长度。

  • stride (int, 可选, 默认为 0) — 如果与 max_length 一起设置为一个数字,则当 return_overflowing_tokens=True 时返回的溢出标记将包含截断序列末尾的一些标记,以提供截断和溢出序列之间的一些重叠。此参数的值定义重叠标记的数量。

  • is_split_into_words (bool, 可选, 默认为 False) — 输入是否已经预分词(例如,已分词)。如果设置为 True,分词器会假定输入已经分词(例如,通过在空格上分割),然后对其进行标记化。这对于 NER 或标记分类很有用。

  • pad_to_multiple_of (int, 可选) — 如果设置,将序列填充到提供的值的倍数。需要激活 padding。这对于启用 NVIDIA 硬件上的 Tensor Cores(计算能力 >= 7.5,Volta)特别有用。

  • return_tensors (str 或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:

    • 'tf': 返回 TensorFlow tf.constant 对象。

    • 'pt': 返回 PyTorch torch.Tensor 对象。

    • 'np': 返回 Numpy np.ndarray 对象。

  • add_special_tokens (bool, 可选, 默认为 True) — 是否对序列进行编码,使用相对于其模型的特殊标记。

  • padding (bool, str 或 PaddingStrategy, 可选, 默认为 False) — 激活和控制填充。接受以下值:

    • True'longest': 填充到批次中最长的序列(如果只提供了单个序列,则不填充)。

    • 'max_length': 填充到由参数 max_length 指定的最大长度,或者填充到模型可接受的最大输入长度(如果未提供该参数)。

    • False'do_not_pad'(默认): 无填充(即,可以输出长度不同的序列批次)。

  • truncation (bool, str, TapexTruncationStrategy 或 TruncationStrategy, — 可选, 默认为 False):

    激活和控制截断。接受以下值:

    • 'drop_rows_to_fit': 截断到由参数 max_length 指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。这将逐行截断,从表中删除行。

    • True'longest_first': 截断到由参数 max_length 指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。如果提供了一对序列(或一批序列),则将逐个标记截断,从一对序列中最长的序列中删除一个标记。

    • 'only_first': 截断到由参数 max_length 指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。如果提供了一对序列(或一批序列),则仅截断第一个序列。

    • 'only_second': 截断到由参数 max_length 指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。如果提供了一对序列(或一批序列),则仅截断第二个序列。

    • False'do_not_truncate'(默认):不截断(即,可以输出具有大于模型最大可接受输入大小的序列长度的批次)。

  • max_length (int, optional) — 控制截断/填充参数之一使用的最大长度。如果未设置或设置为None,则将使用预定义的模型最大长度(如果截断/填充参数之一需要最大长度)。如果模型没有特定的最大输入长度(如 XLNet),则截断/填充到最大长度将被停用。

  • stride (int, optional, 默认为 0) — 如果与max_length一起设置为一个数字,则当return_overflowing_tokens=True时返回的溢出标记将包含从截断序列末尾返回的一些标记,以提供截断和溢出序列之间的一些重叠。此参数的值定义了重叠标记的数量。

  • pad_to_multiple_of (int, optional) — 如果设置,将填充序列到提供的值的倍数。这对于在具有计算能力>= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。

  • return_tensors (str或 TensorType, optional) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:

    • 'tf': 返回 TensorFlow tf.constant对象。

    • 'pt': 返回 PyTorch torch.Tensor对象。

    • 'np': 返回 Numpy np.ndarray对象。

对一个或多个表序列对进行标记化和为模型准备的主要方法。

save_vocabulary

<来源>

( save_directory: str filename_prefix: Optional = None )

Transformer XL

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/transfo-xl

这个模型只处于维护模式,因此我们不会接受任何新的更改其代码的 PR。由于与pickle.load相关的安全问题,此模型已被弃用。

我们建议切换到更近期的模型以提高安全性。

如果您仍然希望在实验中使用TransfoXL,我们建议使用Hub 检查点,并使用特定的修订版本以确保您从 Hub 下载安全文件。

为了允许使用pickle.load(),您需要将环境变量TRUST_REMOTE_CODE设置为True

import os
from transformers import TransfoXLTokenizer, TransfoXLLMHeadModel

os.environ["TRUST_REMOTE_CODE"] = "True"

checkpoint = 'transfo-xl-wt103'
revision = '40a186da79458c9f9de846edfaea79c412137f97'

tokenizer = TransfoXLTokenizer.from_pretrained(checkpoint, revision=revision)
model = TransfoXLLMHeadModel.from_pretrained(checkpoint, revision=revision)

如果您在运行此模型时遇到任何问题,请重新安装支持此模型的最后一个版本:v4.35.0。您可以通过运行以下命令来执行:pip install -U transformers==4.35.0

Models Spaces

概述

Transformer-XL 模型是由 Zihang Dai、Zhilin Yang、Yiming Yang、Jaime Carbonell、Quoc V. Le、Ruslan Salakhutdinov 在Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context中提出的。它是一个因果(单向)变压器,具有相对定位(正弦)嵌入,可以重用先前计算的隐藏状态以便于更长的上下文(记忆)。该模型还使用自适应 softmax 输入和输出(绑定)。

论文的摘要如下:

变压器有潜力学习更长期的依赖关系,但在语言建模设置中受到固定长度上下文的限制。我们提出了一种新颖的神经架构 Transformer-XL,它能够在不破坏时间连贯性的情况下实现超越固定长度的依赖关系学习。它包括一个段级循环机制和一种新颖的位置编码方案。我们的方法不仅能够捕捉更长期的依赖关系,还能解决上下文碎片化问题。因此,Transformer-XL 学习的依赖关系比 RNN 长 80%,比普通变压器长 450%,在短序列和长序列上表现更好,并且在评估过程中比普通变压器快 1800 多倍。值得注意的是,我们将 bpc/perplexity 的最新结果改进到了 enwiki8 的 0.99,text8 的 1.08,WikiText-103 的 18.3,One Billion Word 的 21.8,Penn Treebank 的 54.5(无需微调)。当仅在 WikiText-103 上训练时,Transformer-XL 能够生成具有数千个标记的合理连贯的新文章。

这个模型是由thomwolf贡献的。原始代码可以在这里找到。

使用提示

  • Transformer-XL 使用相对正弦位置嵌入。填充可以在左侧或右侧进行。原始实现在左侧进行填充训练 SQuAD,因此填充默认设置为左侧。

  • Transformer-XL 是少数没有序列长度限制的模型之一。

  • 与常规的 GPT 模型相同,但引入了两个连续片段的循环机制(类似于具有两个连续输入的常规 RNN)。在这个上下文中,一个片段是一系列连续的标记(例如 512 个),可能跨越多个文档,片段按顺序馈送到模型中。

  • 基本上,前一个片段的隐藏状态被连接到当前输入以计算注意力分数。这使得模型能够关注前一个片段和当前片段中的信息。通过堆叠多个注意力层,可以将感受野扩展到多个先前的片段。

  • 这将把位置嵌入改为位置相对嵌入(因为常规位置嵌入会在给定位置的当前输入和当前隐藏状态中产生相同的结果),并且需要对计算注意力分数的方式进行一些调整。

由于 PyTorch 中的一个错误,TransformerXL 与torch.nn.DataParallel不兼容,请参阅问题#36035

资源

  • 文本分类任务指南

  • 因果语言建模任务指南

TransfoXLConfig

class transformers.TransfoXLConfig

<来源>

( vocab_size = 267735 cutoffs = [20000, 40000, 200000] d_model = 1024 d_embed = 1024 n_head = 16 d_head = 64 d_inner = 4096 div_val = 4 pre_lnorm = False n_layer = 18 mem_len = 1600 clamp_len = 1000 same_length = True proj_share_all_but_first = True attn_type = 0 sample_softmax = -1 adaptive = True dropout = 0.1 dropatt = 0.0 untie_r = True init = 'normal' init_range = 0.01 proj_init_std = 0.01 init_std = 0.02 layer_norm_epsilon = 1e-05 eos_token_id = 0 **kwargs )

参数

  • vocab_size (int, optional, 默认为 267735) — BERT 模型的词汇量。定义了在调用 TransfoXLModel 或 TFTransfoXLModel 时可以由inputs_ids表示的不同标记数量。

  • cutoffs (List[int], optional, 默认为[20000, 40000, 200000]) — 自适应 softmax 的截断值。

  • d_model (int, optional, 默认为 1024) — 模型隐藏状态的维度。

  • d_embed (int, optional, 默认为 1024) — 嵌入的维度

  • n_head (int, optional, 默认为 16) — Transformer 编码器中每个注意力层的注意力头数量。

  • d_head (int, optional, 默认为 64) — 模型头部的维度。

  • d_inner (int, optional, 默认为 4096) — FF 中的内部维度

  • div_val (int, optional, 默认为 4) — 自适应输入和 softmax 的除数值

  • pre_lnorm (boolean, optional, 默认为False) — 是否在块中将 LayerNorm 应用于输入而不是输出。

  • n_layer (int, optional, 默认为 18) — Transformer 编码器中的隐藏层数量。

  • mem_len (int, optional, 默认为 1600) — 保留的先前头部的长度。

  • clamp_len (int, optional, 默认为 1000) — 在 clamp_len 之后使用相同的位置嵌入。

  • same_length (boolean, optional, 默认为True) — 是否对所有标记使用相同的注意力长度

  • proj_share_all_but_first (boolean, optional, 默认为True) — True 表示共享除第一个 proj 之外的所有 proj,False 表示不共享。

  • attn_type (int, optional, 默认为 0) — 注意力类型。0 表示 Transformer-XL,1 表示 Shaw 等人,2 表示 Vaswani 等人,3 表示 Al Rfou 等人。

  • sample_softmax (int, optional, 默认为-1) — 采样 softmax 中的样本数量。

  • adaptive (boolean, optional, 默认为True) — 是否使用自适应 softmax。

  • dropout (float, optional, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的丢弃概率。

  • dropatt (float, optional, 默认为 0.0) — 注意力概率的丢弃比率。

  • untie_r (boolean, optional, 默认为True) — 是否解开相对位置偏差。

  • init (str, optional, 默认为"normal") — 要使用的参数初始化器。

  • init_range (float, optional, 默认为 0.01) — 由 U(-init_range, init_range)初始化的参数。

  • proj_init_std (float, optional, 默认为 0.01) — 由 N(0, init_std)初始化的参数

  • init_std (float, optional, 默认为 0.02) — 由 N(0, init_std)初始化的参数

  • layer_norm_epsilon (float, optional, 默认为 1e-05) — 在层归一化层中使用的 epsilon

  • eos_token_id (int, optional, 默认为 0) — 流结束标记 id。

这是用于存储 TransfoXLModel 或 TFTransfoXLModel 配置的配置类。它用于根据指定的参数实例化一个 Transformer-XL 模型,定义模型架构。使用默认值实例化配置将产生类似于 TransfoXL transfo-xl-wt103架构的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。

示例:

>>> from transformers import TransfoXLConfig, TransfoXLModel

>>> # Initializing a Transformer XL configuration
>>> configuration = TransfoXLConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = TransfoXLModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

TransfoXLTokenizer

class transformers.TransfoXLTokenizer

<来源>

( special = None min_freq = 0 max_size = None lower_case = False delimiter = None vocab_file = None pretrained_vocab_file: str = None never_split = None unk_token = '<unk>' eos_token = '<eos>' additional_special_tokens = ['<formula>'] language = 'en' **kwargs )

参数

  • special (List[str]可选) — 特殊标记的列表(由此分词器的原始实现处理)。

  • min_freq (int可选,默认为 0) — 标记必须出现的最小次数,以便保留在词汇表中(否则将映射到unk_token)。

  • max_size (int可选) — 词汇表的最大大小。如果未设置,它将默认为根据min_freq规则排除标记后找到的词汇表的大小。

  • lower_case (bool可选,默认为False) — 在标记化时是否将输入转换为小写。

  • delimiter (str可选) — 标记之间使用的分隔符。

  • vocab_file (str可选) — 包含词汇表的文件(来自原始实现)。

  • pretrained_vocab_file (str可选) — 包含使用save_pretrained()方法保存的词汇表的文件。

  • never_split (List[str]可选) — 不应拆分的标记列表。如果未指定列表,将简单地使用现有的特殊标记。

  • unk_token (str可选,默认为"<unk>") — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。

  • eos_token (str可选,默认为"<eos>") — 序列结束标记。

  • additional_special_tokens (List[str]可选,默认为['<formula>']) — 附加特殊标记的列表(用于 HuggingFace 功能)。

  • language (str可选,默认为"en") — 此分词器的语言(用于更多预处理)。

构建一个从原始代码中的 Vocab 类调整的 Transformer-XL 分词器,原始代码在这里。Transformer-XL 分词器是一个单词级的分词器(没有子词分词)。

这个分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考这个超类以获取有关这些方法的更多信息。

save_vocabulary

<来源>

( save_directory: str filename_prefix: Optional = None )

TransfoXL 特定输出

class transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLModelOutput

<来源>

( last_hidden_state: FloatTensor mems: List = None hidden_states: Optional = None attentions: Optional = None )

参数

  • last_hidden_state (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态的序列。

  • mems (List[torch.FloatTensor],长度为config.n_layers) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。已经计算过其过去的令牌 id 不应该作为输入 id 传递给此模型。

  • 模型输出的隐藏状态,以及初始嵌入输出。

    模型在每一层输出的隐藏状态以及初始嵌入输出。

  • 模型在每一层输出的隐藏状态以及初始嵌入输出。

    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

用于模型输出的基类,可能还包含过去的键/值(用于加速顺序解码)。

class transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLLMHeadModelOutput

<来源>

( losses: Optional = None prediction_scores: FloatTensor = None mems: List = None hidden_states: Optional = None attentions: Optional = None loss: Optional = None )

参数

  • losses (torch.FloatTensor,形状为(batch_size, sequence_length-1)可选的,当提供labels时返回) — 语言建模损失(未减少)。

  • prediction_scores (torch.FloatTensor,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 后每个词汇标记的分数)。

  • mems (List[torch.FloatTensor],长度为config.n_layers) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。已经计算过其过去的令牌 id 不应该作为输入 id 传递给此模型。

  • hidden_states (tuple(torch.FloatTensor), 可选的, 当传递output_hidden_states=True或者config.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入输出,一个用于每一层的输出)。

    hidden_states (tuple(torch.FloatTensor), 可选的, 当传递output_hidden_states=True或者config.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入输出,一个用于每一层的输出)。

  • attentions (tuple(torch.FloatTensor), 可选的, 当传递output_attentions=True或者config.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

  • loss (torch.FloatTensor,形状为()可选的,当提供labels时返回) — 减少的语言建模损失。

用于模型输出的基类,可能还包含过去的键/值(用于加速顺序解码)。

class transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLModelOutput

<来源>

( last_hidden_state: tf.Tensor = None mems: List[tf.Tensor] = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None )

参数

  • last_hidden_state (tf.Tensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。

  • mems (List[tf.Tensor],长度为config.n_layers) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。已经计算过其过去的令牌 id 不应该作为输入 id 传递给此模型。

  • hidden_statestuple(tf.Tensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 + 一个用于每层的输出)。

    每层模型输出的隐藏状态加上初始嵌入输出。

  • attentionstuple(tf.Tensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。

    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

模型输出的基类,可能还包含过去的键/值(以加速顺序解码)。

class transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLLMHeadModelOutput

<来源>

( prediction_scores: tf.Tensor = None mems: List[tf.Tensor] = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None )

参数

  • losses(形状为(batch_size, sequence_length-1)tf.Tensor可选,当提供labels时返回)- 语言建模损失(未减少)。

  • prediction_scores(形状为(batch_size, sequence_length, config.vocab_size)tf.Tensor)- 语言建模头的预测分数(SoftMax 后每个词汇标记的分数)。

  • mems(长度为config.n_layersList[tf.Tensor])- 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。将其过去传递给此模型的令牌 ID 不应作为输入 ID 传递,因为它们已经计算过。

  • hidden_statestuple(tf.Tensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 + 一个用于每层的输出)。

    每层模型输出的隐藏状态加上初始嵌入输出。

  • attentionstuple(tf.Tensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。

    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

模型输出的基类,可能还包含过去的键/值(以加速顺序解码)。

PytorchHide Pytorch 内容

TransfoXLModel

class transformers.TransfoXLModel

<来源>

( config )

参数

  • config(TransfoXLConfig)- 模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

裸的 Bert 模型变压器输出原始隐藏状态,没有特定的头部。

此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_ids: Optional = None mems: Optional = None head_mask: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为(batch_size, sequence_length)) — 词汇表中输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • mems (List[torch.FloatTensor],长度为config.n_layers) — 包含由模型计算的预先计算的隐藏状态(注意力块中的键和值)(请参见下面的mems输出)。可用于加速顺序解码。将其过去给此模型的标记 ID 不应作为input_ids传递,因为它们已经计算过。

  • 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 而不是普通元组。

返回

transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLModelOutput 或tuple(torch.FloatTensor)

一个 transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLModelOutput 或torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含根据配置(TransfoXLConfig)和输入的各种元素。

  • last_hidden_state (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。

  • mems (List[torch.FloatTensor],长度为config.n_layers) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码(查看mems输入)。将其过去传递给此模型的标记 ID 不应作为输入 ID 传递,因为它们已经计算过。

  • hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组。

    模型在每一层输出的隐藏状态以及初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — Tuple of torch.FloatTensor (one for each layer) of shape (batch_size, num_heads, sequence_length, sequence_length)

    在注意力 softmax 后的注意力权重,用于计算自注意力头部的加权平均值。

TransfoXLModel 的前向方法,覆盖了 __call__ 特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module 实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, TransfoXLModel
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TransfoXLModel.from_pretrained("transfo-xl-wt103")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state

TransfoXLLMHeadModel

class transformers.TransfoXLLMHeadModel

< source >

( config )

参数

  • config (TransfoXLConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。

在顶部带有语言建模头部的 Transformer-XL 模型(自适应 softmax,其权重与自适应输入嵌入绑定)

这个模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

这个模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

< source >

( input_ids: Optional = None mems: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLLMHeadModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 了解详情。

    输入 ID 是什么?

  • mems (List[torch.FloatTensor] of length config.n_layers) — 包含由模型计算的预计算隐藏状态(注意力块中的键和值),如模型(见下面的 mems 输出)所计算的。可用于加速顺序解码。将其 mems 给定给此模型的令牌 id 不应作为 input_ids 传递,因为它们已经被计算过了。

  • 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)可选) — 用于语言建模的标签。请注意,模型内部已经移动标签,即您可以设置labels = input_ids。在[-100, 0, ..., config.vocab_size]中选择索引。所有设置为-100的标签都被忽略(掩码),损失仅计算[0, ..., config.vocab_size]中的标签。

返回

transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLLMHeadModelOutput 或 tuple(torch.FloatTensor)

transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLLMHeadModelOutput 或 torch.FloatTensor 元组(如果传递return_dict=False或当config.return_dict=False时)包括根据配置(TransfoXLConfig)和输入的各种元素。

  • losses (torch.FloatTensor,形状为(batch_size, sequence_length-1)可选,当提供labels时返回) — 语言建模损失(未减少)。

  • prediction_scores (torch.FloatTensor,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 后每个词汇标记的分数)。

  • mems (List[torch.FloatTensor],长度为config.n_layers) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码(见mems输入)。将其过去传递给此模型的令牌 id 不应作为输入 id 传递,因为它们已经计算过。

  • hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=True或当config.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入的输出 + 一个用于每一层的输出)。

    模型在每一层输出的隐藏状态加上初始嵌入输出。

  • attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组。

    注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • loss (torch.FloatTensor,形状为()可选,当提供labels时返回) 减少的语言建模损失。

TransfoXLLMHeadModel 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是在此之后调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> import torch
>>> from transformers import AutoTokenizer, TransfoXLLMHeadModel

>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TransfoXLLMHeadModel.from_pretrained("transfo-xl-wt103")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs, labels=inputs["input_ids"])
>>> loss = outputs.loss
>>> logits = outputs.logits

TransfoXLForSequenceClassification

class transformers.TransfoXLForSequenceClassification

< source >

( config )

参数

  • config (TransfoXLConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。

Transformer-XL 模型,顶部带有一个序列分类头(线性层)。

TransfoXLForSequenceClassification 使用最后一个令牌进行分类,就像其他因果模型(例如 GPT-1)一样。

由于它在最后一个令牌上进行分类,因此需要知道最后一个令牌的位置。如果在配置中定义了 pad_token_id,则会找到每行中不是填充令牌的最后一个令牌。如果未定义 pad_token_id,则会简单地取批处理中每行的最后一个值。当传递 inputs_embeds 而不是 input_ids 时,它无法猜测填充令牌,因此会执行相同操作(取批处理中每行的最后一个值)。

该模型继承自 PreTrainedModel。检查超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

该模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

< source >

( input_ids: Optional = None mems: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLSequenceClassifierOutputWithPast or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列令牌的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • mems (List[torch.FloatTensor] of length config.n_layers) — 包含由模型计算得出的预先计算的隐藏状态(注意力块中的键和值),可以用于加速顺序解码。将这些隐藏状态传递给模型的令牌 id 不应作为 input_ids 传递,因为它们已经被计算过。

  • 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, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量中的 attentions

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量中的 hidden_states

  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。

  • labels (torch.LongTensor,形状为(batch_size,)可选) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]范围内。如果config.num_labels == 1,则计算回归损失(均方损失),如果config.num_labels > 1,则计算分类损失(交叉熵)。

返回值

transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLSequenceClassifierOutputWithPasttorch.FloatTensor元组

一个transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLSequenceClassifierOutputWithPast或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含根据配置(TransfoXLConfig)和输入的各种元素。

  • 损失 (torch.FloatTensor,形状为(1,)可选,当提供labels时返回) — 分类(如果config.num_labels==1则为回归)损失。

  • logits (torch.FloatTensor,形状为(batch_size, config.num_labels)) — 分类(如果config.num_labels==1则为回归)得分(SoftMax 之前)。

  • mems (List[torch.FloatTensor],长度为config.n_layers) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码(查看mems输入)。将其过去给予此模型的令牌 id 不应作为输入 id 传递,因为它们已经计算过。

  • hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入的输出 + 一个用于每个层的输出)。

    模型在每个层的输出隐藏状态加上初始嵌入输出。

  • attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每个层一个)。

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

TransfoXLForSequenceClassification 的前向方法,覆盖__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。

单标签分类示例:

>>> import torch
>>> from transformers import AutoTokenizer, TransfoXLForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = TransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss

多标签分类示例:

>>> import torch
>>> from transformers import AutoTokenizer, TransfoXLForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = TransfoXLForSequenceClassification.from_pretrained(
...     "transfo-xl-wt103", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

TensorFlow 隐藏 TensorFlow 内容

TFTransfoXLModel

class transformers.TFTransfoXLModel

<来源>

( config *inputs **kwargs )

参数

  • config (TransfoXLConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

裸的 Bert 模型变压器输出原始隐藏状态,没有特定的头部。

这个模型继承自 TFPreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存,调整输入嵌入,修剪头等)。

这个模型也是一个tf.keras.Model的子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取有关一般用法和行为的所有相关信息。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或

  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是 Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于有此支持,当使用model.fit()等方法时,应该可以“正常工作” - 只需以model.fit()支持的任何格式传递输入和标签!但是,如果您想在 Keras 方法之外使用第二种格式,例如在使用 KerasFunctional API 创建自己的层或模型时,有三种可能性可用于收集所有输入张量放在第一个位置参数中:

  • 只有一个input_ids的张量,没有其他内容:model(input_ids)

  • 一个长度可变的列表,其中包含一个或多个按照文档字符串中给定顺序的输入张量:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])

  • 一个包含一个或多个与文档字符串中给定输入名称相关联的输入张量的字典:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心这些问题,因为您可以像对待任何其他 Python 函数一样传递输入!

call

< source >

( input_ids: TFModelInputType | None = None mems: List[tf.Tensor] | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None training: bool = False ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLModelOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)tf.TensorNumpy array)- 词汇表中输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。

    什么是 input IDs?

  • mems(长度为config.n_layersList[tf.Tensor])- 包含由模型计算的预计算隐藏状态(注意力块中的键和值)(请参见下面的mems输出)。可用于加速顺序解码。将其mems给定给此模型的标记 id 不应作为input_ids传递,因为它们已经计算过。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)tf.TensorNumpy array可选)- 用于使自注意力模块中的选定头部失效的掩码。掩码值在[0, 1]中选择:

    • 1 表示头部未被masked

    • 0 表示头部被masked

  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)tf.TensorNumpy array可选)- 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制权,以便将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。

  • output_attentions (booloptional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。

  • return_dict (booloptional) — 是否返回一个 ModelOutput 而不是一个普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。

  • training (bool, optional, defaults to False) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。

返回

transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLModelOutput 或 tuple(tf.Tensor)

transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLModelOutput 或一个tf.Tensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(TransfoXLConfig)和输入的不同元素。

  • last_hidden_state (tf.Tensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。

  • mems (List[tf.Tensor],长度为config.n_layers) — 包含预计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码(参见mems输入)。将过去给定给该模型的令牌 id 不应作为输入 id 传递,因为它们已经被计算过。

  • hidden_states (tuple(tf.Tensor)optional,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 + 一个用于每一层的输出)。

    模型在每一层输出处的隐藏状态以及初始嵌入输出。

  • attentions (tuple(tf.Tensor)optional,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

TFTransfoXLModel 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, TFTransfoXLModel
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TFTransfoXLModel.from_pretrained("transfo-xl-wt103")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)

>>> last_hidden_states = outputs.last_hidden_state

TFTransfoXLLMHeadModel

class transformers.TFTransfoXLLMHeadModel

< source >

( config )

参数

  • config(TransfoXLConfig)- 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

具有顶部语言建模头部的 Transformer-XL 模型(自适应 softmax,其权重与自适应输入嵌入相关联)

此模型继承自 TFPreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有信息。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或者

  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是 Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于这种支持,当使用model.fit()等方法时,应该可以“正常工作” - 只需以model.fit()支持的任何格式传递输入和标签即可!但是,如果您想在 Keras 方法之外使用第二种格式,例如在使用 KerasFunctional API 创建自己的层或模型时,有三种可能性可用于在第一个位置参数中收集所有输入张量:

  • 只有一个包含input_ids的张量,没有其他内容:model(input_ids)

  • 一个长度可变的列表,其中包含一个或多个输入张量,按照文档字符串中给定的顺序:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])

  • 一个字典,其中包含一个或多个与文档字符串中给定的输入名称相关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心这些问题,因为您可以像对待任何其他 Python 函数一样传递输入!

call

<来源>

( input_ids: TFModelInputType | None = None mems: List[tf.Tensor] | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None labels: np.ndarray | tf.Tensor | None = None training: bool = False ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLLMHeadModelOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)tf.TensorNumpy 数组)- 词汇表中输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。

    什么是输入 ID?

  • mems(长度为config.n_layersList[tf.Tensor])- 包含由模型计算得到的预计算隐藏状态(自注意力块中的键和值)(请参见下面的mems输出)。可用于加速顺序解码。将其 mems 给定给此模型的标记 ID 不应作为input_ids传递,因为它们已经计算过。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)tf.TensorNumpy 数组可选)- 用于使自注意力模块中选择的头部失效的掩码。掩码值选在[0, 1]之间:

    • 1 表示头部“未被掩码”,

    • 0 表示头部是masked

  • inputs_embeds (tf.TensorNumpy 数组,形状为(batch_size, sequence_length, hidden_size)optional) — 可选地,可以直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,这很有用,而不是使用模型的内部嵌入查找矩阵。

  • output_attentions (booloptional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions。此参数仅在急切模式下使用,在图模式下将使用配置中的值。

  • output_hidden_states (booloptional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states。此参数仅在急切模式下使用,在图模式下将使用配置中的值。

  • return_dict (booloptional) — 是否返回一个 ModelOutput 而不是一个普通元组。这个参数可以在急切模式下使用,在图模式下该值将始终设置为 True。

  • training (booloptional,默认为False) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。

返回

transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLLMHeadModelOutput 或tuple(tf.Tensor)

一个 transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLLMHeadModelOutput 或一个tf.Tensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(TransfoXLConfig)和输入的各种元素。

  • losses (tf.Tensor,形状为(batch_size, sequence_length-1)optional, 当提供labels时返回) — 语言建模损失(未减少)。

  • prediction_scores (tf.Tensor,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 后每个词汇标记的分数)。

  • mems (List[tf.Tensor] of length config.n_layers) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。将其过去传递给该模型的令牌 id 不应作为输入 id 传递,因为它们已经被计算过。

  • hidden_states (tuple(tf.Tensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 + 一个用于每个层的输出)。

    模型在每个层的输出处的隐藏状态加上初始嵌入输出。

  • attentions (tuple(tf.Tensor)optional,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每个层一个)。

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

TFTransfoXLLMHeadModel 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默忽略它们。

示例:

>>> from transformers import AutoTokenizer, TFTransfoXLLMHeadModel
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TFTransfoXLLMHeadModel.from_pretrained("transfo-xl-wt103")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> logits = outputs.logits

TFTransfoXLForSequenceClassification

class transformers.TFTransfoXLForSequenceClassification

<来源>

( config *inputs **kwargs )

参数

  • config(TransfoXLConfig) - 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

Transfo XL 模型变压器,顶部带有序列分类头(线性层)。

TFTransfoXLForSequenceClassification 使用最后一个标记来进行分类,就像其他因果模型(例如 GPT-1、GPT-2)一样。

由于它在最后一个标记上进行分类,因此需要知道最后一个标记的位置。如果在配置中定义了pad_token_id,它会找到每行中不是填充标记的最后一个标记。如果未定义pad_token_id,它会简单地取批处理中每行的最后一个值。由于在传递inputs_embeds而不是input_ids时无法猜测填充标记,因此它会执行相同操作(取批处理中每行的最后一个值)。

这个模型继承自 TFPreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

这个模型也是一个tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取有关一般用法和行为的所有相关信息。

transformers中的 TensorFlow 模型和层接受两种输入格式:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或

  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是,当将输入传递给模型和层时,Keras 方法更喜欢这种格式。由于有了这种支持,当使用model.fit()等方法时,应该可以正常工作 - 只需以model.fit()支持的任何格式传递输入和标签即可!但是,如果您想在 Keras 方法之外使用第二种格式,比如在使用 Keras 的Functional API 创建自己的层或模型时,有三种可能性可以用来收集第一个位置参数中的所有输入张量:

  • 一个仅包含input_ids的单个张量,没有其他内容:model(input_ids)

  • 一个长度可变的列表,其中包含一个或多个按照文档字符串中给定顺序的输入张量:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])

  • 一个字典,其中包含一个或多个与文档字符串中给定输入名称相关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心这些问题,因为您可以像将输入传递给任何其他 Python 函数一样传递输入!

call

<来源>

( input_ids: TFModelInputType | None = None mems: List[tf.Tensor] | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: Optional[bool] = False ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLSequenceClassifierOutputWithPast or tuple(tf.Tensor)

参数

  • input_ids (tf.Tensor 或形状为 (batch_size, sequence_length)Numpy array) — 词汇表中输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。

    什么是输入 ID?

  • mems (List[tf.Tensor],长度为 config.n_layers) — 包含由模型计算得到的预计算隐藏状态(注意力块中的键和值)(请参见下面的 mems 输出)。可用于加速顺序解码。将其 mems 给予此模型的标记 id 不应作为 input_ids 传递,因为它们已经计算过。

  • head_mask (tf.Tensor 或形状为 (num_heads,)(num_layers, num_heads)Numpy array可选) — 用于使自注意力模块的选定头部失效的掩码。掩码值选定在 [0, 1] 之间:

    • 1 表示头部未被 masked

    • 0 表示头部被 masked

  • inputs_embeds (tf.Tensor 或形状为 (batch_size, sequence_length, hidden_size)Numpy array可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。如果您想要更多控制权来将 input_ids 索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量下的 attentions。此参数仅在急切模式下可用,在图模式下将使用配置中的值。

  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的 hidden_states。此参数仅在急切模式下可用,在图模式下将使用配置中的值。

  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。

  • training (bool, 可选,默认为 False) — 是否在训练模式下使用模型(一些模块,如 dropout 模块,在训练和评估之间有不同的行为)。

  • labels (tf.Tensor,形状为 (batch_size, sequence_length)可选) — 用于计算交叉熵分类损失的标签。索引应在 [0, ..., config.vocab_size - 1] 中。

返回值

transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLSequenceClassifierOutputWithPasttuple(tf.Tensor)

一个 transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLSequenceClassifierOutputWithPasttf.Tensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含根据配置(TransfoXLConfig)和输入的各种元素。

  • loss (tf.Tensor,形状为 (1,)可选,当提供 labels 时返回) — 分类(如果 config.num_labels==1 则为回归)损失。

  • logits (tf.Tensor,形状为 (batch_size, config.num_labels)) — 分类(如果 config.num_labels==1 则为回归)得分(SoftMax 之前)。

  • mems (List[tf.Tensor],长度为 config.n_layers) — 包含预计算的隐藏状态(注意力块中的键和值)。可用于(参见 mems 输入)加速顺序解码。将其过去给予此模型的标记 id 不应作为输入 id 传递,因为它们已经计算过。

  • hidden_states (tuple(tf.Tensor), 可选, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 + 一个用于每个层的输出)。

    模型在每一层输出的隐藏状态以及初始嵌入输出。

  • attentions (tuple(tf.Tensor), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。

    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

TFTransfoXLForSequenceClassification 的前向方法覆盖了__call__特殊方法。

虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, TFTransfoXLForSequenceClassification
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TFTransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")

>>> logits = model(**inputs).logits

>>> predicted_class_id = int(tf.math.argmax(logits, axis=-1)[0])
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = TFTransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103", num_labels=num_labels)

>>> labels = tf.constant(1)
>>> loss = model(**inputs, labels=labels).loss

内部层

class transformers.AdaptiveEmbedding

< source >

( n_token d_embed d_proj cutoffs div_val = 1 sample_softmax = False )

class transformers.TFAdaptiveEmbedding

< source >

( n_token d_embed d_proj cutoffs div_val = 1 init_std = 0.02 sample_softmax = False **kwargs )

UL2

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/ul2

概述

T5 模型在Yi Tay, Mostafa Dehghani, Vinh Q. Tran, Xavier Garcia, Dara Bahri, Tal Schuster, Huaixiu Steven Zheng, Neil Houlsby, Donald Metzler 撰写的《统一语言学习范式》中被提出。

论文的摘要如下:

现有的预训练模型通常针对特定类别的问题。迄今为止,关于正确的架构和预训练设置应该是什么,似乎仍然没有共识。本文提出了一个统一的框架,用于预训练模型在数据集和设置上具有普遍有效性。我们首先通过解开具有预训练目标的架构原型来开始——这两个概念通常被混淆。接下来,我们提出了自监督在 NLP 中的泛化和统一视角,并展示了不同的预训练目标如何相互转换以及如何在不同目标之间插值可以是有效的。然后,我们提出了去噪器混合(MoD),这是一个将不同的预训练范式结合在一起的预训练目标。此外,我们引入了一种模式切换的概念,其中下游微调与特定的预训练方案相关联。我们进行了大量的消融实验,比较了多个预训练目标,并发现我们的方法通过在多个不同设置中优于 T5 和/或类似 GPT 的模型来推动帕累托前沿。最后,通过将我们的模型扩展到 20B 参数,我们在 50 个建立良好的监督 NLP 任务上实现了 SOTA 性能,涵盖了语言生成(自动化和人工评估)、语言理解、文本分类、问题回答、常识推理、长文本推理、结构化知识基础和信息检索。我们的模型还在上下文学习方面取得了强大的结果,在零样本 SuperGLUE 上优于 175B 的 GPT-3,并在一次性摘要上将 T5-XXL 的性能提高了三倍。

此模型由DanielHesslow贡献。原始代码可以在这里找到。

使用提示

  • UL2 是一个编码器-解码器模型,预先在一系列去噪函数的混合上进行了预训练,并在一系列下游任务上进行了微调。

  • UL2 与 T5v1.1 具有相同的架构,但使用了门控 SiLU 激活函数,而不是门控 GELU。

  • 作者发布了一个架构的检查点,可以在这里看到

由于 UL2 与 T5v1.1 具有相同的架构,请参考 T5 的文档页面获取 API 参考、提示、代码示例和笔记本。

UMT5

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/umt5

Models Spaces

概述

UMT5 模型是由 Hyung Won Chung、Xavier Garcia、Adam Roberts、Yi Tay、Orhan Firat、Sharan Narang、Noah Constant 在UniMax: Fairer and More Effective Language Sampling for Large-Scale Multilingual Pretraining中提出的。

该论文的摘要如下:

预训练的多语言大型语言模型通常使用启发式基于温度的采样来平衡不同语言之间的关系。然而,先前的工作并没有系统评估不同预训练语言分布在模型规模上的有效性。在本文中,我们提出了一种新的采样方法 UniMax,通过明确限制每种语言语料库上的重复次数,提供更均匀的头部语言覆盖范围,同时减轻尾部语言的过拟合。我们进行了一系列广泛的消融实验,测试了一系列多语言基准测试的采样策略,同时改变模型规模。我们发现 UniMax 优于标准基于温度的采样,而这些优势随着规模的增加而持续存在。作为我们的贡献的一部分,我们发布了:(i)一个改进和更新的 mC4 多语言语料库,包括 107 种语言的 29 万亿个字符,以及(ii)一套使用 UniMax 采样训练的预训练 umT5 模型检查点。

Google 发布了以下变体:

该模型由agemagicianstefan-it贡献。原始代码可以在这里找到。

使用提示

  • UMT5 仅在mC4上进行了预训练,不包括任何监督训练。因此,与原始 T5 模型不同,这个模型必须在可用于下游任务之前进行微调。

  • 由于 umT5 是以无监督方式预训练的,因此在单任务微调期间使用任务前缀没有真正的优势。如果您正在进行多任务微调,应该使用前缀。

与 mT5 有何不同?

UmT5基于 mT5,具有为每个层计算的非共享相对位置偏差。这意味着模型为每个层设置了has_relative_bias。转换脚本也不同,因为该模型是以 t5x 的最新检查点格式保存的。

示例用法

>>> from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

>>> model = AutoModelForSeq2SeqLM.from_pretrained("google/umt5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")

>>> inputs = tokenizer(
...     "A <extra_id_0> walks into a bar and orders a <extra_id_1> with <extra_id_2> pinch of <extra_id_3>.",
...     return_tensors="pt",
... )
>>> outputs = model.generate(**inputs)
>>> print(tokenizer.batch_decode(outputs))
['<pad><extra_id_0>nyone who<extra_id_1> drink<extra_id_2> a<extra_id_3> alcohol<extra_id_4> A<extra_id_5> A. This<extra_id_6> I<extra_id_7><extra_id_52><extra_id_53></s>']

有关更多提示、代码示例和笔记,请参阅 T5 的文档页面。

UMT5Config

class transformers.UMT5Config

< source >

( vocab_size = 250112 d_model = 512 d_kv = 64 d_ff = 1024 num_layers = 8 num_decoder_layers = None num_heads = 6 relative_attention_num_buckets = 32 relative_attention_max_distance = 128 dropout_rate = 0.1 layer_norm_epsilon = 1e-06 initializer_factor = 1.0 feed_forward_proj = 'gated-gelu' is_encoder_decoder = True use_cache = True tokenizer_class = 'T5Tokenizer' tie_word_embeddings = True pad_token_id = 0 eos_token_id = 1 decoder_start_token_id = 0 classifier_dropout = 0.0 **kwargs )

参数

  • vocab_size (int, 可选, 默认为 250112) — UMT5 模型的词汇大小。定义了在调用 UMT5Model 或TFUMT5Model时可以表示的不同标记的数量。

  • d_model (int, 可选, 默认为 512) — 编码器层和池化层的大小。

  • d_kv (int, 可选, 默认为 64) — 每个注意力头部的键、查询、值投影的大小。d_kv必须等于d_model // num_heads

  • d_ff (int, 可选, 默认为 1024) — 每个UMT5Block中间级前馈层的大小。

  • num_layers (int, 可选, 默认为 8) — Transformer 编码器中的隐藏层数量。

  • num_decoder_layers (int, 可选) — Transformer 解码器中的隐藏层数量。如果未设置,将使用与num_layers相同的值。

  • num_heads (int, 可选, 默认为 6) — Transformer 编码器中每个注意力层的注意力头数。

  • relative_attention_num_buckets (int, 可选, 默认为 32) — 每个注意力层使用的桶数。

  • relative_attention_max_distance (int, 可选, 默认为 128) — 用于桶分离的较长序列的最大距离。

  • dropout_rate (float, 可选, 默认为 0.1) — 所有丢失层的比率。

  • classifier_dropout (float, 可选, 默认为 0.0) — 分类器的丢失比率。

  • layer_norm_eps (float, 可选, 默认为 1e-6) — 层归一化层使用的 epsilon。

  • initializer_factor (float, 可选, 默认为 1) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。

  • feed_forward_proj (string, 可选, 默认为"gated-gelu") — 要使用的前馈层类型。应该是"relu""gated-gelu"之一。

  • use_cache (bool, 可选, 默认为True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。

这是一个配置类,用于存储 UMT5Model 的配置。根据指定的参数实例化一个 UMT5 模型,定义模型架构。使用默认值实例化配置将产生类似于 UMT5 google/umt5-small架构的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。

UMT5 模型

class transformers.UMT5Model

<来源>

( config )

参数

  • config (UMT5Config) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

UMT5 模型是一个裸的模型变压器,输出原始的隐藏状态,没有任何特定的头部。

UMT5 模型是由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本变压器迁移学习的极限中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器变压器。

这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。

示例:

>>> from transformers import UMT5Model, AutoTokenizer

>>> model = UMT5Model.from_pretrained("google/umt5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> noisy_text = "UN Offizier sagt, dass weiter <extra_id_0> werden muss in Syrien."
>>> label = "<extra_id_0> verhandelt"
>>> inputs = tokenizer(inputs, return_tensors="pt")
>>> labels = tokenizer(label=label, return_tensors="pt")

>>> outputs = model(input_ids=inputs["input_ids"], decoder_input_ids=labels["input_ids"])
>>> hidden_states = outputs.last_hidden_state

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 输入序列标记在词汇表中的索引。UMT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。

    可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是输入 ID?

    要了解有关如何为预训练准备input_ids的更多信息,请查看 UMT5 Training。

  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在 [0, 1]

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

    • 0 表示标记被掩码

    什么是注意力掩码?

  • decoder_input_ids (torch.LongTensor of shape (batch_size, target_sequence_length), optional) — 解码器输入序列标记在词汇表中的索引。

    可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    UMT5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,可选择仅输入最后的decoder_input_ids(参见past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 UMT5 Training。

  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), optional) — 默认行为:生成一个忽略decoder_input_ids中填充标记的张量。因果掩码也将默认使用。

  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于在编码器的自注意力模块中使选定的头部失效的掩码。掩码值选定在 [0, 1]

    • 1 表示头部未被掩码

    • 0 表示头部被掩码

  • decoder_head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于在解码器的自注意力模块中使选定的头部失效的掩码。掩码值选定在 [0, 1]

    • 1 表示头部未被掩码

    • 0 表示头部被掩码

  • cross_attn_head_mask (torch.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于在解码器的交叉注意力模块中使选定的头部失效的掩码。掩码值选定在 [0, 1]

    • 1 表示头部未被掩码

    • 0 表示头部被掩码

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

  • past_key_values (tuple(tuple(torch.FloatTensor)),长度为config.n_layers,每个元组有 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)的张量) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。

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

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递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_embedsinputs_embeds的值。

  • use_cache (bool, optional) — 如果设置为True,则返回past_key_values键值状态,可用于加速解码(请参见past_key_values)。

  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states

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

返回

transformers.modeling_outputs.Seq2SeqModelOutput 或torch.FloatTensor元组

transformers.modeling_outputs.Seq2SeqModelOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(UMT5Config)和输入的不同元素。

  • last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size)) — 模型解码器最后一层的隐藏状态序列的输出。

    如果使用past_key_values,则仅输出形状为(batch_size, 1, hidden_size)序列的最后隐藏状态。

  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, 当传递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输入)。

  • decoder_hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每一层的输出)。

    解码器在每一层的输出处的隐藏状态以及可选的初始嵌入输出。

  • decoder_attentions (tuple(torch.FloatTensor), 可选的, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(torch.FloatTensor), 可选的, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选的) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(torch.FloatTensor), 可选的, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(如果模型有嵌入层,则为嵌入的输出 + 每层的输出)。

    每层编码器的隐藏状态以及可选的初始嵌入输出。

  • encoder_attentions (tuple(torch.FloatTensor), 可选的, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

UMT5Model 的前向方法,覆盖了 __call__ 特殊方法。

虽然前向传递的步骤需要在这个函数内定义,但应该在之后调用 Module 实例,而不是这个函数,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, UMT5Model

>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> model = UMT5Model.from_pretrained("google/umt5-small")

>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids  # Batch size 1

>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for UMT5Model.
>>> # This is not needed for torch's UMT5ForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)

>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state

UMT5ForConditionalGeneration

class transformers.UMT5ForConditionalGeneration

< source >

( config )

参数

  • config (UMT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。

UMT5 模型顶部带有 language modeling 头部。

UMT5 模型是由 Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu 在 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer 中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器 transformer。

这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

这个模型也是一个 PyTorch torch.nn.Module 子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

示例:

>>> from transformers import UMT5ForConditionalGeneration, AutoTokenizer

>>> model = UMT5ForConditionalGeneration.from_pretrained("google/umt5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
>>> summary = "Weiter Verhandlung in Syrien."
>>> inputs = tokenizer(article, text_target=summary, return_tensors="pt")

>>> outputs = model(**inputs)
>>> loss = outputs.loss

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqLMOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor)- 词汇表中输入序列标记的索引。UMT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是输入 ID?

    要了解有关如何为预训练准备input_ids的更多信息,请查看 UMT5 训练。

  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)- 用于避免在填充标记索引上执行注意力的掩码。选定的掩码值为[0, 1]

    • 1 表示未被掩盖的标记,

    • 0 表示被掩盖的标记。

    什么是注意力掩码?

  • decoder_input_ids(形状为(batch_size, target_sequence_length)torch.LongTensor可选)- 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    UMT5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,可选择仅输入最后的decoder_input_ids(参见past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 UMT5 训练。

  • decoder_attention_mask(形状为(batch_size, target_sequence_length)torch.BoolTensor可选)- 默认行为:生成一个忽略decoder_input_ids中填充标记的张量。因果掩码也将默认使用。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于在编码器中使自注意力模块的选定头部失效的掩码。选定的掩码值为[0, 1]

    • 1 表示头部未被掩盖,

    • 0 表示头部被掩盖。

  • decoder_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于在解码器中使自注意力模块的选定头部失效的掩码。选定的掩码值为[0, 1]

    • 1 表示头部未被掩盖,

    • 0 表示头部被掩盖。

  • cross_attn_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.Tensor可选)- 用于在解码器中使交叉注意力模块的选定头部失效的掩码。选定的掩码值为[0, 1]

    • 1 表示头部未被掩盖,

    • 0 表示头部被掩盖。

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

  • past_key_values长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含 4 个形状为(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

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

  • decoder_inputs_embeds (torch.FloatTensor,形状为(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_embedsinputs_embeds的值。

  • use_cache (bool, optional) — 如果设置为True,将返回past_key_values键值状态,并可用于加速解码(请参见past_key_values)。

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

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states

  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。

  • labels (torch.LongTensor,形状为(batch_size,)optional) — 用于计算序列分类/回归损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]范围内。所有标签设置为-100都将被忽略(掩码),损失仅计算[0, ..., config.vocab_size]范围内的标签。

返回

transformers.modeling_outputs.Seq2SeqLMOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqLMOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含各种元素,这取决于配置(UMT5Config)和输入。

  • loss (torch.FloatTensor,形状为(1,)optional),当提供labels时返回 — 语言建模损失。

  • logits (torch.FloatTensor,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。

  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, 当传递use_cache=Trueconfig.use_cache=True时返回 — 长度为config.n_layers的元组,每个元组有 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输入)。

  • decoder_hidden_states (tuple(torch.FloatTensor), 可选的, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入层的输出+每层的输出)。

    解码器在每一层的输出以及初始嵌入输出的隐藏状态。

  • decoder_attentions (tuple(torch.FloatTensor), 可选的, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(torch.FloatTensor), 可选的, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选的) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(torch.FloatTensor), 可选的, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入层的输出+每层的输出)。

    编码器在每一层的输出以及初始嵌入输出的隐藏状态。

  • encoder_attentions (tuple(torch.FloatTensor), 可选的, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

UMT5ForConditionalGeneration 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, UMT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> model = UMT5ForConditionalGeneration.from_pretrained("google/umt5-small")

>>> # training
>>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
>>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="pt").input_ids
>>> outputs = model(input_ids=input_ids, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits

>>> # inference
>>> input_ids = tokenizer("Studies have shown that <extra_id_0> good for you", return_tensors="pt").input_ids
>>> outputs = model.generate(input_ids)
>>> tokenizer.decode(outputs[0], skip_special_tokens=True)

UMT5 编码器模型

class transformers.UMT5EncoderModel

< source >

( config )

参数

  • config (UMT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

裸的 UMT5 模型变压器,输出编码器的原始隐藏状态,没有特定的头部。

UMT5 模型是由 Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu 在探索统一文本到文本 Transformer 的迁移学习极限中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器 Transformer。

该模型继承自 PreTrainedModel。检查超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

该模型还是一个 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

示例:

>>> from transformers import UMT5EncoderModel, AutoTokenizer

>>> model = UMT5EncoderModel.from_pretrained("google/umt5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
>>> input_ids = tokenizer(article, return_tensors="pt").input_ids
>>> outputs = model(input_ids)
>>> hidden_state = outputs.last_hidden_state

forward

< source >

( input_ids: Optional = None attention_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。UMT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    要了解有关如何为预训练准备input_ids的更多信息,请查看 UMT5 Training。

  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示未被masked的标记,

    • 0 表示被masked的标记。

    什么是注意力掩码?

  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部是not masked

    • 0 表示头部是masked

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

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

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的hidden_states

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

返回

transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含根据配置(UMT5Config)和输入的不同元素。

  • last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出+每个层的输出)的形状为(batch_size, sequence_length, hidden_size)

    模型在每个层的输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — torch.FloatTensor元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)

    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

UMT5EncoderModel 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, UMT5EncoderModel

>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> model = UMT5EncoderModel.from_pretrained("google/umt5-small")
>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> outputs = model(input_ids=input_ids)
>>> last_hidden_states = outputs.last_hidden_state

UMT5ForSequenceClassification

class transformers.UMT5ForSequenceClassification

<来源>

( config: UMT5Config )

参数

  • config(UMT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

UMT5 模型在顶部具有序列分类/头(在汇聚输出之上的线性层),例如用于 GLUE 任务。

UMT5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本 Transformer 的迁移学习极限中提出。它是在文本到文本去噪生成设置中预训练的编码器解码器 Transformer。

此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

此模型还是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以了解所有与一般用法和行为相关的事项。

forward

<来源>

( input_ids: LongTensor = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor) — 词汇表中输入序列标记的索引。UMT5 是一个具有相对位置嵌入的模型,因此应该能够在右侧和左侧都填充输入。

    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()以获取详细信息。

    什么是输入 ID?

    要了解如何为预训练准备input_ids,请查看 UMT5 Training。

  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)— 用于避免在填充标记索引上执行注意力的掩码。在[0, 1]中选择的掩码值:

    • 1 表示未被“掩盖”的标记,

    • 0 表示被“掩盖”的标记。

    什么是注意力掩码?

  • decoder_input_ids(形状为(batch_size, target_sequence_length)torch.LongTensor可选)— 解码器输入序列标记在词汇表中的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入标识?

    UMT5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,则只需输入最后的decoder_input_ids(参见past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 UMT5 Training。

  • decoder_attention_mask(形状为(batch_size, target_sequence_length)torch.BoolTensor可选)— 默认行为:生成一个忽略decoder_input_ids中填充标记的张量。因果掩码也将默认使用。

  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)— 用于在编码器的自注意力模块中使选定的头部失效的掩码。在[0, 1]中选择的掩码值:

    • 1 表示头部未被“掩盖”,

    • 0 表示头部被“掩盖”。

  • decoder_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)— 用于在解码器的自注意力模块中使选定的头部失效的掩码。在[0, 1]中选择的掩码值:

    • 1 表示头部未被“掩盖”,

    • 0 表示头部被“掩盖”。

  • cross_attn_head_mask(形状为(num_heads,)(num_layers, num_heads)torch.Tensor可选)— 用于在解码器的交叉注意力模块中使选定的头部失效的掩码。在[0, 1]中选择的掩码值:

    • 1 表示头部未被“掩盖”,

    • 0 表示头部被“掩盖”。

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

  • past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组有 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)的张量)— 包含注意力块的预计算键和值隐藏状态。可用于加速解码。

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

  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制权,以便将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。

  • decoder_inputs_embeds (torch.FloatTensor of shape (batch_size, target_sequence_length, hidden_size), 可选) — 可选择直接传递嵌入表示,而不是传递decoder_input_ids。如果使用了past_key_values,则只需输入最后的decoder_inputs_embeds(参见past_key_values)。如果您想要更多控制如何将decoder_input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。

    如果decoder_input_idsdecoder_inputs_embeds都未设置,则decoder_inputs_embedsinputs_embeds的值。

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

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

  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states

  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

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

返回值

transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput 或一个torch.FloatTensor元组(如果传递了return_dict=Falseconfig.return_dict=False时)包含各种元素,取决于配置(UMT5Config)和输入。

  • loss (torch.FloatTensor of shape (1,), 可选, 当提供label时返回) — 分类(如果config.num_labels==1则为回归)损失。

  • logits (torch.FloatTensor of shape (batch_size, config.num_labels)) — 分类(如果config.num_labels==1则为回归)得分(SoftMax 之前)。

  • 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输入)。

  • decoder_hidden_states (tuple(torch.FloatTensor), 可选, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入输出的一个,加上每层的输出一个)。

    每层解码器的隐藏状态加上每层初始嵌入输出。

  • decoder_attentions (tuple(torch.FloatTensor), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入输出的一个,加上每层的输出的一个)。

    每层编码器的隐藏状态加上初始嵌入输出。

  • encoder_attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

UMT5ForSequenceClassification 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。

UMT5ForQuestionAnswering

class transformers.UMT5ForQuestionAnswering

<来源>

( config )

参数

  • config(UMT5Config) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

UMT5 模型在顶部具有一个用于提取式问答任务(如 SQuAD)的跨度分类头(线性层在隐藏状态输出之上用于计算跨度起始 logits跨度结束 logits)。

UMT5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本 Transformer 的迁移学习极限中提出。它是一个在文本到文本去噪生成设置中预训练的编码器解码器 Transformer。

此模型继承自 PreTrainedModel。检查超类文档以获取库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型也是 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None start_positions: Optional = None end_positions: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。UMT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是输入 ID?

    要了解有关如何为预训练准备input_ids的更多信息,请查看 UMT5 Training。

  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在 [0, 1]

    • 1 表示未被遮蔽的标记,

    • 0 表示被遮蔽的标记。

    什么是注意力掩码?

  • decoder_input_ids (torch.LongTensor of shape (batch_size, target_sequence_length), optional) — 词汇表中解码器输入序列标记的索引。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。

    什么是解码器输入 ID?

    UMT5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用past_key_values,则只需输入最后的decoder_input_ids(请参阅past_key_values)。

    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 UMT5 Training。

  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), optional) — 默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果掩码也将默认使用。

  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于在编码器的自注意力模块中使选定头部失效的掩码。掩码值选定在 [0, 1]

    • 1 表示头部未被遮蔽,

    • 0 表示头部被遮蔽。

  • decoder_head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于在解码器的自注意力模块中使选定头部失效的掩码。掩码值选定在 [0, 1]

    • 1 表示头部未被遮蔽,

    • 0 表示头部被遮蔽。

  • cross_attn_head_mask (torch.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于在解码器中使交叉注意力模块中的选定头部失效的掩码。掩码值选定在 [0, 1]

    • 1 表示头部未被遮蔽,

    • 0 表示头部被遮蔽。

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

  • past_key_values (tuple(tuple(torch.FloatTensor)) of length config.n_layers with each tuple having 4 tensors of shape (batch_size, num_heads, sequence_length - 1, embed_size_per_head)) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。

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

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 可选,您可以选择直接传递嵌入表示,而不是传递 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_embedsinputs_embeds 的值。

  • use_cache (bool, optional) — 如果设置为 True,则返回 past_key_values 键值状态,并可用于加速解码(参见 past_key_values)。

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

  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states

  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。

  • start_positions (torch.LongTensor of shape (batch_size,), optional) — 用于计算标记跨度开始位置的位置(索引)的标签。位置被夹紧到序列的长度(sequence_length)。超出序列范围的位置不会被考虑在内计算损失。

  • end_positions (torch.LongTensor of shape (batch_size,), optional) — 用于计算标记跨度结束位置的位置(索引)的标签。位置被夹紧到序列的长度(sequence_length)。超出序列范围的位置不会被考虑在内计算损失。

返回

transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含根据配置(UMT5Config)和输入的各种元素。

  • loss (torch.FloatTensor of shape (1,), optional, 当提供 labels 时返回) — 总跨度提取损失是开始和结束位置的交叉熵之和。

  • start_logits (torch.FloatTensor of shape (batch_size, sequence_length)) — 跨度开始分数(SoftMax 之前)。

  • end_logits (torch.FloatTensor of shape (batch_size, sequence_length)) — 跨度结束分数(SoftMax 之前)。

  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, 当传递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输入)。

  • decoder_hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入层的输出,如果模型有嵌入层的话,+ 一个用于每个层的输出)。

    解码器每一层的隐藏状态加上初始嵌入输出。

  • decoder_attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每个层一个)。

    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

  • cross_attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每个层一个)。

    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

  • encoder_last_hidden_state (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)optional) — 模型编码器最后一层的隐藏状态序列。

  • encoder_hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入层的输出,如果模型有嵌入层的话,+ 一个用于每个层的输出)。

    编码器每一层的隐藏状态加上初始嵌入输出。

  • encoder_attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每个层一个)。

    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

UMT5ForQuestionAnswering 的前向方法重写了__call__特殊方法。

虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者负责运行前后处理步骤,而后者会默默地忽略它们。

posted @ 2024-06-22 14:14  绝不原创的飞龙  阅读(43)  评论(0编辑  收藏  举报