Transformers 文档

PEGASUS-X

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

入门

PEGASUS-X

概述

PEGASUS-X 模型在 Investigating Efficiently Extending Transformers for Long Input Summarization 中被提出,作者为 Jason Phang、Yao Zhao 和 Peter J. Liu。

PEGASUS-X (PEGASUS 扩展) 通过额外的长输入预训练扩展了 PEGASUS 模型以实现长输入摘要,并在编码器中使用交错的块局部注意力和全局令牌。

论文中的摘要如下

尽管大型预训练 Transformer 模型在处理自然语言任务方面表现出极高的能力,但处理长序列输入仍然是一个重大挑战。其中一项任务是长输入摘要,输入长度超过大多数预训练模型的最大输入上下文。通过一系列广泛的实验,我们研究了哪些模型架构变化和预训练范式可以最有效地适应预训练 Transformer 用于长输入摘要。我们发现,交错式、块局部 Transformer 结合全局编码器令牌在性能和效率之间取得了良好的平衡,并且在长序列上进行额外的预训练阶段可以显著提高下游摘要性能。根据我们的发现,我们引入了 PEGASUS-X,它是 PEGASUS 模型的扩展,通过额外的长输入预训练来处理最多 16K 个令牌的输入。PEGASUS-X 在长输入摘要任务上取得了与更大模型相当的优异性能,同时只增加了很少的额外参数,并且不需要模型并行训练。

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

文档资源

PEGASUS-X 使用与 PEGASUS 相同的标记器。

PegasusXConfig

class transformers.PegasusXConfig

< >

( vocab_size = 96103 max_position_embeddings = 16384 encoder_layers = 16 encoder_ffn_dim = 4096 encoder_attention_heads = 16 decoder_layers = 16 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 = 0 scale_embedding = True pad_token_id = 0 eos_token_id = 1 forced_eos_token_id = 1 num_global_tokens = 32 block_size = 512 stagger_local_blocks = True **kwargs )

参数

  • vocab_size (int, 可选,默认为 96103) — PEGASUS-X 模型的词汇量大小。定义了在调用 PegasusXModel 时,通过 inputs_ids 传递的可以表示的不同令牌的数量。
  • d_model (int, 可选,默认为 1024) — 层和池化层的维度。
  • encoder_layers (int, 可选,默认为 16) — 编码器层的数量。
  • decoder_layers (int, 可选,默认为 16) — 解码器层的数量。
  • encoder_attention_heads (int, 可选, 默认为 16) — Transformer 编码器中每个注意力层的注意力头数。
  • decoder_attention_heads (int, 可选, 默认为 16) — Transformer 解码器中每个注意力层的注意力头数。
  • decoder_ffn_dim (int, 可选, 默认为 4096) — 解码器中“中间”层(通常称为前馈层)的维度。
  • encoder_ffn_dim (int, 可选, 默认为 4096) — 解码器中“中间”层(通常称为前馈层)的维度。
  • activation_function (strfunction, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu""relu""silu""gelu_new"
  • dropout (float, 可选, 默认为 0.1) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_dropout (float, 可选, 默认为 0.0) — 注意力概率的 dropout 比例。
  • activation_dropout (float, 可选, 默认为 0.0) — 全连接层内部激活值的 dropout 比例。
  • max_position_embeddings (int, 可选, 默认为 16384) — 该模型可能使用的最大序列长度。通常将此值设置为一个较大的值,以防万一(例如,512 或 1024 或 2048)。
  • init_std (float, 可选, 默认为 0.02) — 初始化所有权重矩阵的截断正态分布初始化器的标准差。
  • decoder_layerdrop (float, 可选, 默认值为 0.0) — 解码器的 LayerDrop 概率。有关更多详细信息,请参阅 [LayerDrop 论文](见 https://arxiv.org/abs/1909.11556)。
  • use_cache (bool, 可选, 默认值为 True) — 模型是否应该返回最后一个键值注意力(并非所有模型都使用)
  • forced_eos_token_id (int, 可选, 默认值为 1) — 当达到 max_length 时强制作为最后一个生成令牌的令牌 ID。通常设置为 eos_token_id
  • num_global_tokens (int, 可选, 默认值为 128) — 用于编码器的全局令牌数量
  • block_size (int, 可选, 默认值为 512) — 编码器局部注意力的块大小。序列长度应为块大小的精确倍数。如果 stagger_local_block 为 True,则 block_size 必须是 2 的倍数
  • stagger_local_block (bool, 可选, 默认值为 True) — 是否将每个其他局部注意力交错半个块

这是用于存储 PegasusXModel 配置的配置类。它用于根据指定的参数实例化 PEGASUS-X 模型,定义模型架构。使用默认值实例化配置将产生与 PEGASUS-X google/pegasus-x-large 架构类似的配置。

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

示例

>>> from transformers import PegasusXConfig, PegasusXModel

>>> # Initializing a PEGASUS google/pegasus-x-large style configuration
>>> configuration = PegasusXConfig()

>>> # Initializing a model (with random weights) from the google/pegasus-x-large style configuration
>>> model = PegasusXModel(configuration)

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

PegasusXModel

class transformers.PegasusXModel

< >

( config: PegasusXConfig )

参数

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

不带任何特定头的 PEGASUS-X 模型,输出原始隐藏状态。该模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头等)。

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

forward

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

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。如果您提供填充,默认情况下将忽略填充。

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

    什么是输入 ID?

  • inputs_embeds (torch.FloatTensor 形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,您可以选择直接传递嵌入式表示,而不是传递 input_ids
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length)可选) — 避免对填充标记索引执行注意的掩码。掩码值选择在 [0, 1] 中:

    • 1 代表 **不屏蔽** 的标记,
    • 0 代表 **屏蔽** 的标记。

    什么是注意力掩码?

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

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

    什么是解码器输入 ID?

    PEGASUS-X 使用 pad_token_id 作为 decoder_input_ids 生成 的起始标记。如果使用 past_key_values,则可以选择仅输入最后一个 decoder_input_ids(那些没有被输入到此模型的过去关键值状态的 decoder_input_ids)(参见 past_key_values)。

  • decoder_attention_mask (torch.LongTensor 形状为 (batch_size, target_sequence_length)可选) — 默认行为:生成一个忽略 decoder_input_ids 中的填充标记的张量。默认情况下还会使用因果掩码。
  • encoder_outputs (tuple(tuple(torch.FloatTensor)可选) — 元组由 (last_hidden_state可选: hidden_states可选: attentions) last_hidden_state 形状为 (batch_size, sequence_length, hidden_size)可选) 是编码器最后一层输出处的隐藏状态序列。用于解码器的交叉注意力。
  • past_key_values (tuple(tuple(torch.FloatTensor))可选,在传递 use_cache=Trueconfig.use_cache=True 时返回) — 长度为 config.n_layerstuple(torch.FloatTensor) 元组,每个元组具有 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head)) 的张量和 2 个形状为 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的附加张量。

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

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

  • inputs_embeds (torch.FloatTensor 形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 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_embeds 将取 inputs_embeds 的值。

  • use_cache (bool可选) — 如果设置为 True,则将返回 past_key_values 键值状态,可用于加速解码(参见 past_key_values)。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量中的 hidden_states
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_outputs.Seq2SeqModelOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqModelOutput 或一个 torch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含根据配置 (PegasusXConfig) 和输入的不同元素。

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

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

  • 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 时返回) — torch.FloatTensor 的元组(一个用于嵌入的输出,如果模型具有嵌入层,再加上每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

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

    解码器交叉注意力层的注意力权重,在注意力 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 时返回) — torch.FloatTensor 的元组(一个用于嵌入的输出,如果模型具有嵌入层,再加上每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

The PegasusXModel 正向方法,覆盖了 __call__ 特殊方法。

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

示例

>>> from transformers import AutoTokenizer, PegasusModel

>>> tokenizer = AutoTokenizer.from_pretrained("google/pegasus-x-large")
>>> model = PegasusModel.from_pretrained("google/pegasus-x-large")

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

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 4, 1024]

PegasusXForConditionalGeneration

class transformers.PegasusXForConditionalGeneration

< >

( config: PegasusXConfig )

参数

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

用于条件生成(例如,摘要)的 PEGASUS-X。 此模型继承自 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 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 ) transformers.modeling_outputs.Seq2SeqLMOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 输入序列词元的词汇表索引。 如果你提供填充,默认情况下会忽略填充。

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

    什么是输入 ID?

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 可选地,你可以选择直接传递嵌入式表示,而不是传递 input_ids
  • attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) — 用于避免对填充词元索引执行注意的掩码。 在 [0, 1] 中选择的掩码值:

    • 1 表示未掩码的词元,
    • 0 表示掩码的词元。

    什么是注意力掩码?

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

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

    什么是解码器输入 ID?

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

  • decoder_attention_mask (torch.LongTensor 形状为 (batch_size, target_sequence_length)可选) — 默认行为:生成一个忽略 decoder_input_ids 中填充标记的张量。因果掩码也将默认使用。
  • encoder_outputs (tuple(tuple(torch.FloatTensor)可选) — 元组包含 (last_hidden_state可选: hidden_states可选: attentions) last_hidden_state 形状为 (batch_size, sequence_length, hidden_size)可选) 是编码器最后一层输出处的隐藏状态序列。用于解码器的交叉注意力。
  • past_key_values (tuple(tuple(torch.FloatTensor))可选,当传递 use_cache=Trueconfig.use_cache=True 时返回) — 长度为 config.n_layerstuple(tuple(torch.FloatTensor)) 元组,每个元组包含 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量) 以及 2 个形状为 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的额外张量。

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

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

  • inputs_embeds (torch.FloatTensor 形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 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_embeds 将采用 inputs_embeds 的值。

  • use_cache (bool可选) — 如果设置为 True,则会返回 past_key_values 键值状态,并可用于加快解码速度(请参阅 past_key_values)。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个简单的元组。
  • labels (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 用于计算掩码语言建模损失的标签。索引应为 [0, ..., config.vocab_size] 或 -100(参见 input_ids 文档字符串)。索引设置为 -100 的标记被忽略(掩码),损失仅针对标签位于 [0, ..., config.vocab_size] 的标记进行计算。

返回

transformers.modeling_outputs.Seq2SeqLMOutputtuple(torch.FloatTensor)

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

  • 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 时返回) — torch.FloatTensor 的元组(一个用于嵌入的输出,如果模型具有嵌入层,再加上每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

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

    解码器交叉注意力层的注意力权重,在注意力 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 时返回) — torch.FloatTensor 的元组(一个用于嵌入的输出,如果模型具有嵌入层,再加上每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

The PegasusXForConditionalGeneration 正向方法,覆盖了 __call__ 特殊方法。

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

摘要示例

>>> from transformers import AutoTokenizer, PegasusXForConditionalGeneration

>>> model = PegasusXForConditionalGeneration.from_pretrained("google/pegasus-x-base")
>>> tokenizer = AutoTokenizer.from_pretrained("google/pegasus-x-large")

>>> ARTICLE_TO_SUMMARIZE = (
...     "PG&E stated it scheduled the blackouts in response to forecasts for high winds "
...     "amid dry conditions. The aim is to reduce the risk of wildfires. Nearly 800 thousand customers were "
...     "scheduled to be affected by the shutoffs which were expected to last through at least midday tomorrow."
... )
>>> inputs = tokenizer(ARTICLE_TO_SUMMARIZE, max_length=1024, return_tensors="pt")

>>> # Generate Summary
>>> summary_ids = model.generate(inputs["input_ids"])
>>> tokenizer.batch_decode(summary_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"California's largest electricity provider has turned off power to hundreds of thousands of customers."
< > 更新 在 GitHub 上