Transformers 4.37 中文文档(五十)(4)

简介: Transformers 4.37 中文文档(五十)

Transformers 4.37 中文文档(五十)(3)https://developer.aliyun.com/article/1565251


__call__

<来源>

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

返回

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

一个 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或一个torch.FloatTensor元组(如果传递了return_dict=False或当config.return_dict=False时)包括根据配置(OPTConfig)和输入的不同元素。

  • last_hidden_state (jnp.ndarray,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。
  • hidden_states (tuple(jnp.ndarray), 可选, 当传递了output_hidden_states=True或当config.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 后的注意力权重,用于计算自注意力头中的加权平均值。

示例:

>>> from transformers import AutoTokenizer, FlaxOPTForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/opt-350m")
>>> model = FlaxOPTForCausalLM.from_pretrained("facebook/opt-350m")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")
>>> outputs = model(**inputs)
>>> # retrieve logts for next token
>>> next_token_logits = outputs.logits[:, -1]

飞马

原文:huggingface.co/docs/transformers/v4.37.2/en/model_doc/pegasus

概述

Pegasus 模型是由 Jingqing Zhang、Yao Zhao、Mohammad Saleh 和 Peter J. Liu 于 2019 年 12 月 18 日提出的PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization

根据摘要,

  • Pegasus 的预训练任务故意与摘要相似:从输入文档中删除/屏蔽重要句子,并将其作为一个输出序列从剩余句子中生成,类似于提取式摘要。
  • Pegasus 在所有 12 个下游任务上实现了 SOTA 摘要性能,由 ROUGE 和人类评估测量。

这个模型是由sshleifer贡献的。作者的代码可以在这里找到。

使用提示

  • 具有与 BART 相同的编码器-解码器模型架构的序列到序列模型。Pegasus 在两个自监督目标函数上联合预训练:掩码语言建模(MLM)和一种新颖的摘要特定预训练目标,称为 Gap Sentence Generation(GSG)。
  • MLM:编码器输入标记被随机替换为掩码标记,并且必须由编码器预测(就像在 BERT 中一样)
  • GSG:整个编码器输入句子被第二个掩码标记替换并馈送到解码器,但是具有因果掩码以隐藏未来单词,就像常规的自回归变压器解码器一样。
  • 不支持 FP16(对此的帮助/想法赞赏!)。
  • 推荐使用 adafactor 优化器进行 pegasus 微调。

检查点

所有检查点都经过微调以用于摘要,除了pegasus-large,其他检查点都经过微调:

  • 每个检查点在磁盘上占用 2.2 GB,参数为 568M。
  • 不支持 FP16(对此的帮助/想法赞赏!)。
  • 在 v100 GPU 上,默认参数下,使用 fp32 对 xsum 进行摘要大约需要 400ms/样本。
  • 完整的复制结果和正确预处理的数据可以在这个Issue中找到。
  • 蒸馏检查点在这篇论文中有描述。

实现说明

  • 所有模型都是具有 16 层的变压器编码器-解码器。
  • 实现完全继承自 BartForConditionalGeneration
  • 一些关键配置差异:
  • 静态,正弦位置嵌入
  • 模型从 pad_token_id(其具有 0 个 token_embedding)开始生成。
  • 使用更多的 beam(num_beams=8
  • 所有预训练的 pegasus 检查点除了三个属性外都是相同的:tokenizer.model_max_length(最大输入大小),max_length(要生成的最大标记数)和length_penalty
  • 可以在convert_pegasus_tf_to_pytorch.py中找到将在作者的repo中训练的检查点转换的代码。

使用示例

>>> from transformers import PegasusForConditionalGeneration, PegasusTokenizer
>>> import torch
>>> src_text = [
...     """ 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."""
... ]
... model_name = "google/pegasus-xsum"
... device = "cuda" if torch.cuda.is_available() else "cpu"
... tokenizer = PegasusTokenizer.from_pretrained(model_name)
... model = PegasusForConditionalGeneration.from_pretrained(model_name).to(device)
... batch = tokenizer(src_text, truncation=True, padding="longest", return_tensors="pt").to(device)
... translated = model.generate(**batch)
... tgt_text = tokenizer.batch_decode(translated, skip_special_tokens=True)
... assert (
...     tgt_text[0]
...     == "California's largest electricity provider has turned off power to hundreds of thousands of customers."
... )

资源

PegasusConfig

class transformers.PegasusConfig

<来源>

( vocab_size = 50265 max_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 = 0 scale_embedding = False pad_token_id = 0 eos_token_id = 1 forced_eos_token_id = 1 **kwargs )

参数

  • vocab_size (int, optional, defaults to 50265) — PEGASUS 模型的词汇表大小。定义了在调用 PegasusModel 或 TFPegasusModel 时可以表示的不同标记数量。
  • 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) — 嵌入层、编码器和池化器中所有全连接层的丢弃概率。
  • attention_dropout (float, optional, defaults to 0.0) — 注意力概率的丢弃比例。
  • activation_dropout (float, optional, defaults to 0.0) — 全连接层内激活的丢弃比例。
  • max_position_embeddings (int, optional, defaults to 1024) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如 512、1024 或 2048)。
  • init_std (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • encoder_layerdrop (float, optional, defaults to 0.0) — 编码器的 LayerDrop 概率。有关更多详细信息,请参阅 LayerDrop 论文)。
  • decoder_layerdrop (float, optional, defaults to 0.0) — 解码器的 LayerDrop 概率。有关更多详细信息,请参阅 LayerDrop 论文)。
  • scale_embedding (bool, optional, defaults to False) — 通过除以 sqrt(d_model)来缩放嵌入。
  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)
  • forced_eos_token_id (int, optional, defaults to 1) — 当达到max_length时,强制作为最后生成的标记的标记 ID。通常设置为eos_token_id

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

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

示例:

>>> from transformers import PegasusConfig, PegasusModel
>>> # Initializing a PEGASUS google/pegasus-large style configuration
>>> configuration = PegasusConfig()
>>> # Initializing a model (with random weights) from the google/pegasus-large style configuration
>>> model = PegasusModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

PegasusTokenizer

警告:add_tokens 目前不起作用。

class transformers.PegasusTokenizer

<来源>

( vocab_file pad_token = '<pad>' eos_token = '</s>' unk_token = '<unk>' mask_token = '<mask_2>' mask_token_sent = '<mask_1>' additional_special_tokens = None offset = 103 sp_model_kwargs: Optional = None **kwargs )

参数

  • vocab_file (str) — 包含实例化分词器所需词汇表的SentencePiece文件(通常具有 .spm 扩展名)。
  • pad_token (str, optional, 默认为 "") — 用于填充的标记,例如在批处理不同长度的序列时使用。
  • eos_token (str, optional, 默认为 "") — 序列结束标记。
    在构建带有特殊标记的序列时,这不是用于序列结束的标记。使用的标记是 sep_token
  • unk_token (str, optional, 默认为 "") — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • mask_token (str, optional, 默认为 "") — 用于屏蔽单个标记值的标记。在使用屏蔽语言建模(MLM)训练此模型时使用的标记。这是 PEGASUS 编码器在预训练期间尝试预测的标记。它对应于PEGASUS:用于抽象摘要的提取间隙句子预训练中的*[MASK2]*。
  • mask_token_sent (str, optional, 默认为 "") — 用于屏蔽整个目标句子的标记。在使用间隙句子生成(GSG)训练此模型时使用的标记。这是 PEGASUS 解码器在预训练期间尝试预测的句子。它对应于PEGASUS:用于抽象摘要的提取间隙句子预训练中的*[MASK1]*。
  • additional_special_tokens (List[str], optional) — 分词器使用的额外特殊标记。如果未提供额外的特殊标记,则使用 和 作为额外的特殊标记,对应于原始 PEGASUS 分词器仅在预训练中使用标记 2 - 104
  • sp_model_kwargs (dict, optional) — 将传递给 SentencePieceProcessor.__init__() 方法。SentencePiece 的 Python 包装器可用于设置:
  • enable_sampling: 启用子词正则化。
  • nbest_size: 单字采样的采样参数。对于 BPE-Dropout 无效。
  • nbest_size = {0,1}: 不执行采样。
  • nbest_size > 1: 从 nbest_size 结果中抽样。
  • nbest_size < 0: 假设 nbest_size 为无限,并使用前向过滤和后向采样算法从所有假设(格)中抽样。
  • alpha: 用于单字采样的平滑参数,以及 BPE-dropout 合并操作的丢弃概率。

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

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

build_inputs_with_special_tokens

<来源>

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

参数

  • token_ids_0 (List[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (List[int], 可选) — 第二个序列对应的 ID 列表。

返回

List[int]

带有适当特殊标记的 输入 ID 列表。

通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。PEGASUS 序列具有以下格式,其中 X 表示序列:

  • 单个序列:X
  • 序列对:A B (非预期用例)

BOS 从不使用。序列对不是预期的用例,但它们将在没有分隔符的情况下处理。

convert_tokens_to_string

<来源>

( tokens )

将一系列标记(字符串)转换为单个字符串。

get_special_tokens_mask

<来源>

( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False )

获取列表,其中条目为 [1] 如果标记为 [eos] 或 [pad] 否则为 0。

num_special_tokens_to_add

<来源>

( pair = False )

只有 EOS

PegasusTokenizerFast

class transformers.PegasusTokenizerFast

<来源>

( vocab_file = None tokenizer_file = None pad_token = '<pad>' eos_token = '</s>' unk_token = '<unk>' mask_token = '<mask_2>' mask_token_sent = '<mask_1>' additional_special_tokens = None offset = 103 **kwargs )

参数

  • vocab_file (str) — SentencePiece 文件(通常具有 .spm 扩展名),其中包含实例化分词器所需的词汇表。
  • pad_token (str, 可选,默认为 "") — 用于填充的标记,例如在批处理不同长度的序列时使用。
  • eos_token (str, 可选,默认为 "") — 序列结束标记。
    在使用特殊标记构建序列时,这不是用于序列结束的标记。使用的标记是 sep_token
  • unk_token (str, 可选,默认为 "") — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • mask_token (str, 可选,默认为 "") — 用于屏蔽单个标记值的标记。这是在使用掩码语言建模(MLM)训练此模型时使用的标记。这是 PEGASUS 编码器在预训练期间尝试预测的标记。它对应于 PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization 中的 [MASK2]
  • mask_token_sent (str, 可选,默认为 "") — 用于屏蔽整个目标句子的标记。这是在使用间隙句子生成(GSG)训练此模型时使用的标记。这是 PEGASUS 解码器在预训练期间尝试预测的句子。它对应于 PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization 中的 [MASK1]
  • additional_special_tokens (List[str], 可选) — 分词器使用的额外特殊标记。如果未提供额外特殊标记,则使用  和  作为额外特殊标记,对应于仅在预训练中使用标记 2 - 104 的 原始 PEGASUS 分词器

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

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

build_inputs_with_special_tokens

< source >

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

参数

  • token_ids_0 (List[int]) — 将添加特殊标记的 ID 列表
  • token_ids_1 (List[int], optional) — 可选的第二个序列对应的 ID 列表。

返回

List[int]

包含适当特殊标记的输入 ID 列表。

通过在序列末尾添加 eos 来构建模型输入。不会在前面添加 bos 标记。

  • 单个序列:X
  • 序列对:A B (不是预期的用法)
get_special_tokens_mask

< source >

( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False )

获取列表,如果标记是[eos]或[pad]则为[1],否则为 0。

PytorchHide Pytorch content


Transformers 4.37 中文文档(五十)(5)https://developer.aliyun.com/article/1565253

相关文章
|
2月前
|
异构计算 索引 AI芯片
Transformers 4.37 中文文档(五十)(7)
Transformers 4.37 中文文档(五十)
26 1
|
2月前
|
缓存 异构计算 索引
Transformers 4.37 中文文档(五十)(8)
Transformers 4.37 中文文档(五十)
18 1
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Transformers 4.37 中文文档(七十)(3)
Transformers 4.37 中文文档(七十)
22 2
|
2月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(五十)(6)
Transformers 4.37 中文文档(五十)
20 0
|
2月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(五十)(1)
Transformers 4.37 中文文档(五十)
27 0
|
2月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(五十)(3)
Transformers 4.37 中文文档(五十)
19 0
|
2月前
|
缓存 PyTorch TensorFlow
Transformers 4.37 中文文档(五十)(5)
Transformers 4.37 中文文档(五十)
19 0
|
2月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(五十)(2)
Transformers 4.37 中文文档(五十)
20 0
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Transformers 4.37 中文文档(六十)(5)
Transformers 4.37 中文文档(六十)
15 0
|
2月前
|
自然语言处理 API 算法框架/工具
Transformers 4.37 中文文档(六十)(3)
Transformers 4.37 中文文档(六十)
13 0