Transformers 文档

LED

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

此模型于 2020-04-10 发布,并于 2021-01-05 添加到 Hugging Face Transformers。

PyTorch

LED

Longformer-Encoder-Decoder (LED) 是一种用于序列到序列任务(如摘要生成)的编码器-解码器 Transformer 模型。它扩展了专为处理长输入而设计的纯编码器模型 Longformer,增加了额外的解码器层。解码器对编码的 token 和先前解码的位置使用完整的自注意力机制。由于 Longformer 的线性自注意力机制,LED 在处理长序列时比标准的编码器-解码器模型更高效。

您可以在 Ai2 组织下找到所有原始 [LED] 检查点。

此模型由 patrickvonplaten 贡献。

单击右侧边栏中的 LED 模型,查看更多将 LED 应用于不同语言任务的示例。

下面的示例演示了如何使用 PipelineAutoModel 和命令行来总结文本。

流水线
自动模型
transformers
import torch
from transformers import pipeline

pipeline = pipeline(
    task="summarization",
    model="allenai/led-base-16384",
    dtype=torch.float16,
    device=0
)
pipeline("""Plants are among the most remarkable and essential life forms on Earth, possessing a unique ability to produce their own food through a process known as photosynthesis. This complex biochemical process is fundamental not only to plant life but to virtually all life on the planet.
Through photosynthesis, plants capture energy from sunlight using a green pigment called chlorophyll, which is located in specialized cell structures called chloroplasts. In the presence of light, plants absorb carbon dioxide from the atmosphere through small pores in their leaves called stomata, and take in water from the soil through their root systems.
These ingredients are then transformed into glucose, a type of sugar that serves as a source of chemical energy, and oxygen, which is released as a byproduct into the atmosphere. The glucose produced during photosynthesis is not just used immediately; plants also store it as starch or convert it into other organic compounds like cellulose, which is essential for building their cellular structure.
This energy reserve allows them to grow, develop leaves, produce flowers, bear fruit, and carry out various physiological processes throughout their lifecycle.""")

量化通过以较低精度表示权重来减少大型模型的内存负担。有关更多可用量化后端,请参阅量化概述。

以下示例使用 bitsandbytes 将权重仅量化为 int4。

import torch
from transformers import BitsAndBytesConfig, AutoModelForSeq2SeqLM, AutoTokenizer

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_quant_type="nf4"
)
model = AutoModelForSeq2SeqLM.from_pretrained(
    "allenai/led-large-16384",
    dtype=torch.bfloat16,
    device_map="auto",
    quantization_config=quantization_config
)

tokenizer = AutoTokenizer.from_pretrained(
    "allenai/led-large-16384"
)

input_text = """Plants are among the most remarkable and essential life forms on Earth, possessing a unique ability to produce their own food through a process known as photosynthesis. This complex biochemical process is fundamental not only to plant life but to virtually all life on the planet.
Through photosynthesis, plants capture energy from sunlight using a green pigment called chlorophyll, which is located in specialized cell structures called chloroplasts. In the presence of light, plants absorb carbon dioxide from the atmosphere through small pores in their leaves called stomata, and take in water from the soil through their root systems.
These ingredients are then transformed into glucose, a type of sugar that serves as a source of chemical energy, and oxygen, which is released as a byproduct into the atmosphere. The glucose produced during photosynthesis is not just used immediately; plants also store it as starch or convert it into other organic compounds like cellulose, which is essential for building their cellular structure.
This energy reserve allows them to grow, develop leaves, produce flowers, bear fruit, and carry out various physiological processes throughout their lifecycle."""
input_ids = tokenizer(input_text, return_tensors="pt").to(model.device)

# Place global attention on the first token
global_attention_mask = torch.zeros_like(input_ids.input_ids).to(model.device)
global_attention_mask[:, 0] = 1

output = model.generate(**input_ids, global_attention_mask=global_attention_mask, cache_implementation="static")
print(tokenizer.decode(output[0], skip_special_tokens=True))

注意事项

  • LEDForConditionalGenerationBartForConditionalGeneration 的扩展,用 Longformer 的分块自注意力层替换了传统的自注意力层。 LEDTokenizerBartTokenizer 的别名。
  • 如果需要,LED 会将 input_ids 填充为 config.attention_window 的倍数。当 LEDTokenizerpad_to_multiple_of 参数一起使用时,可以获得小幅加速。
  • LED 在 input_ids 明显长于 1024 token 的长程序列到序列任务上表现最佳。
  • LED 通过 global_attention_mask 使用全局注意力(参见 LongformerModel)。对于摘要生成,建议仅在第一个 <s> token 上设置全局注意力。对于问答任务,建议在问题的所有 token 上设置全局注意力。
  • 要对 LED 的所有 16384 个参数进行微调,如果在训练过程中出现内存不足 (OOM) 错误,可以启用梯度检查点。通过添加 model.gradient_checkpointing_enable() 并设置 use_cache=False 来禁用缓存机制以节省内存。
  • 输入应在右侧进行填充,因为 LED 使用绝对位置嵌入。

资源

LEDConfig

class transformers.LEDConfig

< >

( vocab_size = 50265 max_encoder_position_embeddings = 16384 max_decoder_position_embeddings = 1024 encoder_layers = 12 encoder_ffn_dim = 4096 encoder_attention_heads = 16 decoder_layers = 12 decoder_ffn_dim = 4096 decoder_attention_heads = 16 encoder_layerdrop = 0.0 decoder_layerdrop = 0.0 use_cache = True is_encoder_decoder = True activation_function = 'gelu' d_model = 1024 dropout = 0.1 attention_dropout = 0.0 activation_dropout = 0.0 init_std = 0.02 decoder_start_token_id = 2 classifier_dropout = 0.0 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 attention_window: list[int] | int = 512 tie_word_embeddings: bool | None = True **kwargs )

参数

  • vocab_size (int, optional, defaults to 50265) — LED 模型的词汇表大小。定义了调用 LEDModel 时传入的 inputs_ids 可以表示的不同 token 数量。
  • d_model (int, optional, defaults to 1024) — 层和池化层的维度。
  • encoder_layers (int, optional, defaults to 12) — 编码器层的数量。
  • decoder_layers (int, optional, defaults to 12) — 解码器层的数量。
  • encoder_attention_heads (int, optional, defaults to 16) — Transformer 编码器中每个注意力层的注意力头数量。
  • decoder_attention_heads (int, optional, defaults to 16) — Transformer 解码器中每个注意力层的注意力头数量。
  • decoder_ffn_dim (int, optional, defaults to 4096) — 解码器中“中间”(通常称为前馈)层的维度。
  • encoder_ffn_dim (int, optional, defaults to 4096) — 解码器中“中间”(通常称为前馈)层的维度。
  • activation_function (str or function, optional, defaults to "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,支持 "gelu""relu""silu""gelu_new"
  • dropout (float, optional, defaults to 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_dropout (float, optional, defaults to 0.0) — 注意力概率的 dropout 率。
  • activation_dropout (float, optional, defaults to 0.0) — 全连接层内部激活的 dropout 率。
  • classifier_dropout (float, optional, defaults to 0.0) — 分类器的 dropout 率。
  • max_encoder_position_embeddings (int, optional, defaults to 16384) — 编码器可能使用的最大序列长度。
  • max_decoder_position_embeddings (int, optional, defaults to 16384) — 解码器可能使用的最大序列长度。
  • init_std (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态分布初始化器的标准差。
  • encoder_layerdrop (float, optional, defaults to 0.0) — 编码器的 LayerDrop 概率。有关更多详细信息,请参阅 [LayerDrop 论文](参见 https://huggingface.co/papers/1909.11556)。
  • decoder_layerdrop (float, optional, defaults to 0.0) — 解码器的 LayerDrop 概率。有关更多详细信息,请参阅 [LayerDrop 论文](参见 https://huggingface.co/papers/1909.11556)。
  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后一个 key/value 注意力(并非所有模型都使用)

这是用于存储 LEDModel 配置的配置类。它用于根据指定的参数实例化 LED 模型,定义模型架构。使用默认值实例化配置将生成与 LED allenai/led-base-16384 架构类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请阅读 PreTrainedConfig 的文档。

示例

>>> from transformers import LEDModel, LEDConfig

>>> # Initializing a LED allenai/led-base-16384 style configuration
>>> configuration = LEDConfig()

>>> # Initializing a model from the allenai/led-base-16384 style configuration
>>> model = LEDModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

LEDTokenizer

class transformers.RobertaTokenizer

< >

( vocab: str | dict[str, int] | None = None merges: str | list[str] | None = None errors: str = 'replace' bos_token: str = '<s>' eos_token: str = '</s>' sep_token: str = '</s>' cls_token: str = '<s>' unk_token: str = '<unk>' pad_token: str = '<pad>' mask_token: str = '<mask>' add_prefix_space: bool = False trim_offsets: bool = True **kwargs )

参数

  • vocab (str, dict or list, optional) — 自定义词汇表字典。如果未提供,则从 vocab_file 加载词汇表。
  • merges (str or list, optional) — 自定义合并列表。如果未提供,则从 merges_file 加载合并。
  • errors (str, optional, defaults to "replace") — 将字节解码为 UTF-8 时遵循的范例。有关详细信息,请参阅 bytes.decode
  • bos_token (str, optional, defaults to "<s>") — 预训练期间使用的序列开始 token。可用作序列分类器 token。

    使用特殊 token 构建序列时,这不是用于序列开始的 token。所使用的 token 是 cls_token

  • eos_token (str, optional, defaults to "</s>") — 序列结束符。

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

  • sep_token (str, optional, defaults to "</s>") — 分隔符标记,用于从多个序列构建序列时,例如用于序列分类的两个序列,或用于问答的文本和问题。它也用作使用特殊标记构建的序列的最后一个标记。
  • cls_token (str, optional, defaults to "<s>") — 分类器标记,用于进行序列分类(对整个序列进行分类,而不是按标记进行分类)。它是在使用特殊标记构建序列时的第一个标记。
  • unk_token (str, optional, defaults to "<unk>") — 未知标记。不在词汇表中的标记无法转换为ID,而是设置为此标记。
  • pad_token (str, optional, defaults to "<pad>") — 用于填充的标记,例如在对不同长度的序列进行批处理时。
  • mask_token (str, optional, defaults to "<mask>") — 用于掩盖值的标记。这是在训练模型进行掩码语言建模时使用的标记。这是模型将尝试预测的标记。
  • add_prefix_space (bool, optional, defaults to False) — 是否在输入中添加初始空格。这允许将开头的词视为与任何其他词一样。(RoBERTa分词器通过前面的空格检测词的开头)。
  • trim_offsets (bool, optional, defaults to True) — 后处理步骤是否应修剪偏移量以避免包含空白字符。

Construct a RoBERTa tokenizer (backed by HuggingFace’s tokenizers library). Based on Byte-Pair-Encoding.

这个分词器经过训练,将空格视为词元的一部分(有点像 sentencepiece),所以一个词会

无论是否在句子开头(无空格),编码方式都会不同

>>> from transformers import RobertaTokenizer

>>> tokenizer = RobertaTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> tokenizer("Hello world")["input_ids"]
[0, 31414, 232, 2]

>>> tokenizer(" Hello world")["input_ids"]
[0, 20920, 232, 2]

您可以通过在实例化此分词器时或在对某些文本调用它时传递 add_prefix_space=True 来绕过此行为,但由于模型并非以这种方式进行预训练,这可能会导致性能下降。

当与 is_split_into_words=True 一起使用时,此分词器需要以 add_prefix_space=True 进行实例化。

此分词器继承自 TokenizersBackend,其中包含大部分主要方法。用户应参考此父类了解有关这些方法的更多信息。

get_special_tokens_mask

< >

( token_ids_0: list[int] token_ids_1: list[int] | None = None already_has_special_tokens: bool = False ) 一个介于 0 和 1 之间的整数列表

参数

  • token_ids_0 — (可能已格式化的)序列的 ID 列表。
  • token_ids_1 — 当 already_has_special_tokens=True 时未使用。在这种情况下必须为 None。
  • already_has_special_tokens — 序列是否已用特殊标记格式化。

返回

一个范围在 [0, 1] 的整数列表

特殊令牌为 1,序列令牌为 0。

Retrieve sequence ids from a token list that has no special tokens added.

For fast tokenizers, data collators call this with already_has_special_tokens=True to build a mask over an already-formatted sequence. In that case, we compute the mask by checking membership in all_special_ids.

save_vocabulary

< >

( save_directory: str filename_prefix: str | None = None )

LEDTokenizerFast

class transformers.RobertaTokenizer

< >

( vocab: str | dict[str, int] | None = None merges: str | list[str] | None = None errors: str = 'replace' bos_token: str = '<s>' eos_token: str = '</s>' sep_token: str = '</s>' cls_token: str = '<s>' unk_token: str = '<unk>' pad_token: str = '<pad>' mask_token: str = '<mask>' add_prefix_space: bool = False trim_offsets: bool = True **kwargs )

参数

  • vocab (str, dict or list, optional) — 自定义词汇表字典。如果未提供,则从 vocab_file 加载词汇表。
  • merges (str or list, optional) — 自定义合并列表。如果未提供,则从 merges_file 加载合并。
  • errors (str, optional, defaults to "replace") — 将字节解码为 UTF-8 时遵循的范例。有关详细信息,请参阅 bytes.decode
  • bos_token (str, optional, defaults to "<s>") — 预训练期间使用的序列开始 token。可用作序列分类器 token。

    使用特殊 token 构建序列时,这不是用于序列开始的 token。所使用的 token 是 cls_token

  • eos_token (str, optional, defaults to "</s>") — 序列结束符。

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

  • sep_token (str, optional, defaults to "</s>") — 分隔符标记,用于从多个序列构建序列时,例如用于序列分类的两个序列,或用于问答的文本和问题。它也用作使用特殊标记构建的序列的最后一个标记。
  • cls_token (str, optional, defaults to "<s>") — 分类器标记,用于进行序列分类(对整个序列进行分类,而不是按标记进行分类)。它是在使用特殊标记构建序列时的第一个标记。
  • unk_token (str, optional, defaults to "<unk>") — 未知标记。不在词汇表中的标记无法转换为ID,而是设置为此标记。
  • pad_token (str, optional, defaults to "<pad>") — 用于填充的标记,例如在对不同长度的序列进行批处理时。
  • mask_token (str, optional, defaults to "<mask>") — 用于掩盖值的标记。这是在训练模型进行掩码语言建模时使用的标记。这是模型将尝试预测的标记。
  • add_prefix_space (bool, optional, defaults to False) — 是否在输入中添加初始空格。这允许将开头的词视为与任何其他词一样。(RoBERTa分词器通过前面的空格检测词的开头)。
  • trim_offsets (bool, optional, defaults to True) — 后处理步骤是否应修剪偏移量以避免包含空白字符。

Construct a RoBERTa tokenizer (backed by HuggingFace’s tokenizers library). Based on Byte-Pair-Encoding.

这个分词器经过训练,将空格视为词元的一部分(有点像 sentencepiece),所以一个词会

无论是否在句子开头(无空格),编码方式都会不同

>>> from transformers import RobertaTokenizer

>>> tokenizer = RobertaTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> tokenizer("Hello world")["input_ids"]
[0, 31414, 232, 2]

>>> tokenizer(" Hello world")["input_ids"]
[0, 20920, 232, 2]

您可以通过在实例化此分词器时或在对某些文本调用它时传递 add_prefix_space=True 来绕过此行为,但由于模型并非以这种方式进行预训练,这可能会导致性能下降。

当与 is_split_into_words=True 一起使用时,此分词器需要以 add_prefix_space=True 进行实例化。

此分词器继承自 TokenizersBackend,其中包含大部分主要方法。用户应参考此父类了解有关这些方法的更多信息。

LED specific outputs

class transformers.models.led.modeling_led.LEDEncoderBaseModelOutput

< >

( last_hidden_state: FloatTensor hidden_states: tuple[torch.FloatTensor, ...] | None = None attentions: tuple[torch.FloatTensor, ...] | None = None global_attentions: tuple[torch.FloatTensor, ...] | None = None )

参数

  • last_hidden_state (<class 'torch.FloatTensor'>.last_hidden_state of shape (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。
  • hidden_states (tuple[torch.FloatTensor, ...] | None.hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — torch.FloatTensor 的元组(如果模型有嵌入层,则包含嵌入输出,加上每层输出)形状为 (batch_size, sequence_length, hidden_size)

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

  • attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, x + attention_window + 1),其中 x 是具有全局注意力掩码的标记数量。

    注意力 softmax 后的局部注意力权重,用于计算自注意力头中的加权平均值。这些是序列中每个标记对具有全局注意力(前 x 个值)的每个标记以及对注意力窗口中每个标记(剩余 `attention_window

    • 1个值)的注意力权重。请注意,前x个值指的是文本中位置固定的标记,但剩余的attention_window + 1个值指的是相对位置的标记:标记对自身的注意力权重位于索引x + attention_window / 2处,并且前面的attention_window / 2个值(后面的attention_window / 2个值)是对前面(后面)attention_window / 2个标记的注意力权重。如果注意力窗口包含具有全局注意力的标记,则相应索引处的注意力权重设置为 0;该值应从前x个注意力权重中获取。如果一个标记具有全局注意力,则对attentions中所有其他标记的注意力权重设置为 0,该值应从global_attentions` 中获取。
  • global_attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, x),其中 x 是具有全局注意力掩码的标记数量。

    注意力 softmax 后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记对序列中每个标记的注意力权重。

Base class for LEDEncoder’s outputs, with potential hidden states, local and global attentions.

class transformers.models.led.modeling_led.LEDSeq2SeqModelOutput

< >

( last_hidden_state: torch.FloatTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None decoder_hidden_states: tuple[torch.FloatTensor, ...] | None = None decoder_attentions: tuple[torch.FloatTensor, ...] | None = None cross_attentions: tuple[torch.FloatTensor, ...] | None = None encoder_last_hidden_state: torch.FloatTensor | None = None encoder_hidden_states: tuple[torch.FloatTensor, ...] | None = None encoder_attentions: tuple[torch.FloatTensor, ...] | None = None encoder_global_attentions: tuple[torch.FloatTensor, ...] | None = None )

参数

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

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

  • past_key_values (Cache, optional, returned when use_cache=True is passed or when config.use_cache=True) — 这是一个 Cache 实例。有关更多详细信息,请参阅我们的 kv cache guide

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

  • decoder_hidden_states (tuple[torch.FloatTensor, ...] | None.decoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — torch.FloatTensor 的元组(如果模型有嵌入层,则包含嵌入输出,加上每层输出)形状为 (batch_size, sequence_length, hidden_size)

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

  • decoder_attentions (tuple[torch.FloatTensor, ...] | None.decoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • cross_attentions (tuple[torch.FloatTensor, ...] | None.cross_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • encoder_last_hidden_state (torch.FloatTensor | None.encoder_last_hidden_state of shape (batch_size, sequence_length, hidden_size), defaults to None) — 模型编码器最后一层输出的隐藏状态序列。
  • encoder_hidden_states (tuple[torch.FloatTensor, ...] | None.encoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — torch.FloatTensor 的元组(如果模型有嵌入层,则包含嵌入输出,加上每层输出)形状为 (batch_size, sequence_length, hidden_size)

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

  • encoder_attentions (tuple[torch.FloatTensor, ...] | None.encoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • encoder_global_attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, x),其中 x 是具有全局注意力掩码的标记数量。

    注意力 softmax 后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记对序列中每个标记的注意力权重。

模型编码器输出的基类,也包含:可加速顺序解码的预计算隐藏状态。

class transformers.models.led.modeling_led.LEDSeq2SeqLMOutput

< >

( loss: torch.FloatTensor | None = None logits: torch.FloatTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None decoder_hidden_states: tuple[torch.FloatTensor, ...] | None = None decoder_attentions: tuple[torch.FloatTensor, ...] | None = None cross_attentions: tuple[torch.FloatTensor, ...] | None = None encoder_last_hidden_state: torch.FloatTensor | None = None encoder_hidden_states: tuple[torch.FloatTensor, ...] | None = None encoder_attentions: tuple[torch.FloatTensor, ...] | None = None encoder_global_attentions: tuple[torch.FloatTensor, ...] | None = None )

参数

  • loss (torch.FloatTensor of shape (1,), optional, returned when labels is provided) — 语言建模损失。
  • logits (torch.FloatTensor of shape (batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前的每个词汇标记的分数)。
  • past_key_values (Cache, optional, returned when use_cache=True is passed or when config.use_cache=True) — 这是一个 Cache 实例。有关更多详细信息,请参阅我们的 kv cache guide

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

  • decoder_hidden_states (tuple[torch.FloatTensor, ...] | None.decoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — torch.FloatTensor 的元组(如果模型有嵌入层,则包含嵌入输出,加上每层输出)形状为 (batch_size, sequence_length, hidden_size)

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

  • decoder_attentions (tuple[torch.FloatTensor, ...] | None.decoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • cross_attentions (tuple[torch.FloatTensor, ...] | None.cross_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • encoder_last_hidden_state (torch.FloatTensor | None.encoder_last_hidden_state of shape (batch_size, sequence_length, hidden_size), defaults to None) — 模型编码器最后一层输出的隐藏状态序列。
  • encoder_hidden_states (tuple[torch.FloatTensor, ...] | None.encoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — torch.FloatTensor 的元组(如果模型有嵌入层,则包含嵌入输出,加上每层输出)形状为 (batch_size, sequence_length, hidden_size)

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

  • encoder_attentions (tuple[torch.FloatTensor, ...] | None.encoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • encoder_global_attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, x),其中 x 是具有全局注意力掩码的标记数量。

    注意力 softmax 后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记对序列中每个标记的注意力权重。

序列到序列语言模型输出的基类。

class transformers.models.led.modeling_led.LEDSeq2SeqSequenceClassifierOutput

< >

( loss: torch.FloatTensor | None = None logits: torch.FloatTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None decoder_hidden_states: tuple[torch.FloatTensor, ...] | None = None decoder_attentions: tuple[torch.FloatTensor, ...] | None = None cross_attentions: tuple[torch.FloatTensor, ...] | None = None encoder_last_hidden_state: torch.FloatTensor | None = None encoder_hidden_states: tuple[torch.FloatTensor, ...] | None = None encoder_attentions: tuple[torch.FloatTensor, ...] | None = None encoder_global_attentions: tuple[torch.FloatTensor, ...] | None = None )

参数

  • loss (torch.FloatTensor of shape (1,), optional, returned when label is provided) — 分类(如果 config.num_labels==1,则为回归)损失。
  • logits (torch.FloatTensor of shape (batch_size, config.num_labels)) — 分类(如果 config.num_labels==1,则为回归)分数(SoftMax 之前的分数)。
  • past_key_values (Cache, optional, returned when use_cache=True is passed or when config.use_cache=True) — 这是一个 Cache 实例。有关更多详细信息,请参阅我们的 kv cache guide

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

  • decoder_hidden_states (tuple[torch.FloatTensor, ...] | None.decoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — torch.FloatTensor 的元组(如果模型有嵌入层,则包含嵌入输出,加上每层输出)形状为 (batch_size, sequence_length, hidden_size)

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

  • decoder_attentions (tuple[torch.FloatTensor, ...] | None.decoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • cross_attentions (tuple[torch.FloatTensor, ...] | None.cross_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 的元组(每层一个)形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • encoder_last_hidden_state (torch.FloatTensor | None.encoder_last_hidden_state of shape (batch_size, sequence_length, hidden_size), defaults to None) — 模型的编码器最后一层的隐藏状态序列。
  • encoder_hidden_states (tuple[torch.FloatTensor, ...] | None.encoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • encoder_attentions (tuple[torch.FloatTensor, ...] | None.encoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • encoder_global_attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, x)torch.FloatTensor 元组(每层一个),其中 x 是具有全局注意力掩码的标记数量。

    编码器中经过注意力 softmax 后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记对序列中所有标记的注意力权重。

序列到序列句子分类模型输出的基类。

class transformers.models.led.modeling_led.LEDSeq2SeqQuestionAnsweringModelOutput

< >

( loss: torch.FloatTensor | None = None start_logits: torch.FloatTensor | None = None end_logits: torch.FloatTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None decoder_hidden_states: tuple[torch.FloatTensor, ...] | None = None decoder_attentions: tuple[torch.FloatTensor, ...] | None = None cross_attentions: tuple[torch.FloatTensor, ...] | None = None encoder_last_hidden_state: torch.FloatTensor | None = None encoder_hidden_states: tuple[torch.FloatTensor, ...] | None = None encoder_attentions: tuple[torch.FloatTensor, ...] | None = None encoder_global_attentions: tuple[torch.FloatTensor, ...] | None = None )

参数

  • loss (torch.FloatTensor of shape (1,), optional, returned when labels is provided) — 总的范围提取损失是起始位置和结束位置的交叉熵之和。
  • start_logits (torch.FloatTensor | None.start_logits of shape (batch_size, sequence_length), defaults to None) — 范围起始分数(SoftMax 之前)。
  • end_logits (torch.FloatTensor | None.end_logits of shape (batch_size, sequence_length), defaults to None) — 范围结束分数(SoftMax 之前)。
  • past_key_values (Cache, optional, returned when use_cache=True is passed or when config.use_cache=True) — 这是一个 Cache 实例。有关更多详细信息,请参阅我们的 kv cache guide

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

  • decoder_hidden_states (tuple[torch.FloatTensor, ...] | None.decoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • decoder_attentions (tuple[torch.FloatTensor, ...] | None.decoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • cross_attentions (tuple[torch.FloatTensor, ...] | None.cross_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • encoder_last_hidden_state (torch.FloatTensor | None.encoder_last_hidden_state of shape (batch_size, sequence_length, hidden_size), defaults to None) — 模型的编码器最后一层的隐藏状态序列。
  • encoder_hidden_states (tuple[torch.FloatTensor, ...] | None.encoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • encoder_attentions (tuple[torch.FloatTensor, ...] | None.encoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • encoder_global_attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, x)torch.FloatTensor 元组(每层一个),其中 x 是具有全局注意力掩码的标记数量。

    编码器中经过注意力 softmax 后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记对序列中所有标记的注意力权重。

序列到序列问答模型输出的基类。

LEDModel

class transformers.LEDModel

< >

( config: LEDConfig )

参数

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

LedModel 的裸模型输出,不带任何特定头部的原始隐藏状态。

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

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None decoder_input_ids: torch.LongTensor | None = None decoder_attention_mask: torch.LongTensor | None = None encoder_outputs: tuple[tuple[torch.FloatTensor]] | None = None global_attention_mask: torch.FloatTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None decoder_inputs_embeds: torch.FloatTensor | None = None use_cache: bool | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None cache_position: torch.Tensor | None = None **kwargs ) transformers.models.led.modeling_led.LEDSeq2SeqModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 输入序列标记在词汇表中的索引。默认情况下会忽略填充。

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

    什么是输入 ID?

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

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

    什么是注意力掩码?

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

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

    什么是输入 ID?

    LED 使用 eos_token_id 作为 decoder_input_ids 生成的起始标记。如果使用 past_key_values,可以选择只输入最后一个 decoder_input_ids(请参阅 past_key_values)。

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

    如果您想更改填充行为,应阅读 modeling_led._prepare_decoder_inputs 并根据您的需要进行修改。有关默认策略的更多信息,请参阅 论文中的图 1。

  • encoder_outputs (tuple, optional) — 元组包含 (last_hidden_state, optional: hidden_states, optional: attentions) last_hidden_state 的形状为 (batch_size, sequence_length, hidden_size)optional) 是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • global_attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 用于决定编码器对每个标记使用局部注意力还是全局注意力的掩码。具有全局注意力的标记会关注所有其他标记,所有其他标记也会关注它们。这对于特定任务微调很重要,因为它使模型在表示任务方面更加灵活。例如,对于分类任务,标记应被赋予全局注意力。对于问答任务,所有问题标记也应具有全局注意力。有关更多详细信息,请参阅 Longformer paper。掩码值选择在 [0, 1] 之间:

    • 0 表示局部注意力(滑动窗口注意力),
    • 1 表示全局注意力(关注所有其他标记,所有其他标记也关注它们的标记)。
  • past_key_values (~cache_utils.Cache, optional) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加快顺序解码。这通常是模型在解码前一阶段返回的 past_key_values,当 use_cache=Trueconfig.use_cache=True 时使用。

    只允许 Cache 实例作为输入,请参阅我们的 kv cache guide。如果未传递 past_key_values,默认将初始化 DynamicCache

    模型将输出与输入时相同的缓存格式。

    如果使用 past_key_values,则要求用户只输入未处理的 input_ids(即没有向模型提供其过去的键值状态的标记)的形状为 (batch_size, unprocessed_length),而不是所有 input_ids 的形状为 (batch_size, sequence_length)

  • 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 而不是普通的元组。
  • cache_position (torch.Tensor of shape (sequence_length), optional) — 表示输入序列标记在序列中位置的索引。与 position_ids 不同,此张量不受填充影响。它用于在正确位置更新缓存并推断完整的序列长度。

返回

transformers.models.led.modeling_led.LEDSeq2SeqModelOutput or tuple(torch.FloatTensor)

一个 transformers.models.led.modeling_led.LEDSeq2SeqModelOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=Falseconfig.return_dict=False),包含根据配置 (LEDConfig) 和输入的不同元素。

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

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

  • past_key_values (Cache, optional, 当传递 use_cache=True 或当 config.use_cache=True 时返回) — 它是 Cache 实例。更多详情,请参阅我们的 kv cache 指南

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

  • decoder_hidden_states (tuple[torch.FloatTensor, ...] | None.decoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • decoder_attentions (tuple[torch.FloatTensor, ...] | None.decoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • cross_attentions (tuple[torch.FloatTensor, ...] | None.cross_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

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

  • encoder_hidden_states (tuple[torch.FloatTensor, ...] | None.encoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • encoder_attentions (tuple[torch.FloatTensor, ...] | None.encoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • encoder_global_attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, x)torch.FloatTensor 元组(每层一个),其中 x 是具有全局注意力掩码的标记数量。

    编码器中经过注意力 softmax 后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记对序列中所有标记的注意力权重。

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

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

LEDForConditionalGeneration

class transformers.LEDForConditionalGeneration

< >

( config: LEDConfig )

参数

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

带有语言建模头部的 LED 模型。可用于摘要。

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

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None decoder_input_ids: torch.LongTensor | None = None decoder_attention_mask: torch.LongTensor | None = None encoder_outputs: tuple[tuple[torch.FloatTensor]] | None = None global_attention_mask: torch.FloatTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None decoder_inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None cache_position: torch.Tensor | None = None **kwargs ) transformers.models.led.modeling_led.LEDSeq2SeqLMOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 输入序列标记在词汇表中的索引。默认情况下会忽略填充。

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

    什么是输入 ID?

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

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

    什么是注意力掩码?

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

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

    什么是输入 ID?

    LED 使用 eos_token_id 作为 decoder_input_ids 生成的起始标记。如果使用 past_key_values,可以选择只输入最后一个 decoder_input_ids(请参阅 past_key_values)。

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

    如果您想更改填充行为,应阅读 modeling_led._prepare_decoder_inputs 并根据您的需要进行修改。有关默认策略的更多信息,请参阅论文中的图 1。

  • encoder_outputs (tuple, optional) — 元组包含 (last_hidden_state, *可选*:hidden_states, *可选*:attentions) last_hidden_state 的形状为 (batch_size, sequence_length, hidden_size),*可选*:是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • global_attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 用于决定编码器中每个 token 是进行局部注意力还是全局注意力的掩码。具有全局注意力的 token 会关注所有其他 token,所有其他 token 也会关注它们。这对于特定任务的微调非常重要,因为它使模型在表示任务方面更加灵活。例如,对于分类任务, token 应该被赋予全局注意力。对于问答任务,所有问题 token 也应该具有全局注意力。有关更多详细信息,请参阅Longformer 论文。掩码值选择在 [0, 1] 中:

    • 0 表示局部注意力(滑动窗口注意力),
    • 1 表示全局注意力(关注所有其他 token,并且所有其他 token 也关注它们的 token)。
  • past_key_values (~cache_utils.Cache, optional) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。当 use_cache=Trueconfig.use_cache=True 时,这通常包括模型在解码上一阶段返回的 past_key_values

    只允许输入 Cache 实例,请参阅我们的 kv cache 指南。如果未传入 past_key_values,默认将初始化 DynamicCache

    模型将输出与输入时相同的缓存格式。

    如果使用了 past_key_values,则要求用户仅输入未处理的 input_ids(即未将过去的键值状态提供给此模型的那些 input_ids),形状为 (batch_size, unprocessed_length),而不是所有 input_ids(形状为 (batch_size, sequence_length))。

  • 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_embeds 将采用 inputs_embeds 的值。

  • labels (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用于计算掩码语言建模损失的标签。索引应在 [0, ..., config.vocab_size] 或 -100 范围内(请参阅 input_ids 文档字符串)。索引设置为 -100 的 token 将被忽略(掩码),损失仅针对标签在 [0, ..., config.vocab_size] 范围内的 token 计算。
  • 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 而不是普通的元组。
  • cache_position (torch.Tensor of shape (sequence_length), optional) — 指示输入序列 token 在序列中的位置的索引。与 position_ids 不同,此张量不受填充影响。它用于在正确位置更新缓存并推断完整的序列长度。

返回

transformers.models.led.modeling_led.LEDSeq2SeqLMOutputtuple(torch.FloatTensor)

一个 transformers.models.led.modeling_led.LEDSeq2SeqLMOutput 或一个 torch.FloatTensor 元组(如果传入 return_dict=Falseconfig.return_dict=False),包含根据配置 (LEDConfig) 和输入而定的各种元素。

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

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

  • past_key_values (Cache, optional, 当传递 use_cache=True 或当 config.use_cache=True 时返回) — 它是 Cache 实例。更多详情,请参阅我们的 kv cache 指南

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

  • decoder_hidden_states (tuple[torch.FloatTensor, ...] | None.decoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • decoder_attentions (tuple[torch.FloatTensor, ...] | None.decoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • cross_attentions (tuple[torch.FloatTensor, ...] | None.cross_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

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

  • encoder_hidden_states (tuple[torch.FloatTensor, ...] | None.encoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • encoder_attentions (tuple[torch.FloatTensor, ...] | None.encoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • encoder_global_attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, x)torch.FloatTensor 元组(每层一个),其中 x 是具有全局注意力掩码的标记数量。

    编码器中经过注意力 softmax 后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记对序列中所有标记的注意力权重。

LEDForConditionalGeneration 前向传播方法,覆盖了 __call__ 特殊方法。

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

摘要示例

>>> import torch
>>> from transformers import AutoTokenizer, LEDForConditionalGeneration

>>> model = LEDForConditionalGeneration.from_pretrained("allenai/led-large-16384-arxiv")
>>> tokenizer = AutoTokenizer.from_pretrained("allenai/led-large-16384-arxiv")

>>> ARTICLE_TO_SUMMARIZE = '''Transformers (Vaswani et al., 2017) have achieved state-of-the-art
...     results in a wide range of natural language tasks including generative language modeling
...     (Dai et al., 2019; Radford et al., 2019) and discriminative ... language understanding (Devlin et al., 2019).
...     This success is partly due to the self-attention component which enables the network to capture contextual
...     information from the entire sequence. While powerful, the memory and computational requirements of
...     self-attention grow quadratically with sequence length, making it infeasible (or very expensive) to
...     process long sequences. To address this limitation, we present Longformer, a modified Transformer
...     architecture with a self-attention operation that scales linearly with the sequence length, making it
...     versatile for processing long documents (Fig 1). This is an advantage for natural language tasks such as
...     long document classification, question answering (QA), and coreference resolution, where existing approaches
...     partition or shorten the long context into smaller sequences that fall within the typical 512 token limit
...     of BERT-style pretrained models. Such partitioning could potentially result in loss of important
...     cross-partition information, and to mitigate this problem, existing methods often rely on complex
...     architectures to address such interactions. On the other hand, our proposed Longformer is able to build
...     contextual representations of the entire context using multiple layers of attention, reducing the need for
...     task-specific architectures.'''
>>> inputs = tokenizer.encode(ARTICLE_TO_SUMMARIZE, return_tensors="pt")

>>> # Global attention on the first token (cf. Beltagy et al. 2020)
>>> global_attention_mask = torch.zeros_like(inputs)
>>> global_attention_mask[:, 0] = 1

>>> # Generate Summary
>>> summary_ids = model.generate(inputs, global_attention_mask=global_attention_mask, num_beams=3, max_length=32)
>>> print(tokenizer.decode(summary_ids[0], skip_special_tokens=True, clean_up_tokenization_spaces=True))

条件生成示例

>>> from transformers import AutoTokenizer, LEDForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("allenai/led-base-16384")
>>> TXT = "My friends are <mask> but they eat too many carbs."

>>> model = LEDForConditionalGeneration.from_pretrained("allenai/led-base-16384")
>>> input_ids = tokenizer([TXT], return_tensors="pt")["input_ids"]

>>> prediction = model.generate(input_ids)[0]
>>> print(tokenizer.decode(prediction, skip_special_tokens=True))

LEDForQuestionAnswering

class transformers.LEDForQuestionAnswering

< >

( config model_args: ~utils.generic.ModelArgs | None = None adapter_args: ~utils.generic.AdapterArgs | None = None lora_args: ~utils.generic.LoRAArgs | None = None tokenizer_args: ~utils.generic.TokenizerArgs | None = None dataset_args: ~utils.generic.DatasetArgs | None = None data_args: ~utils.generic.DataArgs | None = None training_args: ~utils.generic.TrainingArgs | None = None generation_args: ~utils.generic.GenerationArgs | None = None vision_tower_args: ~utils.generic.VisionTowerArgs | None = None qlora_args: ~utils.generic.QLoRAArgs | None = None vision_tower_template_args: ~utils.generic.VisionTowerTemplateArgs | None = None video_tower_args: ~utils.generic.VideoTowerArgs | None = None vision_config: ~utils.generic.VisionConfig | None = None video_config: ~utils.generic.VideoConfig | None = None load_dataset: bool | None = None load_data_collator: bool | None = None load_processor: bool | None = None load_lora_adapter: bool | None = None load_adapter: bool | None = None load_qlora_adapter: bool | None = None **kwargs: typing_extensions.Unpack[transformers.modeling_utils.PreTrainedModelKwargs] )

参数

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

具有用于提取式问答任务(如 SQuAD)的 span 分类头(在隐藏状态输出之上添加一个线性层以计算 span start logitsspan end logits)的 Led transformer。

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

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None decoder_input_ids: torch.LongTensor | None = None decoder_attention_mask: torch.LongTensor | None = None encoder_outputs: tuple[tuple[torch.FloatTensor]] | None = None global_attention_mask: torch.FloatTensor | None = None start_positions: torch.LongTensor | None = None end_positions: torch.LongTensor | None = None inputs_embeds: torch.FloatTensor | None = None decoder_inputs_embeds: torch.FloatTensor | None = None use_cache: bool | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None **kwargs ) transformers.models.led.modeling_led.LEDSeq2SeqQuestionAnsweringModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 输入序列 token 在词汇表中的索引。默认情况下将忽略填充。

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

    什么是输入 ID?

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

    • 1 表示**未被掩码**的 token,
    • 0 表示**被掩码**的 token。

    什么是注意力掩码?

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

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

    什么是输入 ID?

    LED 使用 eos_token_id 作为 decoder_input_ids 生成的起始 token。如果使用了 past_key_values,可选地只输入最后一个 decoder_input_ids(请参阅 past_key_values)。

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

    如果您想更改填充行为,应阅读 modeling_led._prepare_decoder_inputs 并根据您的需要进行修改。有关默认策略的更多信息,请参阅论文中的图 1。

  • encoder_outputs (tuple, optional) — 元组包含 (last_hidden_state, *可选*:hidden_states, *可选*:attentions) last_hidden_state 的形状为 (batch_size, sequence_length, hidden_size),*可选*:是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • global_attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 用于决定编码器中每个 token 是进行局部注意力还是全局注意力的掩码。具有全局注意力的 token 会关注所有其他 token,所有其他 token 也会关注它们。这对于特定任务的微调非常重要,因为它使模型在表示任务方面更加灵活。例如,对于分类任务, token 应该被赋予全局注意力。对于问答任务,所有问题 token 也应该具有全局注意力。有关更多详细信息,请参阅Longformer 论文。掩码值选择在 [0, 1] 中:

    • 0 表示局部注意力(滑动窗口注意力),
    • 1 表示全局注意力(关注所有其他 token,并且所有其他 token 也关注它们的 token)。
  • start_positions (torch.LongTensor of shape (batch_size,), optional) — 用于计算 token 分类损失的标注 span 起始位置(索引)的标签。位置将被限制在序列长度(sequence_length)范围内。序列以外的位置不计入损失计算。
  • end_positions (torch.LongTensor of shape (batch_size,), optional) — 用于计算 token 分类损失的标注 span 结束位置(索引)的标签。位置将被限制在序列长度(sequence_length)范围内。序列以外的位置不计入损失计算。
  • 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_embeds 将采用 inputs_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.models.led.modeling_led.LEDSeq2SeqQuestionAnsweringModelOutput or tuple(torch.FloatTensor)

一个 transformers.models.led.modeling_led.LEDSeq2SeqQuestionAnsweringModelOutput 或一个 torch.FloatTensor 元组(如果传入 return_dict=Falseconfig.return_dict=False),包含根据配置 (LEDConfig) 和输入而定的各种元素。

  • loss (torch.FloatTensor of shape (1,), 可选, 当提供 labels 时返回) — 总范围提取损失是起始位置和结束位置的交叉熵之和。

  • start_logits (torch.FloatTensor | None.start_logits of shape (batch_size, sequence_length), defaults to None) — Span 起始得分(SoftMax 之前)。

  • end_logits (torch.FloatTensor | None.end_logits of shape (batch_size, sequence_length), defaults to None) — Span 结束得分(SoftMax 之前)。

  • past_key_values (Cache, optional, 当传递 use_cache=True 或当 config.use_cache=True 时返回) — 它是 Cache 实例。更多详情,请参阅我们的 kv cache 指南

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

  • decoder_hidden_states (tuple[torch.FloatTensor, ...] | None.decoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • decoder_attentions (tuple[torch.FloatTensor, ...] | None.decoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • cross_attentions (tuple[torch.FloatTensor, ...] | None.cross_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

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

  • encoder_hidden_states (tuple[torch.FloatTensor, ...] | None.encoder_hidden_states, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,加上每层一个输出)。

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

  • encoder_attentions (tuple[torch.FloatTensor, ...] | None.encoder_attentions, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元组(每层一个)。

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

  • encoder_global_attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — 形状为 (batch_size, num_heads, sequence_length, x)torch.FloatTensor 元组(每层一个),其中 x 是具有全局注意力掩码的标记数量。

    编码器中经过注意力 softmax 后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记对序列中所有标记的注意力权重。

LEDForQuestionAnswering 前向传播方法,覆盖了 __call__ 特殊方法。

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

示例

>>> from transformers import AutoTokenizer, LEDForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("allenai/led-base-16384")
>>> model = LEDForQuestionAnswering.from_pretrained("allenai/led-base-16384")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...

>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...
在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.