Transformers 4.37 中文文档(四十一)(1)

简介: Transformers 4.37 中文文档(四十一)


原文:huggingface.co/docs/transformers

LongT5

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

概述

LongT5 模型是由 Mandy Guo、Joshua Ainslie、David Uthus、Santiago Ontanon、Jianmo Ni、Yun-Hsuan Sung 和 Yinfei Yang 在LongT5: Efficient Text-To-Text Transformer for Long Sequences中提出的。它是在文本到文本去噪生成设置中预训练的编码器-解码器变压器。LongT5 模型是 T5 模型的扩展,它可以使用两种不同的高效注意力机制之一——(1)局部注意力,或(2)瞬时全局注意力。

论文摘要如下:

最近的工作表明,要么增加输入长度,要么增加模型大小可以提高基于 Transformer 的神经模型的性能。在本文中,我们提出了一个名为  LongT5 的新模型,通过该模型我们同时探索了扩展输入长度和模型大小的效果。具体来说,我们将长输入变压器(ETC)的注意力思想与摘要预训练(PEGASUS)的预训练策略整合到可扩展的  T5 架构中。结果是一个我们称之为“瞬时全局”(TGlobal)的新注意力机制,模仿了 ETC  的局部/全局注意力机制,但不需要额外的辅助输入。我们能够在几个摘要任务上取得最先进的结果,并在问答任务上胜过原始的 T5 模型。

这个模型是由stancld贡献的。原始代码可以在这里找到。

使用提示

  • LongT5ForConditionalGeneration 是 T5ForConditionalGeneration 的扩展,用高效的“局部”注意力或“瞬时全局”(tglobal)注意力交换传统的编码器“自注意力”层。
  • 与 T5 模型不同,LongT5 不使用任务前缀。此外,它使用了受 PegasusForConditionalGeneration 预训练启发的不同预训练目标。
  • LongT5 模型旨在在输入序列超过常用的 512 个标记的长距离序列任务上高效地运行并表现良好。它能够处理长度长达 16,384 个标记的输入序列。
  • 对于“局部注意力”,稀疏滑动窗口局部注意力操作允许给定标记仅关注其左右r个标记(默认为r=127)。“局部注意力”不向模型引入任何新参数。该机制的复杂度与输入序列长度l呈线性关系:O(l*r)
  • “瞬时全局注意力”是“局部注意力”的扩展。此外,它允许每个输入标记与该层中的所有其他标记进行交互。这是通过将输入序列分割为固定长度k的块(默认为k=16)来实现的。然后,通过对该块中每个标记的嵌入进行求和和归一化,获得该块的全局标记。由于这一点,注意力机制允许每个标记既关注像局部注意力中的附近标记,也关注像标准全局注意力中的每个全局标记(“瞬时”表示全局标记在每个注意力操作中动态构建)。因此,“TGlobal”注意力引入了一些新参数——全局相对位置偏差和全局标记嵌入的层归一化。该机制的复杂度为O(l(r + l/k))
  • 下面是一个示例,展示了如何在pubmed 数据集上评估一个经过精调的 LongT5 模型。
>>> import evaluate
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer, LongT5ForConditionalGeneration
>>> dataset = load_dataset("scientific_papers", "pubmed", split="validation")
>>> model = (
...     LongT5ForConditionalGeneration.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
...     .to("cuda")
...     .half()
... )
>>> tokenizer = AutoTokenizer.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
>>> def generate_answers(batch):
...     inputs_dict = tokenizer(
...         batch["article"], max_length=16384, padding="max_length", truncation=True, return_tensors="pt"
...     )
...     input_ids = inputs_dict.input_ids.to("cuda")
...     attention_mask = inputs_dict.attention_mask.to("cuda")
...     output_ids = model.generate(input_ids, attention_mask=attention_mask, max_length=512, num_beams=2)
...     batch["predicted_abstract"] = tokenizer.batch_decode(output_ids, skip_special_tokens=True)
...     return batch
>>> result = dataset.map(generate_answer, batched=True, batch_size=2)
>>> rouge = evaluate.load("rouge")
>>> rouge.compute(predictions=result["predicted_abstract"], references=result["abstract"])

资源

  • 翻译任务指南
  • 摘要任务指南

LongT5Config

class transformers.LongT5Config

<来源>

( vocab_size = 32128 d_model = 512 d_kv = 64 d_ff = 2048 num_layers = 6 num_decoder_layers = None num_heads = 8 local_radius = 127 global_block_size = 16 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 encoder_attention_type = 'local' use_cache = True pad_token_id = 0 eos_token_id = 1 **kwargs )

参数

  • vocab_size (int, optional, defaults to 32128) — LongT5 模型的词汇量。定义了在调用 LongT5Model 时可以表示的不同标记数量。
  • d_model (int, optional, defaults to 512) — 编码器层和池化层的大小。
  • d_kv (int, optional, defaults to 64) — 每个注意力头的键、查询、值投影的大小。d_kv必须等于d_model // num_heads
  • d_ff (int, optional, defaults to 2048) — 每个LongT5Block中间级前向层的大小。
  • num_layers (int, optional, defaults to 6) — Transformer 编码器中的隐藏层数量。
  • num_decoder_layers (int, optional) — Transformer 解码器中的隐藏层数量。如果未设置,将使用与num_layers相同的值。
  • num_heads (int, optional, defaults to 8) — Transformer 编码器中每个注意力层的注意力头数。
  • local_radius (int, optional, defaults to 127) — 每个标记左/右的标记数,用于在本地注意机制中进行本地自我关注。
  • global_block_size (int, optional, defaults to 16) — 输入序列分成用于全局标记表示的块的长度。仅用于encoder_attention_type = "transient-global"
  • 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。
  • initializer_factor (float, optional, defaults to 1) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。
  • feed_forward_proj (string, optional, defaults to "relu") — 要使用的前向层类型。应该是"relu""gated-gelu"之一。LongT5v1.1 使用"gated-gelu"前向投影。原始 LongT5 实现使用"gated-gelu"
  • encoder_attention_type (string, optional, defaults to "local") — 要使用的编码器注意类型。应该是 LongT5 实现支持的"local""transient-global"之一。
  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。

这是配置类,用于存储 LongT5Model 或 FlaxLongT5Model 的配置。根据指定的参数实例化一个 LongT5 模型,定义模型架构。使用默认值实例化配置将产生类似于 LongT5 google/long-t5-local-base架构的配置。

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

PytorchHide Pytorch 内容

LongT5Model

class transformers.LongT5Model

<来源>

( config: LongT5Config )

参数

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

LONGT5 模型是一个裸的 transformer 模型,输出原始的隐藏状态,没有特定的头部。

LongT5 模型是由 Mandy Guo、Joshua Ainslie、David Uthus、Santiago Ontanon、Jianmo Ni、Yun-Hsuan Sung 和 Yinfei Yang 在LongT5: Efficient Text-To-Text Transformer for Long Sequences中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器-解码器 transformer。LongT5 模型是 T5 模型的扩展,它可以使用两种不同的高效注意力机制之一 - (1) 本地注意力,或者(2) 瞬时-全局注意力。

这个模型继承自 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)— 输入序列标记在词汇表中的索引。LongT5 是一个带有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。
    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()获取详细信息。
    什么是输入 ID?
    要了解有关如何为预训练准备input_ids的更多信息,请查看长 T5 训练。
  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)— 避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]之间:
  • 对于未屏蔽的标记,
  • 对于屏蔽的标记为 0。
  • 什么是注意力掩码?
  • decoder_input_ids(形状为(batch_size, target_sequence_length)torch.LongTensor可选)— 解码器输入序列标记在词汇表中的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
    什么是解码器输入 ID?
    LONGT5 使用 pad_token_id 作为 decoder_input_ids 生成的起始标记。如果使用 past_key_values,则可以选择仅输入最后的 decoder_input_ids(参见 past_key_values)。
    要了解有关如何为预训练准备 decoder_input_ids 的更多信息,请查看 LONGT5 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_outputstuple(tuple(torch.FloatTensor)可选)- 元组包含 (last_hidden_state可选hidden_states可选attentions) last_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_embeds 将取 inputs_embeds 的值。
  • use_cachebool可选)- 如果设置为 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时)包含根据配置(LongT5Config)和输入的不同元素。

  • 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_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 之后,用于计算自注意力头中的加权平均值。

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

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

示例:

>>> from transformers import AutoTokenizer, LongT5Model
>>> tokenizer = AutoTokenizer.from_pretrained("google/long-t5-local-base")
>>> model = LongT5Model.from_pretrained("google/long-t5-local-base")
>>> # Let's try a very long encoder input.
>>> input_ids = tokenizer(
...     100 * "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
>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state

LongT5ForConditionalGeneration

class transformers.LongT5ForConditionalGeneration

<来源>

( config: LongT5Config )

参数

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

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

LongT5 模型是由 Mandy Guo、Joshua Ainslie、David Uthus、Santiago Ontanon、Jianmo Ni、Yun-Hsuan Sung 和 Yinfei Yang 在LongT5: Efficient Text-To-Text Transformer for Long Sequences中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器-解码器 transformer。LongT5 模型是 T5 模型的扩展,它可以使用两种不同的高效注意力机制之一 - (1) 本地注意力,或者(2) 瞬时全局注意力。

这个模型继承自 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_ids(形状为(batch_size, sequence_length)torch.LongTensor)- 词汇表中输入序列标记的索引。LongT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。
    可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
    要了解有关如何为预训练准备input_ids的更多信息,请查看长 T5 训练。
  • 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 是什么?
    LONGT5 使用pad_token_id作为decoder_input_ids生成的起始标记。如果使用了past_key_values,可以选择只输入最后一个decoder_input_ids(参见past_key_values)。
    要了解有关如何为预训练准备decoder_input_ids的更多信息,请查看 LONGT5 训练。
  • 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)),每个元组包含形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)的 4 个张量)— 包含注意力块的预计算键和值隐藏状态。可用于加速解码。
    如果使用了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_embeds将取inputs_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可选)— 用于计算序列分类/回归损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]中。所有标签设置为-100都将被忽略(掩码),损失仅计算在[0, ..., config.vocab_size]中的标签。

返回

transformers.modeling_outputs.Seq2SeqLMOutput 或torch.FloatTensor的元组

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

  • loss(形状为(1,)torch.FloatTensor可选,当提供labels时返回)— 语言建模损失。
  • logits(形状为(batch_size, sequence_length, config.vocab_size)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 (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选) — 模型编码器最后一层的隐藏状态序列。
  • encoder_hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=True或当config.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出+每层的输出)。
    编码器在每一层的隐藏状态以及初始嵌入输出。
  • encoder_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

LongT5ForConditionalGeneration 的前向方法重写了__call__特殊方法。

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

示例:

>>> from transformers import AutoTokenizer, LongT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
>>> model = LongT5ForConditionalGeneration.from_pretrained(
...     "Stancld/longt5-tglobal-large-16384-pubmed-3k_steps"
... )
>>> # Let's try a very long input.
>>> inputs = tokenizer(100 * "studies have shown that owning a dog is good for you ", return_tensors="pt")
>>> input_ids = inputs.input_ids
>>> outputs = model.generate(input_ids)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
abstractthe aim of this article is to provide an overview of the literature on the role of dog


Transformers 4.37 中文文档(四十一)(2)https://developer.aliyun.com/article/1565234

目录
打赏
0
相关文章
Transformers 4.37 中文文档(八十六)(2)
Transformers 4.37 中文文档(八十六)
49 3
Transformers 4.37 中文文档(八十六)(4)
Transformers 4.37 中文文档(八十六)
35 3
Transformers 4.37 中文文档(八十六)(1)
Transformers 4.37 中文文档(八十六)
63 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等