Biohub/esm

GitHub Trending (daily) 模型

摘要

Biohub 发布了 ESMC、ESMFold2 和 ESM Atlas——一个用于蛋白质生物学的世界模型,能够实现跨尺度的最先进预测、设计和发现,包括一个包含十亿结构的图谱。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/29 12:42

Biohub/esm 来源:https://github.com/Biohub/esm

蛋白质生物学世界模型:ESMC、ESMFold2 与 ESM 图谱

ESMC 和 ESMFold2 预印本 (https://biohub.ai/papers/esm_protein.pdf) ⋅ 图谱 (https://biohub.ai/esm/protein/atlas) ⋅ 教程 (https://github.com/Biohub/esm/tree/main/cookbook/tutorials) ⋅ Slack (https://bit.ly/esm-slack)

我们发布了一个蛋白质生物学世界模型:一个用于预测、设计和发现的科学引擎。该系统基于最新一代进化尺度建模 (ESM),从进化产生的蛋白质序列中学习,并利用这些知识对蛋白质进行表示、映射、预测和设计——涵盖从原子相互作用到跨越数十亿年进化关系的多个尺度。该系统包含三个组件:ESMC、ESMFold2 和 ESM 图谱。

  • ESMC (https://biohub.ai/esm/protein) 是一个最先进的蛋白质语言模型,通过训练数十亿条蛋白质序列学习了蛋白质生物学的规则。相对于 ESM2,ESMC 定义了一个新的扩展前沿——随着模型规模的增加,其在长程结构理解方面的涌现能力更强。
  • ESMFold2 (https://huggingface.co/Biohub/ESMFold2) 基于 ESMC 6B 模型构建,是一个最先进的结构预测模型,并已针对蛋白质-蛋白质相互作用设计进行了验证。在 Foldbench 蛋白质-蛋白质和抗体-抗原复合物的 DockQ 通过率方面,ESMFold2 超过了其他模型,并可在单序列模式下使用,实现数量级的折叠加速。ESMFold2 已在实验室中针对五个治疗靶点进行了验证。通过对 ESMFold2 进行反向操作,可以生成具有高命中率、纳摩尔级亲和力、靶点特异性和功能活性的全新微型结合子和抗体来源的 scFv。我们计划发布一个笔记本,完整演示从目标序列到排名候选结合子的设计流程。完整协议也在预印本 (https://biohub.ai/papers/esm_protein.pdf) 中描述。
  • ESM 图谱 (https://biohub.ai/esm/protein/atlas) 是一张涵盖生命多样性全貌的 68 亿个蛋白质的图谱。ESMFold2 的折叠吞吐量使得预测超过十亿个结构成为可能。图谱根据 ESMC 的内部世界模型进行组织。我们通过训练稀疏自编码器 (SAEs) 使这个世界模型变得可解释。SAEs 是无监督神经网络,能够将 ESMC 的内部表示分解为一组稀疏的约 16,000 个可解释特征,揭示 ESMC 学到的蛋白质之间的功能关系。每个特征通过一个智能体管线用自然语言进行总结,将特征映射到蛋白质数据库中已知的生物学知识。我们发布了一系列在不同模型规模、层和不同粒度级别上训练的 SAEs。了解更多关于如何在 Biohub 平台 (https://biohub.ai/) 上使用 ESM 图谱的信息。有关使用 ESM3 的信息,请参阅 ESM3 README (https://github.com/Biohub/esm/blob/main/_assets/ESM3_README.md)。

目录

ESMC

ESMC (https://biohub.ai/esm/protein) 是一个最先进的蛋白质语言模型,通过训练数十亿条蛋白质序列学习了蛋白质生物学的表示。ESMC 的代码库、模型权重和模型变体可通过 Hugging Face (https://huggingface.co/collections/Biohub/esmc-model-family) 获取。运行 ESM 模型主要有两种方式:通过 Biohub 平台 (https://biohub.ai/) 或使用 Hugging Face 在本地运行。Biohub 平台使用户能够以最少的设置轻松运行 ESM 模型的推理。有兴趣自定义或微调 ESM 模型的用户可以使用 Hugging Face 上的模型。

在本地运行 ESMC

从 GitHub 安装 esm(PyPI 版本即将推出):

pip install esm@git+https://github.com/Biohub/esm.git@c94ed8d

以下代码演示了如何在本地运行 ESMC

``python import torch from transformers import AutoModelForMaskedLM, AutoTokenizer from huggingface_hub import login

使用您的 Hugging Face 凭据登录

login()

示例 GFP 序列

sequences = [“MSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFSYGVQCFSRYPDHMKQHDFFKSAMPEGYVQERTIFFKDDGNYKTRAEVKFEGDTLVNRIELKGIDFKEDGNILGHKLEYNYNSHNVYIMADKQKNGIKVNFKIRHNIEDGSVQLADHYQQNTPIGDGPVLLPDNHYLSTQSALSKDPNEKRDHMVLLEFVTAAGITHGMDELYK”]

model = AutoModelForMaskedLM.from_pretrained( “Biohub/ESMC-6B”, device_map=“auto”, ).eval() tokenizer = AutoTokenizer.from_pretrained(“Biohub/ESMC-6B”)

inputs = tokenizer(sequences, return_tensors=“pt”, padding=True) inputs = {k: v.to(model.device) for k, v in inputs.items()}

with torch.inference_mode(): output = model(**inputs) ``

默认情况下,模型仅返回最后一层的表示。要返回所有 Transformer 层的隐藏状态,请设置:

python output = model(**inputs, output_hidden_states=True)

通过 Biohub 平台运行 ESMC

以下代码展示了如何使用 Biohub 平台访问 ESMC。API 令牌可以在开发者控制台 (https://biohub.ai/developer-console/api-keys) 中创建。请注意,我们的 API 已从 forge.evolutionaryscale.ai 迁移到 biohub.ai (https://biohub.ai),因此某些代码类仍引用 “Forge”。要开始使用 ESM,请使用 pip 安装 Python 库:

pip install esm@git+https://github.com/Biohub/esm.git@c94ed8d

然后导入必要的库并实例化您想要的模型。

``py from esm.sdk import esmc_client from esm.sdk.api import ESMProtein, LogitsConfig

人碳酸酐酶 II (PDB 2CBA)

protein = ESMProtein( sequence=( “MSHHWGYGKHNGPEHWHKDFPIAKGERQSPVDIDTHTAKYDPSLKPLSVSYDQATSLRILNNGHAFNVEFDD” “SQDKAVLKGGPLDGTYRLIQFHFHWGSLDGQGSEHTVDKKKYAAELHLVHWNTKYGDFGKAVQQPDGLAVL” “GIFLKVGSAKPGLQKVVDVLDSIKTKGKSADFTNFDPRGLLPESLDYWTYPGSLTTPPLLECVTWIVLKEP” “ISVSSEQVLKFRKLNFNGEGEPEELMVDNWRPAQPLKNRQIKASFK” ) )

model = esmc_client( model=“esmc-600m-2024-12”, url=“https://biohub.ai”, token=“<your_token>” )

protein_tensor = model.encode(protein) logits_output = model.logits( protein_tensor, LogitsConfig(sequence=True, return_embeddings=True) ) print(logits_output.logits, logits_output.embeddings) ``

有关如何使用 ESMC 的教程,请参阅我们的教程 (https://github.com/Biohub/esm/tree/main/cookbook/tutorials)。

ESMC 稀疏自编码器 (SAE)

稀疏自编码器 (SAE) 是一种无监督方法,旨在将大型 Transformer 语言模型的表示分解为可解释的单元。我们发布了在 ESMC 上训练的 SAEs,以揭示 ESMC 世界模型学到的功能组织的可解释单元。图谱中使用的并在论文中分析的稀疏自编码器 ESMC-6B-sae-layer60-k64-codebook16384 基于 ESMC 6B 模型构建。我们还为此 SAE 的码本提供了人类可解释的、智能体生成的特征描述。ESMC SAEs 的代码库、模型权重和模型变体可通过 Hugging Face (https://huggingface.co/collections/biohub/esmc-saes-for-hidden-states-all-layers) 获取。

``python import torch from transformers import AutoModel, AutoTokenizer

sequence = “MGSNKSKPKDASQRRRSLEPAENVHGAGGGAFPASQTPSKPASADGHRGPSAAFAPAAAEPKLFGGFNSSDTVTSPQRAGPLAGGVTTFVALYDYESRTETDLSFKKGERLQIVNNTEGDWWLAHSLSTGQTGYIPSNYVAPSDSIQAEEWYFGKITRRESERLLLNAENPRGTFLVRESETTKGAYCLSVSDFDNAKGLNVKHYKIRKLDSGGFYITSRTQFNSLQQLVAYYSKHADGLCHRLTTVCPTSKPQTQGLAKDAWEIPRESLRLEVKLGQGCFGEVWMGTWNGTTRVAIKTLKPGTMSPEAFLQEAQVMKKLRHEKLVQLYAVVSEEPIYIVTEYMSKGSLLDFLKGETGKYLRLPQLVDMAAQIASGMAYVERMNYVHRDLRAANILVGENLVCKVADFGLARLIEDNEYTARQGAKFPIKWTAPEAALYGRFTIKSDVWSFGILLTELTTKGRVPYPGMVNREVLDQVERGYRMPCPPECPESLHDLMCQCWRKEPEERPTFEYLQAFLEDYFTSTEPQYQPGENL”

model = AutoModel.from_pretrained(“Biohub/ESMC-6B”, device_map=“auto”).eval() tokenizer = AutoTokenizer.from_pretrained(“Biohub/ESMC-6B”)

sae = AutoModel.from_pretrained( “Biohub/ESMC-6B-sae-k64-codebook16384”, allow_patterns=[“config.json”, “layer_30.safetensors”, “layer_60.safetensors”], device=model.device, ) sae.initialize_layers([30, 60]) model.add_sae_models([sae.layers[“30”], sae.layers[“60”]])

inputs = tokenizer(sequence, return_tensors=“pt”, padding=True) inputs = {k: v.to(model.device) for k, v in inputs.items()}

with torch.inference_mode(): output = model(**inputs) output[“sae_outputs”][“layer60”] # sparse.coo tensor print(output[“sae_outputs”][“layer60”].shape) ``

有关如何使用 ESMC SAEs 的教程,请参阅我们的教程 (https://github.com/Biohub/esm/tree/main/cookbook/tutorials)。

ESMFold2

ESMFold2 (https://huggingface.co/Biohub/ESMFold2) 是一个最先进的蛋白质结构预测模型,它结合了 ESMC(6B 参数)语言模型嵌入与基于扩散的结构预测架构。该模型直接从氨基酸序列预测高分辨率、全原子 3D 蛋白质结构,并可选配多重序列比对 (MSA) 输入以提高对困难目标的准确性。ESMFold2 在多个评估数据集上达到了与 AlphaFold3 相当或更优的最先进性能,同时通过优化的扩散采样和架构创新提供了更高的计算效率。ESMFold2 的代码库、模型权重和模型变体可通过 Hugging Face (https://huggingface.co/collections/biohub/esmfold2-model-family) 获取。

在本地运行 ESMFold2

``python from esm.models.esmfold2 import ( DNAInput, ESMFold2InputBuilder, LigandInput, Modification, ProteinInput, StructurePredictionInput, ) from transformers.models.esmfold2.modeling_esmfold2 import ESMFold2Model

HHAI_SEQ = ( “MIEIKDKQLTGLRFIDLFAGLGGFRLALESCGAECVYSNEWDKYAQEVYEMNFGEKPEGDITQVNEKTIPDH” “DILCAGFPCQAFSISGKQKGFEDSRGTLFFDIARIVREKKPKVVFMENVKNFASHDNGNTLEVVKNTMNELD” “YSFHAKVLNALDYGIPQKRERIYMICFRNDLNIQNFQFPKPFELNTFVKDLLLPDSEVEHLVIDRKDLVMTN” “QEIEQTTPKTVRLGIVGKGGQGERIYSTRGIAITLSAYGGGIFAKTGGYLVNGKTRKLHPRECARVMGYPDS” “YKVHPSTSQAYKQFGNSVVINVLQYIAYNIGSSLNFKPY” )

model = ESMFold2Model.from_pretrained(“biohub/ESMFold2”).cuda().eval()

spi = StructurePredictionInput( sequences=[ ProteinInput(id=“A”, sequence=HHAI_SEQ), DNAInput( id=“B”, sequence=“GATAGCGCTATC”, modifications=[Modification(position=5, ccd=“C36”)], ), DNAInput( id=“C”, sequence=“TGATAGCGCTATC”, modifications=[Modification(position=6, ccd=“C36”)], ), LigandInput(id=“L”, ccd=[“SAH”]), ] )

result = ESMFold2InputBuilder().fold( model, spi, num_loops=3, num_sampling_steps=50, num_diffusion_samples=1, seed=0 )

print(f“pLDDT mean: {float(result.plddt.mean()):.3f}, pTM: {float(result.ptm):.3f}, ipTM: {float(result.iptm):.3f}“) with open(“1mht_pred.cif”, “w”) as f: f.write(result.complex.to_mmcif()) ``

通过 Biohub 平台运行 ESMFold2

安装 esm Python 包

pip install esm@git+https://github.com/Biohub/esm.git@c94ed8d

导入必要的库。

py from esm.sdk.forge import SequenceStructureForgeInferenceClient from esm.sdk.api import FoldingConfig from esm.utils.structure.input_builder import ProteinInput, StructurePredictionInput

使用所选模型调用推理客户端,并用您的令牌名称替换。

``py client = SequenceStructureForgeInferenceClient(model=“esmfold2-fast-2026-05”, url=“https://biohub.ai”, token=“<your_token>”)

人碳酸酐酶 II (PDB 2CBA)

ca2_sequence = ( “MSHHWGYGKHNGPEHWHKDFPIAKGERQSPVDIDTHTAKYDPSLKPLSVSYDQATSLRILNNGHAFNVEFDD” “SQDKAVLKGGPLDGTYRLIQFHFHWGSLDGQGSEHTVDKKKYAAELHLVHWNTKYGDFGKAVQQPDGLAVL” “GIFLKVGSAKPGLQKVVDVLDSIKTKGKSADFTNFDPRGLLPESLDYWTYPGSLTTPPLLECVTWIVLKEP” “ISVSSEQVLKFRKLNFNGEGEPEELMVDNWRPAQPLKNRQIKASFK” )

ca2_input = StructurePredictionInput( sequences=[ProteinInput(id=“A”, sequence=ca2_sequence)] ) config = FoldingConfig(num_loops=3, num_sampling_steps=32) result = client.fold_all_atom(ca2_input, config=config)

with open(“result.cif”, “w”) as f: f.write(result.complex.to_mmcif()) ``

有关如何使用 ESMFold2 的教程,请参阅我们的教程 (https://github.com/Biohub/esm/tree/main/cookbook/tutorials)。

前沿安全

Biohub 已建立一个安全团队,在发布前评估我们模型和工具的收益与潜在风险,并在必要时制定缓解措施。为此,我们采取结构化方法,包括评估生物安全和生物安保风险,以及现有的、可比较的开源模型和工具。我们积极与科学界、利益相关者和领域专家合作,推动创新以及负责任开发的最佳实践。本次发布的所有组件都进行了风险评估,包括我们的 ESMC Cambrian 模型、ESMFold2、ESMC SAEs、ESM 图谱和结合子设计系统。根据我们的风险评估,我们发布了 ESMC 6B、ESMFold2 和 ESMC SAEs 的源代码和模型权重。我们还开放发布了 ESM 图谱数据集和结合子设计系统。Biohub 珍视开放科学,我们与科学界分享研究成果,以便其他人能够评估、重现和基于我们的工作继续研究。

评估:在发布前,我们进行了评估,以了解特定滥用相关功能任务的能力提升情况。这些评估的完整细节可在相应的论文附录中获取。

Biohub 平台:我们在免费开放的平台上实施了护栏,检测并限制对应受控病原体和毒素的关键词和序列的使用。有关这些护栏的更多详细信息,请参阅我们的 Biohub 平台资源页面。我们认识到有很多正当理由使用 AI 模型来理解和建模这些序列和蛋白质。如果您的研究因此类护栏受到影响,您可以通过 Biohub.ai (http://Biohub.ai) 申请提高平台访问权限。使用模型时,请遵守我们的可接受使用政策 (https://biohub.org/acceptable-use-policy/)。

许可

这些模型采用 MIT 许可 (https://github.com/Biohub/esm/blob/main/LICENSE.md)。

引用

如果您在研究中使用了 ESM,请引用以下文献之一:

ESMC、SAEs 和 ESMFold2

@misc{candido2026language, title = {Language Modeling Materializes a World Model of Protein Biology}, author = {Candido, Salvatore and Hayes, Thomas and Derry, Alexander and Rao, Roshan and Lin, Zeming and Verkuil, Robert and Wu, Bryan and Lee, Jin Sub and Bruguera, Elise S. and Keval, Jehan A. and Kopylov, Mykhailo and Pak, John E. and Wu, Wesley and Thomas, Neil and Mataraso, Samson and Hsu, Alvin and Trotman-Grant, Ashton C. and Fatras, Kilian and dos Santos Costa, Allan and Badkundri, Rohil and Ak{\i}n, Halil and Oktay, Deniz and Deaton, Jonathan and Montabana, Elizabeth and Sitwala, Hrishita and Yu, Yue and Wiggert, Marius and Carlin, Dylan Alexander and Goering, Anthony W. and Blazejewski, Tomasz and Sandora, McCullen and Hla, Michael and Jia, Tina Z. and Kloker, Leon H. and Sofroniew, Nicholas J. and Uehara, Masatoshi and Pannu, Jassi and Bachas, Sharrol and Liu, Daniel S. and Sercu, Tom and Rives, Alexander}, year = {2026}, url = {https://biohub.ai/papers/esm_protein.pdf}, note = {Preprint} }

ESM3

@article {hayes2024simulating, author = {Hayes, Thomas and Rao, Roshan and Akin, Halil and Sofroniew, Nicholas J. and Oktay, Deniz and Lin, Zeming and Verkuil, Robert and Tran, Vincent Q. and Deaton, Jonathan and Wiggert, Marius and Badkundri, Rohil and Shafkat, Irhum and Gong, Jun and Derry, Alexander and Molina, Raul S. and Thomas, Neil and Khan, Yousuf A. and Mishra, Chetan and Kim, Carolyn and Bartie, Liam J. and Nemeth, Matthew and Hsu, Patrick D. and Sercu, Tom and Candido, Salvatore and Rives, Alexander}, title = {Simulating 500 million years of evolution with a language model}, year = {2025}, doi = {10.1126/science.ads0018}, URL = {http://dx.doi.org/10.1126/science.ads0018} }

相似文章

结构蛋白质组学引导的共折叠模型

arXiv cs.LG

介绍了AIMS-Fold,一种推理时引导扩散框架,整合了交联质谱(XL-MS)和氢-氘交换(HDX-MS)数据,以改善针对诱导接近药物靶点的蛋白质共折叠预测。