Transformers 文档

ESM

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

ESM

概述

本页面提供了 Meta AI 基础人工智能研究团队的 Transformer 蛋白质语言模型的代码和预训练权重,包括最先进的 ESMFold 和 ESM-2,以及先前发布的 ESM-1b 和 ESM-1v。Transformer 蛋白质语言模型在论文 Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences 中被介绍,作者包括 Alexander Rives, Joshua Meier, Tom Sercu, Siddharth Goyal, Zeming Lin, Jason Liu, Demi Guo, Myle Ott, C. Lawrence Zitnick, Jerry Ma, 和 Rob Fergus。该论文的第一版于 2019 年预印

ESM-2 在一系列结构预测任务中优于所有经过测试的单序列蛋白质语言模型,并实现了原子分辨率的结构预测。它与论文 Language models of protein sequences at the scale of evolution enable accurate structure prediction 一起发布,作者包括 Zeming Lin, Halil Akin, Roshan Rao, Brian Hie, Zhongkai Zhu, Wenting Lu, Allan dos Santos Costa, Maryam Fazel-Zarandi, Tom Sercu, Sal Candido 和 Alexander Rives。

本文还介绍了 ESMFold。它使用 ESM-2 主干和一个头部,可以以最先进的精度预测折叠的蛋白质结构。与 AlphaFold2 不同,它依赖于来自大型预训练蛋白质语言模型主干的词符嵌入,并且在推理时不执行多序列比对 (MSA) 步骤,这意味着 ESMFold 检查点是完全“独立的” - 它们不需要已知蛋白质序列和结构的数据库以及相关的外部查询工具来进行预测,因此速度更快。

“通过将无监督学习扩展到 2.5 亿个蛋白质序列,生物结构和功能得以涌现” 这篇论文的摘要是:

在人工智能领域,数据规模和模型容量的结合,通过无监督学习实现,已在表征学习和统计生成方面取得了重大进展。在生命科学领域,预计测序技术的增长将带来前所未有的关于自然序列多样性的数据。进化规模的蛋白质语言建模是迈向生物学预测和生成式人工智能的逻辑步骤。为此,我们使用无监督学习在跨越进化多样性的 2.5 亿个蛋白质序列中的 860 亿个氨基酸上训练了一个深度上下文语言模型。由此产生的模型在其表征中包含有关生物学特性的信息。这些表征仅从序列数据中学习而来。学习到的表征空间具有多尺度组织,反映了从氨基酸的生物化学特性到蛋白质的远程同源性的结构。关于二级和三级结构的信息被编码在表征中,并且可以通过线性投影来识别。表征学习产生的功能可以推广到各种应用,从而实现最先进的突变效应和二级结构的监督预测,并改进用于远程接触预测的最先进的功能。

“进化规模的蛋白质序列语言模型实现了准确的结构预测” 这篇论文的摘要是:

最近的研究表明,大型语言模型随着规模的扩大而发展出涌现能力,超越了简单的模式匹配,能够执行更高级别的推理并生成逼真的图像和文本。虽然在较小规模上已经研究了在蛋白质序列上训练的语言模型,但对于它们在规模扩大时学习到的关于生物学的知识知之甚少。在这项工作中,我们训练了参数高达 150 亿的模型,这是迄今为止评估的最大的蛋白质语言模型。我们发现,随着模型的扩展,它们学习到的信息能够预测蛋白质在单个原子分辨率下的三维结构。我们提出了 ESMFold,用于直接从蛋白质的单个序列进行高精度端到端原子级结构预测。对于语言模型充分理解的低困惑度序列,ESMFold 具有与 AlphaFold2 和 RoseTTAFold 相似的精度。ESMFold 推理比 AlphaFold2 快一个数量级,从而可以在实际时间尺度内探索宏基因组蛋白质的结构空间。

原始代码可以在 这里 找到,由 Meta AI 的基础人工智能研究团队开发。ESM-1b、ESM-1v 和 ESM-2 由 jasonliuMatt 贡献给 huggingface。

ESMFold 由 MattSylvain 贡献给 huggingface,非常感谢 Nikita Smetanin、Roshan Rao 和 Tom Sercu 在整个过程中的帮助!

使用技巧

  • ESM 模型使用掩码语言建模 (MLM) 目标进行训练。
  • HuggingFace 版本的 ESMFold 使用了 openfold 库的部分内容。openfold 库在 Apache License 2.0 下获得许可。

资源

EsmConfig

class transformers.EsmConfig

< >

( vocab_size = None mask_token_id = None pad_token_id = None hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 1026 initializer_range = 0.02 layer_norm_eps = 1e-12 position_embedding_type = 'absolute' use_cache = True emb_layer_norm_before = None token_dropout = False is_folding_model = False esmfold_config = None vocab_list = None **kwargs )

Parameters

  • vocab_size (int, optional) — ESM 模型的词汇表大小。定义了在调用 ESMModel 时传递的 inputs_ids 可以表示的不同 tokens 的数量。
  • mask_token_id (int, optional) — 词汇表中 mask token 的索引。 这必须包含在配置中,因为“mask-dropout”缩放技巧会根据 masked tokens 的数量来缩放输入。
  • pad_token_id (int, optional) — 词汇表中 padding token 的索引。 这必须包含在配置中,因为 ESM 代码的某些部分使用它来代替 attention mask。
  • hidden_size (int, optional, defaults to 768) — 编码器层和池化层的维度。
  • num_hidden_layers (int, optional, defaults to 12) — Transformer 编码器中隐藏层的数量。
  • num_attention_heads (int, optional, defaults to 12) — Transformer 编码器中每个 attention 层的 attention heads 数量。
  • intermediate_size (int, optional, defaults to 3072) — Transformer 编码器中“intermediate”(通常称为 feed-forward)层的维度。
  • hidden_dropout_prob (float, optional, defaults to 0.1) — embeddings、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (float, optional, defaults to 0.1) — attention 概率的 dropout 比率。
  • max_position_embeddings (int, optional, defaults to 1026) — 该模型可能使用的最大序列长度。 通常将其设置为较大的值以防万一(例如,512 或 1024 或 2048)。
  • initializer_range (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float, optional, defaults to 1e-12) — layer normalization 层使用的 epsilon 值。
  • position_embedding_type (str, optional, defaults to "absolute") — 位置 embedding 的类型。 从 "absolute", "relative_key", "relative_key_query", "rotary" 中选择一个。 对于位置 embeddings,使用 "absolute"。 有关 "relative_key" 的更多信息,请参考 Self-Attention with Relative Position Representations (Shaw et al.)。 有关 "relative_key_query" 的更多信息,请参考 Improve Transformer Models with Better Relative Position Embeddings (Huang et al.) 中的方法 4
  • is_decoder (bool, optional, defaults to False) — 模型是否用作 decoder。 如果为 False,则模型用作 encoder。
  • use_cache (bool, optional, defaults to True) — 模型是否应返回上次的 key/values attentions (并非所有模型都使用)。 仅当 config.is_decoder=True 时相关。
  • emb_layer_norm_before (bool, optional) — 是否在 embeddings 之后但在网络主干之前应用 layer normalization。
  • token_dropout (bool, defaults to False) — 启用此项后,masked tokens 将被视为已被输入 dropout 丢弃。

这是用于存储 ESMModel 配置的配置类。 它用于根据指定的参数实例化 ESM 模型,从而定义模型架构。 使用默认值实例化配置将产生与 ESM facebook/esm-1b 架构类似的配置。

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

Examples

>>> from transformers import EsmModel, EsmConfig

>>> # Initializing a ESM facebook/esm-1b style configuration >>> configuration = EsmConfig()

>>> # Initializing a model from the configuration >>> model = ESMModel(configuration)

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

to_dict

< >

( ) Dict[str, any]

Returns

Dict[str, any]

Dictionary of all the attributes that make up this configuration instance,

将此实例序列化为 Python 字典。 覆盖默认的 to_dict()

EsmTokenizer

class transformers.EsmTokenizer

< >

( vocab_file unk_token = '<unk>' cls_token = '<cls>' pad_token = '<pad>' mask_token = '<mask>' eos_token = '<eos>' **kwargs )

构建 ESM tokenizer。

build_inputs_with_special_tokens

< >

( token_ids_0: List token_ids_1: Optional = None )

get_special_tokens_mask

< >

( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) [0, 1] 范围内整数的列表

Parameters

  • token_ids_0 (List[int]) — 第一个序列的 ids 列表。
  • token_ids_1 (List[int], optional) — 第二个序列的 ids 列表。
  • already_has_special_tokens (bool, optional, defaults to False) — 是否token列表已经为模型格式化了特殊token。

Returns

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

1 代表特殊 token,0 代表序列 token。

从没有添加特殊 token 的 token 列表中检索序列 ID。当使用分词器的 prepare_for_modelencode_plus 方法添加特殊 token 时,会调用此方法。

create_token_type_ids_from_sequences

< >

( token_ids_0: List token_ids_1: Optional = None ) List[int]

Parameters

  • token_ids_0 (List[int]) — 第一个 token 化序列。
  • token_ids_1 (List[int], optional) — 第二个 token 化序列。

Returns

List[int]

Token 类型 ID。

创建与传递的序列相对应的 token 类型 ID。 什么是 token 类型 ID?

如果模型具有构建这些 ID 的特殊方式,则应在子类中重写此方法。

save_vocabulary

< >

( save_directory filename_prefix )

Pytorch
隐藏 Pytorch 内容

EsmModel

class transformers.EsmModel

< >

( config add_pooling_layer = True )

Parameters

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

裸 ESM 模型 Transformer,输出原始隐藏状态,顶部没有任何特定的 head。

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

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

该模型可以充当编码器(仅具有自注意力),也可以充当解码器,在后一种情况下,在自注意力层之间添加交叉注意力层,遵循 Attention is all you need (Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser 和 Illia Polosukhin 撰写)中描述的架构。

要充当解码器,模型需要在配置的 is_decoder 参数设置为 True 的情况下进行初始化。要在 Seq2Seq 模型中使用,模型需要使用 is_decoder 参数和 add_cross_attention 都设置为 True 进行初始化;然后,encoder_hidden_states 预计将作为前向传播的输入。

forward

< >

( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentionstuple(torch.FloatTensor)

Parameters

  • input_ids (torch.LongTensor,形状为 ((batch_size, sequence_length))) — 词汇表中输入序列 token 的索引。

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

    什么是输入 ID?

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

    • 1 代表未被掩盖的 token,
    • 0 代表被掩盖的 token。

    什么是注意力掩码?

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

    什么是位置 ID?

  • head_mask (torch.FloatTensor,形状为 (num_heads,)(num_layers, num_heads)可选) — 掩码,用于使自注意力模块的选定 head 无效。掩码值在 [0, 1] 中选择:

    • 1 表示 head 未被掩盖
    • 0 表示 head 被掩盖
  • inputs_embeds (torch.FloatTensor,形状为 ((batch_size, sequence_length), hidden_size)可选) — (可选)您可以选择直接传递嵌入表示,而不是传递 input_ids。 如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。
  • encoder_hidden_states (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 编码器最后一层输出的隐藏状态序列。 如果模型配置为解码器,则在交叉注意力中使用。
  • encoder_attention_mask (torch.FloatTensor,形状为 (batch_size, sequence_length)可选) — 掩码,用于避免对编码器输入的填充 token 索引执行注意力。如果模型配置为解码器,则此掩码在交叉注意力中使用。掩码值在 [0, 1] 中选择:

    • 1 代表未被掩盖的 token,
    • 0 代表被掩盖的 token。
  • past_key_values (tuple(tuple(torch.FloatTensor)),长度为 config.n_layers,每个元组有 4 个形状为 (batch_size, num_heads, sequence_length - 1, embed_size_per_head) 的张量) — 包含注意力模块的预计算的键和值隐藏状态。 可用于加速解码。

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

  • use_cache (bool, 可选) — 如果设置为 True,则返回 past_key_values 键值状态,并可用于加速解码(请参阅 past_key_values)。

Returns

transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentionstuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions 或一个 torch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (EsmConfig) 和输入。

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

  • pooler_output (形状为 (batch_size, hidden_size)torch.FloatTensor) — 序列的第一个 token(分类 token)的最后一层隐藏状态,在通过用于辅助预训练任务的层进一步处理之后。例如,对于 BERT 系列模型,这返回通过线性层和 tanh 激活函数处理后的分类 token。线性层权重通过预训练期间的下一句预测(分类)目标进行训练。

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

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

  • attentions (tuple(torch.FloatTensor), 可选, 当传递 output_attentions=True 或当 config.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 之后,用于计算交叉注意力头中的加权平均值。

  • past_key_values (tuple(tuple(torch.FloatTensor)), 可选, 当传递 use_cache=True 或当 config.use_cache=True 时返回) — 长度为 config.n_layerstuple(torch.FloatTensor) 的元组,每个元组有 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 输入)加速顺序解码。

EsmModel forward 方法,覆盖了 __call__ 特殊方法。

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

示例

>>> from transformers import AutoTokenizer, EsmModel
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = EsmModel.from_pretrained("facebook/esm2_t6_8M_UR50D")

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

>>> last_hidden_states = outputs.last_hidden_state

EsmForMaskedLM

class transformers.EsmForMaskedLM

< >

( config )

Parameters

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

带有 language modeling 头部的 ESM 模型。

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

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

forward

< >

( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) transformers.modeling_outputs.MaskedLMOutputtuple(torch.FloatTensor)

Parameters

  • input_ids (形状为 (batch_size, sequence_length)torch.LongTensor) — 词汇表中输入序列 token 的索引。

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

    什么是输入 ID?

  • attention_mask (形状为 (batch_size, sequence_length)torch.FloatTensor, 可选) — 掩码,以避免对 padding token 索引执行注意力机制。掩码值在 [0, 1] 中选择:

    • 1 表示 token 未被掩盖
    • 0 表示 token 已被掩盖

    什么是注意力掩码?

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

    什么是位置 ID?

  • head_mask (形状为 (num_heads,)(num_layers, num_heads)torch.FloatTensor, 可选) — 掩码,用于使自注意力模块的选定 head 失效。掩码值在 [0, 1] 中选择:

    • 1 表示 head 未被掩盖
    • 0 表示 head 已被掩盖
  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor, 可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • labels (形状为 (batch_size, sequence_length)torch.LongTensor, 可选) — 用于计算 masked language modeling 损失的标签。索引应在 [-100, 0, ..., config.vocab_size] 中(请参阅 input_ids 文档字符串)。索引设置为 -100 的 Token 将被忽略(掩盖),损失仅针对标签在 [0, ..., config.vocab_size] 中的 token 计算
  • kwargs (Dict[str, any], 可选, 默认为 {}) — 用于隐藏已弃用的旧版参数。

Returns

transformers.modeling_outputs.MaskedLMOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.MaskedLMOutput 或一个 torch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (EsmConfig) 和输入。

  • loss (形状为 (1,)torch.FloatTensor, 可选, 当提供 labels 时返回) — Masked language modeling (MLM) 损失。

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

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

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

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

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

EsmForMaskedLM forward 方法,覆盖了 __call__ 特殊方法。

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

示例

>>> from transformers import AutoTokenizer, EsmForMaskedLM
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = EsmForMaskedLM.from_pretrained("facebook/esm2_t6_8M_UR50D")

>>> inputs = tokenizer("The capital of France is <mask>.", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # retrieve index of <mask>
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]

>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)

>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)

>>> outputs = model(**inputs, labels=labels)

EsmForSequenceClassification

class transformers.EsmForSequenceClassification

< >

( config )

Parameters

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

带有序列分类/回归头部的 ESM 模型转换器(pooled 输出顶部的线性层),例如用于 GLUE 任务。

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

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

forward

< >

( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) transformers.modeling_outputs.SequenceClassifierOutputtuple(torch.FloatTensor)

Parameters

  • input_ids (形状为 (batch_size, sequence_length)torch.LongTensor) — 词汇表中输入序列 tokens 的索引。

    索引可以通过 AutoTokenizer 获得。 详见 PreTrainedTokenizer.encode()PreTrainedTokenizer.call() 以了解详情。

    什么是输入 ID?

  • attention_mask (形状为 (batch_size, sequence_length)torch.FloatTensor, 可选) — 掩码,用于避免在 padding token 索引上执行 attention。 Mask values selected in [0, 1]:

    • 1 代表 tokens 未被掩盖
    • 0 代表 tokens 已被掩盖

    什么是注意力掩码?

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

    什么是位置 ID?

  • head_mask (形状为 (num_heads,)(num_layers, num_heads)torch.FloatTensor, 可选) — 掩码,用于 nullify self-attention 模块的选定 heads。 Mask values selected in [0, 1]:

    • 1 表示 head 未被掩盖
    • 0 表示 head 已被掩盖
  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor, 可选) — (可选)您可以选择直接传递嵌入表示,而不是传递 input_ids。 如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • output_attentions (bool, 可选) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有 layers 的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • labels (形状为 (batch_size,)torch.LongTensor, 可选) — 用于计算序列分类/回归损失的标签。 索引应在 [0, ..., config.num_labels - 1] 中。 如果 config.num_labels == 1,则计算回归损失(均方损失);如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

Returns

transformers.modeling_outputs.SequenceClassifierOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.SequenceClassifierOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (EsmConfig) 和输入。

  • loss (形状为 (1,)torch.FloatTensor, 可选, 当提供 labels 时返回) — 分类(或回归,如果 config.num_labels==1)损失。

  • logits (形状为 (batch_size, config.num_labels)torch.FloatTensor) — 分类(或回归,如果 config.num_labels==1)得分(SoftMax 之前)。

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

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

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

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

EsmForSequenceClassification forward 方法,覆盖了 __call__ 特殊方法。

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

单标签分类示例

>>> import torch
>>> from transformers import AutoTokenizer, EsmForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm2_t6_8M_UR50D")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm2_t6_8M_UR50D", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss

多标签分类示例

>>> import torch
>>> from transformers import AutoTokenizer, EsmForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm2_t6_8M_UR50D", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = EsmForSequenceClassification.from_pretrained(
...     "facebook/esm2_t6_8M_UR50D", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

EsmForTokenClassification

class transformers.EsmForTokenClassification

< >

( config )

Parameters

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

ESM 模型,顶部带有一个 token 分类头(隐藏状态输出顶部的线性层),例如,用于命名实体识别 (NER) 任务。

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

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

forward

< >

( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) transformers.modeling_outputs.TokenClassifierOutput or tuple(torch.FloatTensor)

Parameters

  • input_ids (形状为 (batch_size, sequence_length)torch.LongTensor) — 词汇表中输入序列 tokens 的索引。

    索引可以通过 AutoTokenizer 获得。 详见 PreTrainedTokenizer.encode()PreTrainedTokenizer.call() 以了解详情。

    什么是输入 ID?

  • attention_mask (形状为 (batch_size, sequence_length)torch.FloatTensor, 可选) — 掩码,用于避免在 padding token 索引上执行 attention。 Mask values selected in [0, 1]:

    • 1 代表 tokens 未被掩盖
    • 0 代表 tokens 已被掩盖

    什么是注意力掩码?

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

    什么是位置 ID?

  • head_mask (形状为 (num_heads,)(num_layers, num_heads)torch.FloatTensor, 可选) — 掩码,用于 nullify self-attention 模块的选定 heads。 Mask values selected in [0, 1]:

    • 1 表示 head 未被掩盖
    • 0 表示 head 已被掩盖
  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor, 可选) — (可选)您可以选择直接传递嵌入表示,而不是传递 input_ids。 如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • output_attentions (bool, 可选) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有 layers 的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • labels (形状为 (batch_size, sequence_length)torch.LongTensor, 可选) — 用于计算 token 分类损失的标签。 索引应在 [0, ..., config.num_labels - 1] 中。

Returns

transformers.modeling_outputs.TokenClassifierOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.TokenClassifierOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (EsmConfig) 和输入。

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

  • logits (形状为 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 分类得分(SoftMax 之前)。

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

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

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

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

EsmForTokenClassification forward 方法,覆盖了 __call__ 特殊方法。

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

示例

>>> from transformers import AutoTokenizer, EsmForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = EsmForTokenClassification.from_pretrained("facebook/esm2_t6_8M_UR50D")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_token_class_ids = logits.argmax(-1)

>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]

>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss

EsmForProteinFolding

class transformers.EsmForProteinFolding

< >

( config )

Parameters

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

ESMForProteinFolding 是 HuggingFace 移植的原始 ESMFold 模型。它由 ESM-2 “主干” 和一个蛋白质折叠 “头部” 组成,尽管与大多数其他输出头不同,这个 “头部” 在大小和运行时方面与模型其余部分的总和相似!它输出一个字典,其中包含关于输入蛋白质的预测结构信息。

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

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

forward

< >

( input_ids: Tensor attention_mask: Optional = None position_ids: Optional = None masking_pattern: Optional = None num_recycles: Optional = None ) transformers.models.esm.modeling_esmfold.EsmForProteinFoldingOutputtuple(torch.FloatTensor)

Parameters

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)) — 词汇表中输入序列 tokens 的索引。

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

    什么是输入 IDs?

  • attention_mask (torch.FloatTensor,形状为 (batch_size, sequence_length), 可选) — 掩码,用于避免在 padding token 索引上执行 attention。 掩码值在 [0, 1] 中选择:

    • 1 表示 tokens 未被掩码
    • 0 表示 tokens 被掩码

    什么是 attention 掩码?

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

    什么是位置 IDs?

  • masking_pattern (torch.LongTensor,形状为 (batch_size, sequence_length), 可选) — 在训练期间要掩码的 tokens 位置,作为一种正则化形式。 掩码值在 [0, 1] 中选择。
  • num_recycles (int, 可选, 默认为 None) — 输入序列的循环次数。 如果为 None,则默认为 config.num_recycles。 “循环” 包括将折叠主干的输出重新作为输入传递到主干中。 在训练期间,循环次数应随每个批次而变化,以确保模型学习在每次循环后输出有效的预测。 在推理期间,num_recycles 应设置为模型训练时的最大值,以获得最大精度。 因此,当此值设置为 None 时,将使用 config.max_recycles

Returns

transformers.models.esm.modeling_esmfold.EsmForProteinFoldingOutputtuple(torch.FloatTensor)

一个 transformers.models.esm.modeling_esmfold.EsmForProteinFoldingOutputtorch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (<class 'transformers.models.esm.configuration_esm.EsmConfig'>) 和输入。

  • frames (torch.FloatTensor) — 输出框架。
  • sidechain_frames (torch.FloatTensor) — 输出侧链框架。
  • unnormalized_angles (torch.FloatTensor) — 预测的未归一化的主链和侧链扭转角。
  • angles (torch.FloatTensor) — 预测的主链和侧链扭转角。
  • positions (torch.FloatTensor) — 预测的主链和侧链原子的位置。
  • states (torch.FloatTensor) — 来自蛋白质折叠主干的隐藏状态。
  • s_s (torch.FloatTensor) — 通过连接 ESM-2 LM 主干的每一层的隐藏状态得出的每个残基的 embeddings。
  • s_z (torch.FloatTensor) — 成对残基 embeddings。
  • distogram_logits (torch.FloatTensor) — 用于计算残基距离的距离图的输入 logits。
  • lm_logits (torch.FloatTensor) — ESM-2 蛋白质语言模型主干输出的 Logits。
  • aatype (torch.FloatTensor) — 输入氨基酸(AlphaFold2 索引)。
  • atom14_atom_exists (torch.FloatTensor) — 每个原子是否存在于 atom14 表示中。
  • residx_atom14_to_atom37 (torch.FloatTensor) — atom14 和 atom37 表示中原子之间的映射。
  • residx_atom37_to_atom14 (torch.FloatTensor) — atom37 和 atom14 表示中原子之间的映射。
  • atom37_atom_exists (torch.FloatTensor) — 每个原子是否存在于 atom37 表示中。
  • residue_index (torch.FloatTensor) — 蛋白质链中每个残基的索引。 除非使用内部 padding tokens,否则这将只是从 0 到 sequence_length 的整数序列。
  • lddt_head (torch.FloatTensor) — 来自 lddt 头的原始输出,用于计算 plddt。
  • plddt (torch.FloatTensor) — 每个残基的置信度评分。 低置信度区域可能表明模型预测不确定的区域,或蛋白质结构无序的区域。
  • ptm_logits (torch.FloatTensor) — 用于计算 ptm 的原始 logits。
  • ptm (torch.FloatTensor) — 代表模型对整体结构的高级置信度的 TM-score 输出。
  • aligned_confidence_probs (torch.FloatTensor) — 对齐结构的每个残基的置信度评分。
  • predicted_aligned_error (torch.FloatTensor) — 模型预测与真实值之间的预测误差。
  • max_predicted_aligned_error (torch.FloatTensor) — 每个样本的最大预测误差。

EsmForProteinFolding forward 方法,覆盖了 __call__ 特殊方法。

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

示例

>>> from transformers import AutoTokenizer, EsmForProteinFolding

>>> model = EsmForProteinFolding.from_pretrained("facebook/esmfold_v1")
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esmfold_v1")
>>> inputs = tokenizer(["MLKNVQVQLV"], return_tensors="pt", add_special_tokens=False)  # A tiny random peptide
>>> outputs = model(**inputs)
>>> folded_positions = outputs.positions
TensorFlow
隐藏 TensorFlow 内容

TFEsmModel

class transformers.TFEsmModel

< >

( config: EsmConfig add_pooling_layer = True *inputs **kwargs )

Parameters

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

裸 ESM 模型 Transformer,输出原始隐藏状态,顶部没有任何特定的 head。

此模型继承自 TFPreTrainedModel。 查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入 embeddings 大小、剪枝 heads 等)。

此模型也是 Keras Model 子类。 将其用作常规 Keras 模型,并参阅 TF/Keras 文档以了解与通用用法和行为相关的所有事项。

call

< >

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None encoder_hidden_states: np.ndarray | tf.Tensor | None = None encoder_attention_mask: np.ndarray | tf.Tensor | None = None past_key_values: Optional[Tuple[Tuple[Union[np.ndarray, tf.Tensor]]]] = 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 ) transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentionstuple(tf.Tensor)

Parameters

  • input_ids (tf.Tensor,形状为 (batch_size, sequence_length)) — 词汇表中输入序列 tokens 的索引。

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

    什么是输入 IDs?

  • attention_mask (tf.Tensor,形状为 (batch_size, sequence_length), 可选) — 掩码,用于避免在 padding token 索引上执行 attention。 掩码值在 [0, 1] 中选择:

    • 1 表示 tokens 未被掩码
    • 0 表示 tokens 被掩码

    什么是 attention 掩码?

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

    什么是位置 IDs?

  • head_mask (tf.Tensor,形状为 (num_heads,)(num_layers, num_heads), 可选) — 掩码,用于使 self-attention 模块的选定 heads 无效。 掩码值在 [0, 1] 中选择:

    • 1 表示 head 未被掩码
    • 0 表示 head 被掩码
  • inputs_embeds (tf.Tensor,形状为 (batch_size, sequence_length, hidden_size), 可选) — 可选地,您可以选择直接传递嵌入表示而不是传递 input_ids。 如果您希望比模型的内部 embedding 查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • output_attentions (bool, 可选) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通的元组。
  • encoder_hidden_states (tf.Tensor of shape (batch_size, sequence_length, hidden_size), optional) — 编码器最后一层输出的隐藏状态序列。 如果模型配置为解码器,则在交叉注意力中被使用。
  • encoder_attention_mask (tf.Tensor of shape (batch_size, sequence_length), optional) — 用于避免在编码器输入的填充 token 索引上执行 attention 的掩码。 如果模型配置为解码器,则此掩码在交叉注意力中被使用。 掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩码 的 token,
    • 0 表示 被掩码 的 token。
  • past_key_values (Tuple[Tuple[tf.Tensor]] of length config.n_layers) — 包含 attention 块的预计算的键和值隐藏状态。 可用于加速解码。 如果使用了 past_key_values,用户可以选择仅输入最后的 decoder_input_ids (那些没有将其过去的键值状态提供给此模型的) 形状为 (batch_size, 1) 而不是所有形状为 (batch_size, sequence_length)decoder_input_ids
  • use_cache (bool, optional, defaults to True) — 如果设置为 True,则返回 past_key_values 键值状态,并且可以用于加速解码 (参见 past_key_values)。 训练时设置为 False,生成时设置为 True

Returns

transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentionstuple(tf.Tensor)

A transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentions 或一个 tf.Tensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (EsmConfig) 和输入。

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

  • pooler_output (tf.Tensor of shape (batch_size, hidden_size)) — 序列的第一个 token (分类 token) 的最后一层隐藏状态,通过线性层和 Tanh 激活函数进一步处理。 线性层权重在预训练期间从下一句预测(分类)目标中训练而来。

    此输出通常 *不是* 输入语义内容的良好摘要,通常最好对整个输入序列的隐藏状态序列进行平均或池化。

  • past_key_values (List[tf.Tensor], optional, returned when use_cache=True is passed or when config.use_cache=True) — 长度为 config.n_layerstf.Tensor 列表,每个张量的形状为 (2, batch_size, num_heads, sequence_length, embed_size_per_head))。

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

  • hidden_states (tuple(tf.Tensor), optional, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — tf.Tensor 的元组(一个用于 embedding 的输出 + 一个用于每一层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出的隐藏状态加上初始 embedding 输出。

  • attentions (tuple(tf.Tensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — tf.Tensor 的元组(每一层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • cross_attentions (tuple(tf.Tensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — tf.Tensor 的元组(每一层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

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

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

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = TFEsmModel.from_pretrained("facebook/esm2_t6_8M_UR50D")

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

>>> last_hidden_states = outputs.last_hidden_state

TFEsmForMaskedLM

class transformers.TFEsmForMaskedLM

< >

( config )

Parameters

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

带有 language modeling 头部的 ESM 模型。

此模型继承自 TFPreTrainedModel。 查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入 embeddings 大小、剪枝 heads 等)。

此模型也是 Keras Model 子类。 将其用作常规 Keras 模型,并参阅 TF/Keras 文档以了解与通用用法和行为相关的所有事项。

call

< >

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None encoder_hidden_states: np.ndarray | tf.Tensor | None = None encoder_attention_mask: np.ndarray | tf.Tensor | None = None labels: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.modeling_tf_outputs.TFMaskedLMOutputtuple(tf.Tensor)

Parameters

  • input_ids (tf.Tensor of shape (batch_size, sequence_length)) — 词汇表中输入序列 token 的索引。

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

    什么是输入 IDs?

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

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

    什么是注意力掩码?

  • position_ids (tf.Tensor of shape (batch_size, sequence_length), optional) — 每个输入序列 token 在位置 embeddings 中的位置索引。 在范围 [0, config.max_position_embeddings - 1] 中选择。

    什么是位置 IDs?

  • head_mask (tf.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使自注意力模块的选定 head 无效的掩码。 掩码值在 [0, 1] 中选择:

    • 1 表示 head 未被掩蔽
    • 0 表示 head 被掩蔽
  • inputs_embeds (tf.Tensor of shape (batch_size, sequence_length, hidden_size), optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。 如果您想要更好地控制如何将 input_ids 索引转换为关联向量,这将非常有用。
  • output_attentions (bool, optional) — 是否返回所有 attention 层的 attention 张量。 有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通的元组。
  • labels (tf.Tensor of shape (batch_size, sequence_length), optional) — 用于计算掩码语言建模损失的标签。 索引应为 [-100, 0, ..., config.vocab_size] (参见 input_ids 文档字符串) 索引设置为 -100 的 token 将被忽略(掩码),损失仅针对标签在 [0, ..., config.vocab_size] 中的 token 计算
  • kwargs (Dict[str, any], optional, defaults to {}) — 用于隐藏已弃用的旧版参数。

Returns

transformers.modeling_tf_outputs.TFMaskedLMOutputtuple(tf.Tensor)

A transformers.modeling_tf_outputs.TFMaskedLMOutput 或一个 tf.Tensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (EsmConfig) 和输入。

  • loss (tf.Tensor of shape (n,), optional, where n is the number of non-masked labels, returned when labels is provided) — 掩码语言建模 (MLM) 损失。

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

  • hidden_states (tuple(tf.Tensor), optional, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — tf.Tensor 的元组(一个用于 embedding 的输出 + 一个用于每一层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出的隐藏状态加上初始 embedding 输出。

  • attentions (tuple(tf.Tensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — tf.Tensor 的元组(每一层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

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

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

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = TFEsmForMaskedLM.from_pretrained("facebook/esm2_t6_8M_UR50D")

>>> inputs = tokenizer("The capital of France is <mask>.", return_tensors="tf")
>>> logits = model(**inputs).logits

>>> # retrieve index of <mask>
>>> mask_token_index = tf.where((inputs.input_ids == tokenizer.mask_token_id)[0])
>>> selected_logits = tf.gather_nd(logits[0], indices=mask_token_index)

>>> predicted_token_id = tf.math.argmax(selected_logits, axis=-1)
>>> labels = tokenizer("The capital of France is Paris.", return_tensors="tf")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = tf.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)

>>> outputs = model(**inputs, labels=labels)

TFEsmForSequenceClassification

class transformers.TFEsmForSequenceClassification

< >

( config )

Parameters

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

带有序列分类/回归头部的 ESM 模型转换器(pooled 输出顶部的线性层),例如用于 GLUE 任务。

此模型继承自 TFPreTrainedModel。 查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入 embeddings 大小、剪枝 heads 等)。

此模型也是 Keras Model 子类。 将其用作常规 Keras 模型,并参阅 TF/Keras 文档以了解与通用用法和行为相关的所有事项。

call

< >

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None labels: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.modeling_tf_outputs.TFSequenceClassifierOutputtuple(tf.Tensor)

Parameters

  • input_ids (形状为 (batch_size, sequence_length)tf.Tensor) — 词汇表中输入序列 tokens 的索引。

    索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode()PreTrainedTokenizer.call() 以了解详情。

    什么是输入 IDs?

  • attention_mask (形状为 (batch_size, sequence_length)tf.Tensor, 可选) — 用于避免在 padding token 索引上执行 attention 的 Mask。 Mask 值在 [0, 1] 中选择:

    • 1 表示 tokens 未被 Mask
    • 0 表示 tokens 已被 Mask

    什么是 attention masks?

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

    什么是 position IDs?

  • head_mask (形状为 (num_heads,)(num_layers, num_heads)tf.Tensor, 可选) — 用于 nullify self-attention 模块中选定的 heads 的 Mask。 Mask 值在 [0, 1] 中选择:

    • 1 表示 head 未被 Mask
    • 0 表示 head 已被 Mask
  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)tf.Tensor, 可选) — (可选)您可以选择直接传递嵌入表示,而不是传递 input_ids。如果您希望比模型的内部 embedding 查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • output_attentions (bool, 可选) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参见返回的 tensors 下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参见返回的 tensors 下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通 tuple。
  • labels (形状为 (batch_size,)tf.Tensor, 可选) — 用于计算序列分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1,则计算回归损失(均方误差损失),如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

Returns

transformers.modeling_tf_outputs.TFSequenceClassifierOutputtuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或一个 tf.Tensor 的 tuple (如果传递 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (EsmConfig) 和输入。

  • loss (形状为 (batch_size, )tf.Tensor, 可选, 当提供 labels 时返回) — 分类(或回归,如果 config.num_labels==1)损失。

  • logits (形状为 (batch_size, config.num_labels)tf.Tensor) — 分类(或回归,如果 config.num_labels==1)得分(在 SoftMax 之前)。

  • hidden_states (tuple(tf.Tensor), optional, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — tf.Tensor 的元组(一个用于 embedding 的输出 + 一个用于每一层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出的隐藏状态加上初始 embedding 输出。

  • attentions (tuple(tf.Tensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — tf.Tensor 的元组(每一层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

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

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

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = TFEsmForSequenceClassification.from_pretrained("facebook/esm2_t6_8M_UR50D")

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

>>> logits = model(**inputs).logits

>>> predicted_class_id = int(tf.math.argmax(logits, axis=-1)[0])
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = TFEsmForSequenceClassification.from_pretrained("facebook/esm2_t6_8M_UR50D", num_labels=num_labels)

>>> labels = tf.constant(1)
>>> loss = model(**inputs, labels=labels).loss

TFEsmForTokenClassification

class transformers.TFEsmForTokenClassification

< >

( config )

Parameters

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

ESM 模型,顶部带有一个 token 分类头(隐藏状态输出顶部的线性层),例如,用于命名实体识别 (NER) 任务。

此模型继承自 TFPreTrainedModel。 查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入 embeddings 大小、剪枝 heads 等)。

此模型也是 Keras Model 子类。 将其用作常规 Keras 模型,并参阅 TF/Keras 文档以了解与通用用法和行为相关的所有事项。

call

< >

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None labels: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.modeling_tf_outputs.TFTokenClassifierOutputtuple(tf.Tensor)

Parameters

  • input_ids (形状为 (batch_size, sequence_length)tf.Tensor) — 词汇表中输入序列 tokens 的索引。

    索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode()PreTrainedTokenizer.call() 以了解详情。

    什么是输入 IDs?

  • attention_mask (形状为 (batch_size, sequence_length)tf.Tensor, 可选) — 用于避免在 padding token 索引上执行 attention 的 Mask。 Mask 值在 [0, 1] 中选择:

    • 1 表示 tokens 未被 Mask
    • 0 表示 tokens 已被 Mask

    什么是 attention masks?

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

    什么是 position IDs?

  • head_mask (形状为 (num_heads,)(num_layers, num_heads)tf.Tensor, 可选) — 用于 nullify self-attention 模块中选定的 heads 的 Mask。 Mask 值在 [0, 1] 中选择:

    • 1 表示 head 未被 Mask
    • 0 表示 head 已被 Mask
  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)tf.Tensor, 可选) — (可选)您可以选择直接传递嵌入表示,而不是传递 input_ids。如果您希望比模型的内部 embedding 查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。 详见返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 详见返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回一个 ModelOutput 而不是一个普通的元组。
  • labels (tf.Tensor,形状为 (batch_size, sequence_length), optional) — 用于计算 token 分类损失的标签。索引应该在 [0, ..., config.num_labels - 1] 中。

Returns

transformers.modeling_tf_outputs.TFTokenClassifierOutputtuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFTokenClassifierOutput 或一个 tf.Tensor 元组 (如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (EsmConfig) 和输入。

  • loss (tf.Tensor,形状为 (n,), optional, 其中 n 是未掩码标签的数量,当提供 labels 时返回) — 分类损失。

  • logits (tf.Tensor,形状为 (batch_size, sequence_length, config.num_labels)) — 分类得分 (SoftMax 之前)。

  • hidden_states (tuple(tf.Tensor), optional, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — tf.Tensor 的元组(一个用于 embedding 的输出 + 一个用于每一层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出的隐藏状态加上初始 embedding 输出。

  • attentions (tuple(tf.Tensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — tf.Tensor 的元组(每一层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

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

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

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm2_t6_8M_UR50D")
>>> model = TFEsmForTokenClassification.from_pretrained("facebook/esm2_t6_8M_UR50D")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="tf"
... )

>>> logits = model(**inputs).logits
>>> predicted_token_class_ids = tf.math.argmax(logits, axis=-1)

>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t] for t in predicted_token_class_ids[0].numpy().tolist()]
>>> labels = predicted_token_class_ids
>>> loss = tf.math.reduce_mean(model(**inputs, labels=labels).loss)
< > 在 GitHub 上更新