春江暮客

春江暮客的个人学习分享网站

ESM 模型家族入门:ESM-2、ESM C、ESMFold2 与 ESM3 如何选择

2026-09-21 技术
ESM 模型家族入门:ESM-2、ESM C、ESMFold2 与 ESM3 如何选择

ESM-2、ESM C、ESMFold、ESMFold2 和 ESM3 的名字很像。选择它们之前,先确定自己需要什么输出:数值特征、三维坐标,还是新的蛋白质候选方案。

本文介绍 ESM 家族的主要分支,比较各自适合的任务,并给出实际入门方法。读者只需具备基本 Python 知识。模型可用性与文档核对于 2026 年 9 月 21 日;文中的模型比较来自官方资料,并非本站重新运行的性能评测。

1. 先看主要模型的区别

ESM 是 Evolutionary Scale Modeling 的缩写。蛋白质语言模型从氨基酸序列中学习规律,与文本模型从词语中学习规律有一定相似之处。不过,同一个 ESM 名称下包含多种架构和任务。

模型 主要输入 → 输出 适合从哪里开始
ESM-2 序列 → 残基向量与 token 分数 建立常用的序列表征基线
ESM C / ESMC / ESM Cambrian 序列 → 向量与 token 分数 评估较新的序列表征
ESMFold 蛋白质序列 → 预测结构 复现已有的单序列折叠流程
ESMFold2 生物分子输入,可选 MSA → 全原子结构 预测蛋白质及复合物结构
ESMFold2-Fast 生物分子输入,不使用 MSA → 全原子结构 测试更快的折叠配置
ESM3 部分序列、结构、功能信息 → 补全各轨道 进行可控的蛋白质生成

任务定义参考 ESM 文档ESMC 模型卡ESMFold2 模型卡ESM3 模型页面。表中入门用途是本文的建议。

Embedding 是模型学到的特征向量,折叠模型输出坐标,生成模型补全序列或结构信息。不同输出需要不同的评价方法,因此把整个家族排成一个统一的性能榜,意义不大。

2. ESM-2 与 ESM C:如何选择表征模型?

ESM-2:方便建立基线

ESM-2 使用掩码语言建模:遮住部分氨基酸 token,再根据上下文预测它们。模型的隐藏状态可以作为下游分类器或回归模型的输入。单独提取向量,不会直接得到三维结构或实测功能属性。Transformers ESM 文档区分了语言模型与折叠扩展。

ESM-2 从适合学习流程的小模型,一直覆盖到较大的模型。原始 ESM 仓库列出了以下规模:

ESM-2 参数量 每个残基的向量维度
8M 320
35M 480
150M 640
650M 1,280
3B 2,560
15B 5,120

第一次检查软件流程,我会选 8M。真正开展预测项目时,再根据验证效果与资源消耗选择规模。能在笔记本上轻松运行,有利于调试,但不能据此认定它是生物学任务上的最强基线。

ESM C:较新的序列表征分支

ESM C 是 ESM Cambrian 的简称,代码和模型名称中也常写作 ESMC。已发布的规模包括 300M、600M 和 6B。当前 Biohub 模型卡列出了三种公开权重,包括 biohub/ESMC-6B。因此,对于当前版本,6B 只能通过 API 使用的旧说法已经不适用。

Cambrian 发布说明报告了相较 ESM-2 的效率与表征性能改进,例如在其评测中比较了 ESM C 300M 与 ESM-2 650M。这是尝试 ESM C 的理由,但不能推导出它在所有下游数据集上都会获胜。

我建议固定数据划分和下游学习器,只替换输入向量进行比较。记录 checkpoint、提取层、池化方式、运行时间与峰值内存。更换表征后,需要重新训练下游模型;即使维度相同,两套向量空间也不能直接互换。

3. ESMFold 与 ESMFold2:如何选择结构预测模型?

最初的 ESMFold 在 ESM-2 主干上加入结构预测模块,推理时不需要进行 MSA 搜索。MSA 是多序列比对,用来提供已经对齐的相关序列;省去搜索步骤,让原始 ESMFold 的使用流程更简单。相关说明见 ESMFold 官方概述

ESMFold2 是正式发布的模型,采用基于 ESMC 表征的新折叠架构,并通过扩散式结构模块生成坐标。Transformers ESMFold2 文档介绍了迭代折叠与坐标生成过程。它与 ESM-2、最初的 esmfold_v1 checkpoint 都有区别。

Biohub 模型卡列出了更广的输入范围,包括蛋白质复合物、DNA、RNA、小分子与修饰残基。完整模型可以选择使用 MSA 条件,ESMFold2-Fast 不接受 MSA 条件。支持某种输入类型,并不等于对各种复合物都有同等准确率。

对于新的结构项目,我会先在少量有代表性的样本上比较 Fast 与完整模型,再决定是否扩大运行规模。衡量端到端成本时,要把 MSA 搜索也算进去。记录折叠循环次数、扩散步数、采样数量与排序方式;改变这些设置,就改变了比较条件。

Biohub 在 ESMFold2 发布资料中报告了部分 FoldBench 复合物任务上的优势。这些结论依赖测试目标、指标和推理设置,不能扩展成 ESMFold2 对所有目标都优于其他模型。高置信度也不能直接证明结合亲和力或生物学功能。

4. ESM3:联合序列、结构与功能进行生成

ESM3 把序列、结构和功能信息表示为不同的 token 轨道,通过迭代解除掩码补全输入。当问题涉及在约束下生成候选方案时,这种接口比单纯提取向量更贴合需求。ESM3 README介绍了具体机制。

官方列出的家族规模包括 1.4B、7B 和 98B。公开的小模型 esm3-sm-open-v1需要与较大的托管模型区分。运行开放 checkpoint,并不等于拥有 98B 模型的能力,也不能直接复现其全部结果。版本对应关系见官方模型表

ESM3 可以生成结构信息,但不能据此把它当作所有专用折叠模型的替代品。我会在多模态条件控制是核心需求时选择它,再用独立证据评估输出。生成结构与重新折叠结果一致,可以作为一致性检查,但不属于实验测量。

5. 其他值得认识的家族成员

较早的成员包括用于序列表征的 ESM-1、ESM-1b,用于变异效应预测的 ESM-1v,处理比对序列的 MSA Transformer / ESM-MSA-1b,以及用于逆折叠的 ESM-IF1。逆折叠指根据给定骨架提出序列。各模型的 checkpoint 与任务定义见原始模型目录

当前生态还包括 **ESMC 稀疏自编码器(SAE)**与 ESM Atlas。SAE 从模型表征中提取稀疏特征,Atlas 用于探索蛋白质与预测结构,它们分别承担解释与发现方面的工作。介绍见 Biohub 仓库概述

6. 根据当前问题选择模型

当前目标 建议先比较什么 需要测量什么
学会提取向量 小型 ESM-2 形状、token 处理、数值是否有限
根据序列预测带标签的属性 固定学习器,比较 ESM-2 与 ESM C 留出集任务指标、时间、内存
预测蛋白质或复合物结构 ESMFold2-Fast 与完整 ESMFold2 有参考结构时的准确率、置信度、成本
复现较早的折叠研究 研究中使用的具体 ESMFold checkpoint 是否符合原始设置
根据部分序列和结构约束生成候选 明确版本的 ESM3 checkpoint 约束满足情况与独立验证结果
复现固定骨架设计基线 ESM-IF1 原始研究采用的设计指标

做序列预测时,我建议让数据划分对应实际使用场景:如果测试的是对陌生家族的泛化能力,训练集中的近缘序列就可能让成绩过于乐观。特征筛选与参数调优都应限制在训练流程内。做结构预测时,要区分单体和复合物,在同类任务中比较结果。

本站的抗体模型评估指南CoFoldArena 入门进一步讨论了这些评价选择。

7. 在 CPU 上运行一个小型 ESM-2 示例

下面的示例展示每个残基一个向量与整条序列一个池化向量之间的区别。它使用 8M checkpoint和一条人工构造的 20 残基输入,不需要 API key。这个示例不比较模型质量,也不运行折叠。

先创建独立环境:

mkdir esm-family-demo
cd esm-family-demo
python3 -m venv .venv
. .venv/bin/activate
python -m pip install torch 'transformers==4.57.6'

将以下代码保存为 esm2_shapes.py

import argparse


def main():
    parser = argparse.ArgumentParser(description="Inspect ESM-2 residue and protein embeddings")
    parser.add_argument("--sequence", default="ACDEFGHIKLMNPQRSTVWY")
    args = parser.parse_args()
    sequence = args.sequence
    if not 1 <= len(sequence) <= 1022:
        parser.error("Use 1-1022 residues; this example never truncates")
    if set(sequence) - set("ACDEFGHIKLMNPQRSTVWY"):
        parser.error("Use the 20 standard uppercase amino acid letters")

    import torch
    from transformers import AutoTokenizer, EsmModel

    checkpoint = "facebook/esm2_t6_8M_UR50D"
    revision = "c731040fcd8d73dceaa04b0a8e6329b345b0f5df"
    tokenizer = AutoTokenizer.from_pretrained(checkpoint, revision=revision)
    model = EsmModel.from_pretrained(
        checkpoint, revision=revision, add_pooling_layer=False
    ).eval()
    batch = tokenizer(sequence, return_special_tokens_mask=True, return_tensors="pt")
    special = batch.pop("special_tokens_mask").bool()
    mask = batch["attention_mask"].bool() & ~special
    with torch.inference_mode():
        hidden = model(**batch).last_hidden_state
        residues = hidden[0, mask[0]]
        protein = residues.mean(dim=0)
    assert residues.shape == (len(sequence), model.config.hidden_size)
    assert torch.isfinite(protein).all()
    print("Residue embeddings:", tuple(residues.shape))
    print("Protein embedding:", tuple(protein.shape))
    print("Finite values:", bool(torch.isfinite(protein).all()))


if __name__ == "__main__":
    main()

运行:

python esm2_shapes.py --help
python esm2_shapes.py
python -m pip freeze > requirements-tested.txt

预期输出:

Residue embeddings: (20, 320)
Protein embedding: (320,)
Finite values: True

该示例已在 Python 3.14.7、PyTorch 2.14.0、Transformers 4.57.6 环境下通过 CPU 执行,输出与上面一致。代码固定了模型 revision,并在平均之前去除特殊 token。人工序列只用于检查软件流程,本文不声称它具有任何功能或特定结构。

首次运行需要联网下载模型。可以通过 --sequence 传入氨基酸字符串。1,022 残基上限是本示例的保守限制;代码会拒绝非标准符号,不会静默截断。还需要确认原始数据确实是蛋白质,因为仅检查字符不能识别所有误传入的 DNA 序列。

批处理、向量保存和更详细的池化检查,可以继续阅读 ESM-2 向量提取教程

8. 安装与访问:注意不同代模型的软件环境

原始 Meta 仓库使用 fair-esm 发行包,当前 Biohub SDK 使用 esm。两者的 Python 导入名称都包含 esm,建议分别创建环境。安装方法分别见 Meta 指南Biohub 指南

上面 CPU 示例固定的版本用于 ESM-2,不能当作 ESMFold2 的安装方案。Biohub 当前同时提供 SDK 与较新的 Transformers 集成,两条路径的 checkpoint 标识和推理方法有所不同。应完整遵循其中一条路径,不要混用不同教程的导入方式。例如,Transformers ESMFold2 文档使用的是 biohub/ESMFold2-hf

本地权重请以具体 checkpoint 的模型卡为准。当前 Biohub 代码许可ESM3-open 模型卡标注为 MIT,而旧文章可能描述的是早期发布条款。托管模型是否可用、账号是否具有权限,应查看当前平台,不能从本地 checkpoint 推断。

问题 首先检查什么
导入 esm 后找不到预期 API 运行 python -m pip show esm fair-esm,为所选教程重建独立环境
找不到新的模型类 核对所需包版本与 checkpoint 家族
GPU 显存不足 缩小批量或输入长度,检查具体模型的推理设置
向量形状不符合预期 核对 checkpoint 维度、特殊 token 与池化轴
分数好得不合理 检查数据重叠,确认比较的是相同任务与计算预算

总结

需要序列特征时,从 ESM-2 或 ESM C 开始;建立当前的折叠流程时,评估 ESMFold2;核心需求是可控多模态生成时,再选择 ESM3。ESMFold 与较早的专用模型仍适合复现对应基线。先用最小实验回答当前问题,再根据自己的评测结果扩大规模。

封面为 AI 生成的概念插画,用于表示序列特征、折叠与生成,不代表实验测得的分子结构。

友情链接

其它