Transformers 文档

XGLM

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

XGLM

PyTorch TensorFlow Flax

概述

XGLM 模型由 Xi Victoria Lin, Todor Mihaylov, Mikel Artetxe, Tianlu Wang, Shuohui Chen, Daniel Simig, Myle Ott, Naman Goyal, Shruti Bhosale, Jingfei Du, Ramakanth Pasunuru, Sam Shleifer, Punit Singh Koura, Vishrav Chaudhary, Brian O’Horo, Jeff Wang, Luke Zettlemoyer, Zornitsa Kozareva, Mona Diab, Veselin Stoyanov, Xian Li 在多语言语言模型的小样本学习中提出。

论文摘要如下:

大规模自回归语言模型,如 GPT-3,是小样本学习器,无需微调即可执行各种语言任务。虽然这些模型已知能够共同表示多种不同的语言,但它们的训练数据主要以英语为主,这可能会限制它们的跨语言泛化能力。在这项工作中,我们在一个包含多种语言的平衡语料库上训练了多语言自回归语言模型,并研究了它们在各种任务中的小样本和零样本学习能力。我们参数量最大的模型拥有 75 亿个参数,在 20 多种代表性语言的小样本学习中创造了新的 SOTA,在多语言常识推理(零样本设置下绝对准确率提高 7.4%,四样本设置下提高 9.4%)和自然语言推理(零样本和四样本设置下均提高 5.4%)方面优于同等大小的 GPT-3。在 FLORES-101 机器翻译基准测试中,我们的模型在 182 个翻译方向中有 171 个方向表现优于 GPT-3(使用 32 个训练示例),同时在 45 个方向上超越了官方的有监督基线。我们详细分析了模型的成功和失败之处,特别是它在某些任务上实现了跨语言的上下文学习,但在表面形式的鲁棒性和对没有自然完形填空形式的任务的适应性方面仍有改进空间。最后,我们评估了我们的模型在社会价值任务(如五种语言的仇恨言论检测)中的表现,发现它与同等大小的 GPT-3 模型存在相似的局限性。

此模型由Suraj贡献。原始代码可在此处找到。

资源

XGLMConfig

class transformers.XGLMConfig

< >

( vocab_size = 256008 max_position_embeddings = 2048 d_model = 1024 ffn_dim = 4096 num_layers = 24 attention_heads = 16 activation_function = 'gelu' dropout = 0.1 attention_dropout = 0.1 activation_dropout = 0.0 layerdrop = 0.0 init_std = 0.02 scale_embedding = True use_cache = True decoder_start_token_id = 2 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 **kwargs )

参数

  • vocab_size (int, 可选, 默认为 256008) — XGLM 模型的词汇表大小。定义了调用 XGLMModelFlaxXGLMModel 时传入的 inputs_ids 可以表示的不同词元数量。
  • max_position_embeddings (int, 可选, 默认为 2048) — 此模型可能使用的最大序列长度。通常设置为一个较大的值以备不时之需(例如,512、1024 或 2048)。
  • d_model (int, 可选, 默认为 1024) — 层和池化层的维度。
  • ffn_dim (int, 可选, 默认为 4096) — 解码器中“中间”(通常称为前馈)层的维度。
  • num_layers (int, 可选, 默认为 24) — Transformer 解码器的隐藏层数量。
  • attention_heads (int, 可选, 默认为 16) — Transformer 解码器中每个注意力层的注意力头数。
  • activation_function (strfunction, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu""relu""silu""gelu_new"
  • dropout (float, 可选, 默认为 0.1) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_dropout (float, 可选, 默认为 0.1) — 注意力概率的 dropout 比率。
  • activation_dropout (float, 可选, 默认为 0.0) — 全连接层内部激活的 dropout 比率。
  • layerdrop (float, 可选, 默认为 0.0) — 编码器的 LayerDrop 概率。更多详细信息请参见 [LayerDrop 论文](参见 https://huggingface.co/papers/1909.11556)。
  • init_std (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • scale_embedding (bool, 可选, 默认为 True) — 通过除以 sqrt(d_model) 来缩放嵌入。
  • use_cache (bool, 可选, 默认为 True) — 模型是否应返回最后一个键/值注意力(并非所有模型都使用)。

这是用于存储 XGLMModel 配置的配置类。它用于根据指定参数实例化 XGLM 模型,定义模型架构。使用默认参数实例化配置将生成与 XGLM facebook/xglm-564M 架构相似的配置。

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

示例

>>> from transformers import XGLMModel, XGLMConfig

>>> # Initializing a XGLM facebook/xglm-564M style configuration
>>> configuration = XGLMConfig()

>>> # Initializing a model from the facebook/xglm-564M style configuration
>>> model = XGLMModel(configuration)

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

XGLMTokenizer

class transformers.XGLMTokenizer

< >

( vocab_file bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' sp_model_kwargs: typing.Optional[dict[str, typing.Any]] = None **kwargs )

参数

  • vocab_file (str) — 词汇表文件的路径。
  • bos_token (str, 可选, 默认为 "<s>") — 预训练期间使用的序列开始词元。可用作序列分类器词元。

    当使用特殊词元构建序列时,这不是用于序列开始的词元。使用的词元是 cls_token

  • eos_token (str, 可选, 默认为 "</s>") — 序列结束词元。

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

  • sep_token (str, 可选, 默认为 "</s>") — 分隔符词元,用于从多个序列构建序列,例如用于序列分类的两个序列或用于问答的文本和问题。它也用作使用特殊词元构建的序列的最后一个词元。
  • cls_token (str, 可选, 默认为 "<s>") — 分类器词元,用于序列分类(对整个序列进行分类而非按词元分类)。使用特殊词元构建时,它是序列的第一个词元。
  • unk_token (str, 可选, 默认为 "<unk>") — 未知词元。不在词汇表中的词元不能转换为 ID,而是设置为此词元。
  • pad_token (str, optional, defaults to "<pad>") — 用于填充的令牌,例如当批量处理不同长度的序列时。
  • sp_model_kwargs (dict, optional) — 将传递给 SentencePieceProcessor.__init__() 方法。SentencePiece 的 Python 包装器可用于设置(其中包括):

    • enable_sampling: 启用子词正则化。

    • nbest_size: Unigram 采样参数。对 BPE-Dropout 无效。

      • nbest_size = {0,1}: 不执行采样。
      • nbest_size > 1: 从 nbest_size 结果中采样。
      • nbest_size < 0: 假定 nbest_size 是无限的,并使用前向过滤和后向采样算法从所有假设(格)中采样。
    • alpha: 用于 unigram 采样的平滑参数,以及用于 BPE-dropout 的合并操作的 dropout 概率。

  • sp_model (SentencePieceProcessor) — 用于所有转换(字符串、词元和 ID)的 SentencePiece 处理器。

改编自 RobertaTokenizerXLNetTokenizer。基于 SentencePiece

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

build_inputs_with_special_tokens

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) list[int]

参数

  • token_ids_0 (list[int]) — 将添加特殊词元的 ID 列表。
  • token_ids_1 (list[int], optional) — 可选的第二个 ID 列表,用于序列对。

返回

list[int]

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

通过连接和添加特殊 token,为序列分类任务从序列或序列对构建模型输入。XLM-RoBERTa 序列的格式如下:

  • 单个序列:<s> X </s>
  • 序列对:<s> A </s></s> B </s>

get_special_tokens_mask

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], optional) — 可选的第二个 ID 列表,用于序列对。
  • already_has_special_tokens (bool, optional, defaults to False) — 词元列表是否已针对模型使用特殊词元进行格式化。

返回

list[int]

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

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

create_token_type_ids_from_sequences

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], optional) — 可选的第二个 ID 列表,用于序列对。

返回

list[int]

零列表。

根据传入的两个序列创建用于序列对分类任务的掩码。XLM-RoBERTa 不使用 token 类型 ID,因此返回一个全零列表。

save_vocabulary

< >

( save_directory: str filename_prefix: typing.Optional[str] = None )

XGLMTokenizerFast

class transformers.XGLMTokenizerFast

< >

( vocab_file = None tokenizer_file = None bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' **kwargs )

参数

  • vocab_file (str) — 词汇表文件的路径。
  • bos_token (str, optional, defaults to "<s>") — 预训练期间使用的序列开始词元。可用作序列分类器词元。

    使用特殊词元构建序列时,这不是序列开头使用的词元。使用的词元是 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>") — 用于填充的词元,例如当批量处理不同长度的序列时。
  • additional_special_tokens (list[str], optional, defaults to ["<s>NOTUSED", "</s>NOTUSED"]) — 分词器使用的其他特殊词元。

构建一个“快速”XGLM 分词器(由 HuggingFace 的 tokenizers 库支持)。改编自 RobertaTokenizerXLNetTokenizer。基于 BPE

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

build_inputs_with_special_tokens

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) list[int]

参数

  • token_ids_0 (list[int]) — 将添加特殊词元的 ID 列表。
  • token_ids_1 (list[int], optional) — 可选的第二个 ID 列表,用于序列对。

返回

list[int]

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

通过连接和添加特殊 token,为序列分类任务从序列或序列对构建模型输入。XLM-RoBERTa 序列的格式如下:

  • 单个序列:<s> X </s>
  • 序列对:<s> A </s></s> B </s>

create_token_type_ids_from_sequences

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], optional) — 可选的第二个 ID 列表,用于序列对。

返回

list[int]

零列表。

根据传入的两个序列创建用于序列对分类任务的掩码。XLM-RoBERTa 不使用 token 类型 ID,因此返回一个全零列表。

Pytorch
隐藏 Pytorch 内容

XGLMModel

class transformers.XGLMModel

< >

( config: XGLMConfig embed_tokens: typing.Optional[torch.nn.modules.sparse.Embedding] = None )

参数

  • config (XGLMConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
  • embed_tokens (nn.Embedding, optional) — 输出嵌入

裸露的 Xglm 模型,输出原始隐藏状态,顶部没有任何特定头部。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None encoder_hidden_states: typing.Optional[torch.Tensor] = None encoder_attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[torch.Tensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

参数

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

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

    什么是输入 ID?

  • attention_mask (torch.Tensor, shape (batch_size, sequence_length), optional) — 用于避免对填充词元索引执行注意力操作的掩码。掩码值选择范围为 [0, 1]

    • 1 表示词元未被掩码
    • 0 表示词元已被掩码

    什么是注意力掩码?

  • position_ids (torch.Tensor, shape (batch_size, sequence_length), optional) — 每个输入序列词元在位置嵌入中的位置索引。选择范围为 [0, config.n_positions - 1]

    什么是位置 ID?

  • encoder_hidden_states (torch.FloatTensor, shape (batch_size, encoder_sequence_length, hidden_size), optional) — 编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • encoder_attention_mask (torch.LongTensor, shape (batch_size, encoder_sequence_length), optional) — 用于避免对编码器输入 ID 的填充词元索引执行交叉注意力操作的掩码。掩码值选择范围为 [0, 1]

    • 1 表示词元未被掩码
    • 0 表示词元已被掩码

    什么是注意力掩码?

  • head_mask (torch.Tensor, shape (num_heads,)(num_layers, num_heads), optional) — 用于使自注意力模块的选定头部无效的掩码。掩码值选择范围为 [0, 1]

    • 1 表示头部未被掩码
    • 0 表示头部已被掩码
  • cross_attn_head_mask (torch.Tensor, shape (num_layers, attention_heads), optional) — 用于使交叉注意力模块的选定头部无效的掩码。掩码值选择范围为 [0, 1]

    • 1 表示头部未被掩码
    • 0 表示头部已被掩码
  • past_key_values (list[torch.FloatTensor], optional) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括模型在解码上一阶段返回的 past_key_values,当 use_cache=Trueconfig.use_cache=True 时。

    允许两种格式:

    • Cache 实例,请参阅我们的 kv 缓存指南
    • config.n_layers 长度的 tuple(torch.FloatTensor) 元组,每个元组包含 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量)。这也被称为传统缓存格式。

    模型将输出与输入相同的缓存格式。如果未传递 past_key_values,则将返回传统缓存格式。

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

  • inputs_embeds (torch.Tensor, shape (batch_size, sequence_length, hidden_size), optional) — 可选地,除了传递 input_ids,您还可以选择直接传递嵌入表示。如果您想对如何将 input_ids 索引转换为相关向量有更多控制,而不是模型的内部嵌入查找矩阵,这将非常有用。
  • 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.BaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

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

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

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

  • past_key_values (Cache, 可选, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 这是一个 Cache 实例。更多详细信息请参阅我们的 kv 缓存指南

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

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

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

  • 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.add_cross_attention=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

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

尽管前向传播的实现需要在该函数中定义,但在此之后应调用 Module 实例而不是直接调用此函数,因为前者会处理运行预处理和后处理步骤,而后者会默默忽略它们。

XGLMForCausalLM

class transformers.XGLMForCausalLM

< >

( config )

参数

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

XGLM 模型转换器,顶部带有一个语言建模头(权重与输入嵌入绑定在一起的线性层)。

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None encoder_hidden_states: typing.Optional[torch.Tensor] = None encoder_attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.Tensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None **kwargs ) transformers.modeling_outputs.CausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

参数

  • input_ids (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 词汇表中输入序列标记的索引。填充将默认被忽略。

    索引可以使用 AutoTokenizer 获取。详情请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入 ID?

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

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

    什么是注意力掩码?

  • position_ids (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为 [0, config.n_positions - 1]

    什么是位置 ID?

  • encoder_hidden_states (形状为 (batch_size, encoder_sequence_length, hidden_size)torch.FloatTensor, 可选) — 编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • encoder_attention_mask (形状为 (batch_size, encoder_sequence_length)torch.LongTensor, 可选) — 用于避免对编码器 input_ids 的填充标记索引执行交叉注意力的掩码。掩码值选择在 [0, 1] 之间:

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

    什么是注意力掩码?

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

    • 1 表示头部未被掩码
    • 0 表示头部被掩码
  • cross_attn_head_mask (形状为 (num_layers, attention_heads)torch.Tensor, 可选) — 用于置空交叉注意力模块中选定头部的掩码。掩码值选择在 [0, 1] 之间:

    • 1 表示头部未被掩码
    • 0 表示头部被掩码
  • past_key_values (list[torch.FloatTensor], 可选) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括模型在解码上一阶段返回的 past_key_values,当 use_cache=Trueconfig.use_cache=True 时。

    允许两种格式:

    • 一个 Cache 实例,请参阅我们的 kv 缓存指南
    • 长度为 config.n_layerstuple(torch.FloatTensor) 元组,每个元组包含两个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量)。这也称为传统缓存格式。

    模型将输出与作为输入馈入的缓存格式相同的缓存格式。如果没有传递 past_key_values,将返回传统缓存格式。

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

  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)torch.Tensor, 可选) — 可选地,除了传递 input_ids,您还可以直接传递嵌入表示。如果您希望对如何将 input_ids 索引转换为相关向量有比模型内部嵌入查找矩阵更多的控制,这很有用。
  • labels (形状为 (batch_size, sequence_length)torch.LongTensor, 可选) — 用于计算掩码语言建模损失的标签。索引应在 [0, ..., config.vocab_size] 或 -100 之间(参见 input_ids 文档字符串)。索引设置为 -100 的标记将被忽略(掩码),损失仅针对标签在 [0, ..., config.vocab_size] 范围内的标记计算。
  • 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.CausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

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

  • loss (torch.FloatTensor 形状为 (1,)可选,当提供 labels 时返回) — 语言建模损失(用于下一个 token 预测)。

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

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

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

  • 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=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • past_key_values (Cache, 可选, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 这是一个 Cache 实例。更多详细信息请参阅我们的 kv 缓存指南

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

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

尽管前向传播的实现需要在该函数中定义,但在此之后应调用 Module 实例而不是直接调用此函数,因为前者会处理运行预处理和后处理步骤,而后者会默默忽略它们。

示例

TensorFlow
隐藏 TensorFlow 内容

TFXGLMModel

class transformers.TFXGLMModel

< >

( config: XGLMConfig embed_tokens: Optional[TFSharedEmbeddings] = None *inputs: Any **kwargs: Any )

参数

  • config (XGLMConfig) — 模型的配置类,包含模型的所有参数。使用配置文件初始化并不会加载与模型相关的权重,只加载配置。请查阅 from_pretrained() 方法以加载模型权重。
  • config — XGLMConfig
  • embed_tokens — [TFSharedEmbeddings]: 输出嵌入

纯 XGLM 模型转换器,输出原始隐藏状态,顶部没有任何特定头部。该模型继承自 TFPreTrainedModel。请查阅超类文档,了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入大小、修剪头部等)。

该模型也是 keras.Model 的子类。将其作为常规 TF 2.0 Keras 模型使用,并参考 TF 2.0 文档了解所有与通用用法和行为相关的事项。

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

  • 所有输入作为关键字参数(如 PyTorch 模型),或
  • 所有输入作为第一个位置参数中的列表、元组或字典。

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

  • 只有一个 input_ids 的单个张量,没有其他:model(input_ids)
  • 长度可变的列表,包含一个或多个输入张量,按文档字符串中给出的顺序:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个字典,其中包含一个或多个与文档字符串中给出的输入名称关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

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

由 *config.num_layers* 层组成的 Transformer 解码器。每层都是一个 TFXGLMDecoderLayer

调用

< >

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None encoder_hidden_states: np.ndarray | tf.Tensor | None = None encoder_attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None cross_attn_head_mask: np.ndarray | tf.Tensor | None = None past_key_values: Optional[tuple[tuple[Union[np.ndarray, tf.Tensor]]]] = None inputs_embeds: np.ndarray | tf.Tensor | None = None use_cache: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False **kwargs: Any ) transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentionstuple(tf.Tensor)

参数

  • input_ids (形状为 ({0})tf.Tensor) — 词汇表中输入序列标记的索引。

    索引可以使用 AutoTokenizer 获取。详情请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入 ID?

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

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

    什么是注意力掩码?

  • position_ids (形状为 (batch_size, sequence_length)tf.TensorNumpy array, 可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为 [0, config.max_position_embeddings - 1]

    什么是位置 ID?

  • encoder_hidden_states (形状为 (batch_size, encoder_sequence_length, hidden_size)tf.Tensor, 可选) — 编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • encoder_attention_mask (形状为 (batch_size, encoder_sequence_length)tf.Tensor, 可选) — 用于避免对编码器 input_ids 的填充标记索引执行交叉注意力的掩码。掩码值选择在 [0, 1] 之间:

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

    什么是注意力掩码?

  • head_mask (形状为 (num_layers, attention_heads)tf.Tensor, 可选) — 用于置空编码器中注意力模块选定头部的掩码。掩码值选择在 [0, 1] 之间:

    • 1 表示头部未被掩码
    • 0 表示头部被掩码
  • cross_attn_head_mask (形状为 (num_layers, attention_heads)tf.Tensor, 可选) — 用于置空交叉注意力模块中选定头部的掩码。掩码值选择在 [0, 1] 之间:

    • 1 表示头部未被掩码
    • 0 表示头部被掩码
  • past_key_values (长度为 config.num_layerstuple[tuple[tf.Tensor]]) — 包含预先计算的注意力块的键和值隐藏状态。可用于加速解码。如果使用了 past_key_values,用户可以选择仅输入最后一个 decoder_input_ids(那些没有将其过去的键值状态提供给此模型的)形状为 (batch_size, 1),而不是所有 decoder_input_ids 形状为 (batch_size, sequence_length)
  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)tf.Tensor, 可选) — 可选地,除了传递 input_ids,您还可以直接传递嵌入表示。如果您希望对如何将 input_ids 索引转换为相关向量有比模型内部嵌入查找矩阵更多的控制,这很有用。
  • use_cache (bool, 可选, 默认为 True) — 如果设置为 True,将返回 past_key_values 键值状态,可用于加速解码(参见 past_key_values)。训练时设置为 False,生成时设置为 True
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。更多详细信息请参阅返回张量下的 attentions。该参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。更多详细信息请参阅返回张量下的 hidden_states。该参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通的元组。该参数可在即时模式下使用,在图模式下其值将始终设置为 True。
  • training (bool, 可选, 默认为 False) — 是否在训练模式下使用模型(某些模块,如 Dropout 模块在训练和评估之间的行为不同)。

返回

transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentionstuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions 或一个 tf.Tensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含根据配置(XGLMConfig)和输入的不同元素。

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

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

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

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

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

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

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

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

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

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

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

尽管前向传播的实现需要在该函数中定义,但在此之后应调用 Module 实例而不是直接调用此函数,因为前者会处理运行预处理和后处理步骤,而后者会默默忽略它们。

示例

>>> from transformers import AutoTokenizer, TFXGLMModel
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-564M")
>>> model = TFXGLMModel.from_pretrained("facebook/xglm-564M")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)

>>> last_hidden_states = outputs.last_hidden_state

TFXGLMForCausalLM

class transformers.TFXGLMForCausalLM

< >

( config: XGLMConfig embed_tokens: Optional[TFSharedEmbeddings] = None *inputs: Any **kwargs: Any )

参数

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

XGLM 模型转换器,顶部带有一个语言建模头(权重与输入嵌入绑定在一起的线性层)。

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

该模型也是 keras.Model 的子类。将其作为常规 TF 2.0 Keras 模型使用,并参考 TF 2.0 文档了解所有与通用用法和行为相关的事项。

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

  • 所有输入作为关键字参数(如 PyTorch 模型),或
  • 所有输入作为第一个位置参数中的列表、元组或字典。

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

  • 只有一个 input_ids 的单个张量,没有其他:model(input_ids)
  • 长度可变的列表,包含一个或多个输入张量,按文档字符串中给出的顺序:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个字典,其中包含一个或多个与文档字符串中给出的输入名称关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

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

调用

< >

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None encoder_hidden_states: np.ndarray | tf.Tensor | None = None encoder_attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None cross_attn_head_mask: np.ndarray | tf.Tensor | None = None past_key_values: Optional[tuple[tuple[Union[np.ndarray, tf.Tensor]]]] = None inputs_embeds: np.ndarray | tf.Tensor | None = None labels: np.ndarray | tf.Tensor | None = None use_cache: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False **kwargs: Any ) transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentionstuple(tf.Tensor)

参数

  • input_ids (tf.Tensor,形状为 ({0})) — 词汇表中输入序列标记的索引。

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

    什么是输入 ID?

  • attention_mask (tf.Tensor,形状为 ({0})可选) — 掩码,用于避免对填充标记索引执行注意力。掩码值选择范围为 [0, 1]

    • 1 表示标记 未被掩盖
    • 0 表示标记 已被掩盖

    什么是注意力掩码?

  • position_ids (tf.TensorNumpy array,形状为 (batch_size, sequence_length)可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为 [0, config.max_position_embeddings - 1]

    什么是位置 ID?

  • encoder_hidden_states (tf.Tensor,形状为 (batch_size, encoder_sequence_length, hidden_size)可选) — 编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • encoder_attention_mask (tf.Tensor,形状为 (batch_size, encoder_sequence_length)可选) — 掩码,用于避免对编码器 input_ids 的填充标记索引执行交叉注意力。掩码值选择范围为 [0, 1]

    • 1 表示标记 未被掩盖
    • 0 表示标记 已被掩盖

    什么是注意力掩码?

  • head_mask (tf.Tensor,形状为 (num_layers, attention_heads)可选) — 用于使编码器中注意力模块的选定头无效的掩码。掩码值选择范围为 [0, 1]

    • 1 表示头部 未被掩盖
    • 0 表示头部 已被掩盖
  • cross_attn_head_mask (tf.Tensor,形状为 (num_layers, attention_heads)可选) — 用于使交叉注意力模块的选定头无效的掩码。掩码值选择范围为 [0, 1]

    • 1 表示头部 未被掩盖
    • 0 表示头部 已被掩盖
  • past_key_values (tuple[tuple[tf.Tensor]],长度为 config.num_layers) — 包含注意力块的预计算键值隐藏状态。可用于加速解码。如果使用 past_key_values,用户可以选择只输入形状为 (batch_size, 1) 的最后 decoder_input_ids(那些没有将其过去的键值状态提供给此模型的),而不是所有形状为 (batch_size, sequence_length)decoder_input_ids
  • inputs_embeds (tf.Tensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。如果您希望对如何将 input_ids 索引转换为关联向量有比模型内部嵌入查找矩阵更多的控制,这将很有用。
  • use_cache (bool可选,默认为 True) — 如果设置为 True,则返回 past_key_values 键值状态,可用于加速解码(参见 past_key_values)。在训练期间设置为 False,生成期间设置为 True
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在即时模式下使用,在图模式下该值将始终设置为 True。
  • training (bool可选,默认为 False) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间有不同的行为)。
  • labels (np.ndarraytf.Tensor,形状为 (batch_size, sequence_length)可选) — 用于语言建模的标签。请注意,标签在模型内部是偏移的,即您可以设置 labels = input_ids。索引选择范围为 [-100, 0, ..., config.vocab_size]。所有设置为 -100 的标签都将被忽略(被掩盖),损失仅针对 [0, ..., config.vocab_size] 中的标签计算。

返回

transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentionstuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或一个 tf.Tensor 的元组(如果传入 return_dict=False 或当 config.return_dict=False 时),包含根据配置(XGLMConfig)和输入的不同元素。

  • loss (形状为(n,)tf.Tensor可选,其中n是非掩码标签的数量,当提供了labels时返回) — 语言建模损失(用于下一标记预测)。

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

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

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

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

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

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

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

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

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

transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentionstuple(tf.Tensor):一个 transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或一个 tf.Tensor 的元组(如果传入 return_dict=False 或当 config.return_dict=False 时),包含根据配置(XGLMConfig)和输入的不同元素。

  • loss (形状为(n,)tf.Tensor可选,其中n是非掩码标签的数量,当提供了labels时返回) — 语言建模损失(用于下一标记预测)。

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

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

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

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

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

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

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

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

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

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

尽管前向传播的实现需要在该函数中定义,但在此之后应调用 Module 实例而不是直接调用此函数,因为前者会处理运行预处理和后处理步骤,而后者会默默忽略它们。

示例

>>> from transformers import AutoTokenizer, TFXGLMForCausalLM
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-564M")
>>> model = TFXGLMForCausalLM.from_pretrained("facebook/xglm-564M")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> logits = outputs.logits
JAX
隐藏 JAX 内容

FlaxXGLMModel

class transformers.FlaxXGLMModel

< >

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

参数

  • config (XGLMConfig) — 模型的配置类,包含模型的所有参数。用配置文件进行初始化不会加载与模型相关的权重,只会加载配置。要加载模型权重,请查看 from_pretrained() 方法。
  • dtype (jax.numpy.dtype可选,默认为 jax.numpy.float32) — 计算的数据类型。可以是 jax.numpy.float32jax.numpy.float16(在 GPU 上)和 jax.numpy.bfloat16(在 TPU 上)之一。

    这可用于在 GPU 或 TPU 上启用混合精度训练或半精度推理。如果指定,所有计算都将使用给定的 dtype 执行。

    请注意,这仅指定计算的数据类型,不影响模型参数的数据类型。

    如果您希望更改模型参数的数据类型,请参阅 to_fp16()to_bf16()

裸 XGLM 模型转换器,输出原始隐藏状态,顶部没有任何特定头部。该模型继承自 FlaxPreTrainedModel。有关库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等),请查看超类文档。

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

最后,此模型支持固有的 JAX 功能,例如

__call__

< >

( input_ids: Array attention_mask: typing.Optional[jax.Array] = None position_ids: typing.Optional[jax.Array] = None encoder_hidden_states: typing.Optional[jax.Array] = None encoder_attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None past_key_values: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

参数

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

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

    什么是输入 ID?

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

    • 1 表示标记 未被掩盖
    • 0 表示标记 已被掩盖

    什么是注意力掩码?

  • position_ids (numpy.ndarray,形状为 (batch_size, sequence_length)可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为 [0, config.max_position_embeddings - 1]
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

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

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

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

  • past_key_values (tuple(tuple(jnp.ndarray))可选,当传入 use_cache=True 或当 config.use_cache=True 时返回) — tuple(jnp.ndarray) 的元组,长度为 config.n_layers,每个元组包含 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量,如果 config.is_encoder_decoder=True,则可选地包含 2 个额外形状为 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的张量。

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

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

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

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

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

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

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

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

尽管前向传播的实现需要在该函数中定义,但在此之后应调用 Module 实例而不是直接调用此函数,因为前者会处理运行预处理和后处理步骤,而后者会默默忽略它们。

示例

>>> from transformers import AutoTokenizer, FlaxXGLMModel

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-564M")
>>> model = FlaxXGLMModel.from_pretrained("facebook/xglm-564M")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state

FlaxXGLMForCausalLM

class transformers.FlaxXGLMForCausalLM

< >

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

参数

  • config (XGLMConfig) — 模型的配置类,包含模型的所有参数。用配置文件进行初始化不会加载与模型相关的权重,只会加载配置。要加载模型权重,请查看 from_pretrained() 方法。
  • dtype (jax.numpy.dtype可选,默认为 jax.numpy.float32) — 计算的数据类型。可以是 jax.numpy.float32jax.numpy.float16(在 GPU 上)和 jax.numpy.bfloat16(在 TPU 上)之一。

    这可用于在 GPU 或 TPU 上启用混合精度训练或半精度推理。如果指定,所有计算都将使用给定的 dtype 执行。

    请注意,这仅指定计算的数据类型,不影响模型参数的数据类型。

    如果您希望更改模型参数的数据类型,请参阅 to_fp16()to_bf16()

XGLM 模型转换器,顶部带有一个语言建模头(权重与输入嵌入绑定在一起的线性层)。

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

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

最后,此模型支持固有的 JAX 功能,例如

__call__

< >

( input_ids: Array attention_mask: typing.Optional[jax.Array] = None position_ids: typing.Optional[jax.Array] = None encoder_hidden_states: typing.Optional[jax.Array] = None encoder_attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None past_key_values: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

参数

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

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

    什么是输入 ID?

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

    • 1 表示标记 未被掩盖
    • 0 表示标记 已被掩盖

    什么是注意力掩码?

  • position_ids (numpy.ndarray,形状为 (batch_size, sequence_length)可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为 [0, config.max_position_embeddings - 1]
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

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

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

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

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

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

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

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

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

  • past_key_values (tuple(tuple(jnp.ndarray))可选,当传入 use_cache=True 或当 config.use_cache=True 时返回) — jnp.ndarray 元组的元组,长度为 config.n_layers,每个元组包含自注意力和交叉注意力层的缓存键值状态(如果模型在编码器-解码器设置中使用)。仅当 config.is_decoder = True 时相关。

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

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

尽管前向传播的实现需要在该函数中定义,但在此之后应调用 Module 实例而不是直接调用此函数,因为前者会处理运行预处理和后处理步骤,而后者会默默忽略它们。

示例

>>> from transformers import AutoTokenizer, FlaxXGLMForCausalLM

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-564M")
>>> model = FlaxXGLMForCausalLM.from_pretrained("facebook/xglm-564M")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")
>>> outputs = model(**inputs)

>>> # retrieve logts for next token
>>> next_token_logits = outputs.logits[:, -1]
< > 在 GitHub 上更新