ESM:进化规模建模Skill esm

ESM技能是一个基于深度学习的蛋白质语言模型工具包,用于蛋白质序列生成、结构预测、功能注释和嵌入生成。它支持ESM3和ESM C模型,适用于蛋白质设计、药物发现和生物工程应用,关键词:蛋白质语言模型,ESM,蛋白质设计,序列生成,结构预测,AI生成内容,生物医药。

合成生物学 0 次安装 0 次浏览 更新于 3/16/2026

名称: esm 描述: 用于蛋白质语言模型的全面工具包,包括ESM3(跨序列、结构和功能的生成多模态蛋白质设计)和ESM C(高效的蛋白质嵌入和表示)。在蛋白质序列、结构或功能预测、设计新蛋白质、生成蛋白质嵌入、执行反向折叠或进行蛋白质工程任务时使用此技能。支持本地模型使用和基于云的Forge API以实现可扩展推理。

ESM:进化规模建模

概述

ESM提供了最先进的蛋白质语言模型,用于理解、生成和设计蛋白质。此技能支持两个模型家族:ESM3用于跨序列、结构和功能的生成蛋白质设计,ESM C用于高效的蛋白质表示学习和嵌入。

核心能力

1. 蛋白质序列生成与ESM3

使用多模态生成模型生成具有所需特性的新蛋白质序列。

何时使用:

  • 设计具有特定功能特性的蛋白质
  • 完成部分蛋白质序列
  • 生成现有蛋白质的变体
  • 创建具有所需结构特征的蛋白质

基本用法:

from esm.models.esm3 import ESM3
from esm.sdk.api import ESM3InferenceClient, ESMProtein, GenerationConfig

# 本地加载模型
model: ESM3InferenceClient = ESM3.from_pretrained("esm3-sm-open-v1").to("cuda")

# 创建蛋白质提示
protein = ESMProtein(sequence="MPRT___KEND")  # '_' 表示掩码位置

# 生成完成
protein = model.generate(protein, GenerationConfig(track="sequence", num_steps=8))
print(protein.sequence)

通过Forge API进行远程/云使用:

from esm.sdk.forge import ESM3ForgeInferenceClient
from esm.sdk.api import ESMProtein, GenerationConfig

# 连接到Forge
model = ESM3ForgeInferenceClient(model="esm3-medium-2024-08", url="https://forge.evolutionaryscale.ai", token="<token>")

# 生成
protein = model.generate(protein, GenerationConfig(track="sequence", num_steps=8))

参见 references/esm3-api.md 获取详细的ESM3模型规格、高级生成配置和多模态提示示例。

2. 结构预测和反向折叠

使用ESM3的结构轨道进行从序列到结构的预测或反向折叠(从结构到序列的设计)。

结构预测:

from esm.sdk.api import ESM3InferenceClient, ESMProtein, GenerationConfig

# 从序列预测结构
protein = ESMProtein(sequence="MPRTKEINDAGLIVHSP...")
protein_with_structure = model.generate(
    protein,
    GenerationConfig(track="structure", num_steps=protein.sequence.count("_"))
)

# 访问预测结构
coordinates = protein_with_structure.coordinates  # 3D坐标
pdb_string = protein_with_structure.to_pdb()

反向折叠(从结构到序列):

# 为目标结构设计序列
protein_with_structure = ESMProtein.from_pdb("target_structure.pdb")
protein_with_structure.sequence = None  # 移除序列

# 生成折叠到此结构的序列
designed_protein = model.generate(
    protein_with_structure,
    GenerationConfig(track="sequence", num_steps=50, temperature=0.7)
)

3. 蛋白质嵌入与ESM C

生成高质量嵌入用于下游任务,如功能预测、分类或相似性分析。

何时使用:

  • 提取蛋白质表示用于机器学习
  • 计算序列相似性
  • 用于蛋白质分类的特征提取
  • 蛋白质相关任务的迁移学习

基本用法:

from esm.models.esmc import ESMC
from esm.sdk.api import ESMProtein

# 加载ESM C模型
model = ESMC.from_pretrained("esmc-300m").to("cuda")

# 获取嵌入
protein = ESMProtein(sequence="MPRTKEINDAGLIVHSP...")
protein_tensor = model.encode(protein)

# 生成嵌入
embeddings = model.forward(protein_tensor)

批量处理:

# 编码多个蛋白质
proteins = [
    ESMProtein(sequence="MPRTKEIND..."),
    ESMProtein(sequence="AGLIVHSPQ..."),
    ESMProtein(sequence="KTEFLNDGR...")
]

embeddings_list = [model.logits(model.forward(model.encode(p))) for p in proteins]

参见 references/esm-c-api.md 获取ESM C模型详细信息、效率比较和高级嵌入策略。

4. 功能条件和注释

使用ESM3的功能轨道生成具有特定功能注释的蛋白质或从序列预测功能。

功能条件生成:

from esm.sdk.api import ESMProtein, FunctionAnnotation, GenerationConfig

# 创建具有所需功能的蛋白质
protein = ESMProtein(
    sequence="_" * 200,  # 生成200个残基的蛋白质
    function_annotations=[
        FunctionAnnotation(label="fluorescent_protein", start=50, end=150)
    ]
)

# 生成指定功能的序列
functional_protein = model.generate(
    protein,
    GenerationConfig(track="sequence", num_steps=200)
)

5. 思维链生成

使用ESM3的思维链生成方法迭代优化蛋白质设计。

from esm.sdk.api import GenerationConfig

# 多步优化
protein = ESMProtein(sequence="MPRT" + "_" * 100 + "KEND")

# 步骤1:生成初始结构
config = GenerationConfig(track="structure", num_steps=50)
protein = model.generate(protein, config)

# 步骤2:基于结构优化序列
config = GenerationConfig(track="sequence", num_steps=50, temperature=0.5)
protein = model.generate(protein, config)

# 步骤3:预测功能
config = GenerationConfig(track="function", num_steps=20)
protein = model.generate(protein, config)

6. 使用Forge API进行批量处理

使用Forge的异步执行器高效处理多个蛋白质。

from esm.sdk.forge import ESM3ForgeInferenceClient
import asyncio

client = ESM3ForgeInferenceClient(model="esm3-medium-2024-08", token="<token>")

# 异步批量处理
async def batch_generate(proteins_list):
    tasks = [
        client.async_generate(protein, GenerationConfig(track="sequence"))
        for protein in proteins_list
    ]
    return await asyncio.gather(*tasks)

# 执行
proteins = [ESMProtein(sequence=f"MPRT{'_' * 50}KEND") for _ in range(10)]
results = asyncio.run(batch_generate(proteins))

参见 references/forge-api.md 获取详细的Forge API文档、认证、速率限制和批量处理模式。

模型选择指南

ESM3模型(生成式):

  • esm3-sm-open-v1 (1.4B) - 开源权重,本地使用,适合实验
  • esm3-medium-2024-08 (7B) - 质量和速度的最佳平衡(仅Forge)
  • esm3-large-2024-03 (98B) - 最高质量,较慢(仅Forge)

ESM C模型(嵌入):

  • esmc-300m (30层) - 轻量级,推理快
  • esmc-600m (36层) - 平衡性能
  • esmc-6b (80层) - 最大表示质量

选择标准:

  • 本地开发/测试: 使用 esm3-sm-open-v1esmc-300m
  • 生产质量: 通过Forge使用 esm3-medium-2024-08
  • 最大准确性: 使用 esm3-large-2024-03esmc-6b
  • 高吞吐量: 使用Forge API与批量执行器
  • 成本优化: 使用较小模型,实施缓存策略

安装

基本安装:

pip install esm

使用Flash Attention(推荐用于更快推理):

pip install esm
pip install flash-attn --no-build-isolation

用于Forge API访问:

pip install esm  # SDK包含Forge客户端

无需额外依赖。在 https://forge.evolutionaryscale.ai 获取Forge API令牌。

常见工作流

详细示例和完整工作流,参见 references/workflows.md,包括:

  • 基于思维链的新颖GFP设计
  • 蛋白质变体生成和筛选
  • 基于结构的序列优化
  • 功能预测流程
  • 基于嵌入的聚类和分析

参考文献

此技能包含全面的参考文档:

  • references/esm3-api.md - ESM3模型架构、API参考、生成参数和多模态提示
  • references/esm-c-api.md - ESM C模型详细信息、嵌入策略和性能优化
  • references/forge-api.md - Forge平台文档、认证、批量处理和部署
  • references/workflows.md - 完整示例和常见工作流模式

这些参考包含详细的API规格、参数描述和高级使用模式。根据具体任务需要加载。

最佳实践

用于生成任务:

  • 从较小模型开始原型设计(esm3-sm-open-v1
  • 使用温度参数控制多样性(0.0 = 确定性,1.0 = 多样化)
  • 为复杂设计实施基于思维链的迭代优化
  • 通过结构预测或湿实验验证生成的序列

用于嵌入任务:

  • 尽可能批量处理序列以提高效率
  • 为重复分析缓存嵌入
  • 计算相似性时标准化嵌入
  • 根据下游任务要求使用适当模型大小

用于生产部署:

  • 使用Forge API实现可扩展性和最新模型
  • 为API调用实施错误处理和重试逻辑
  • 监控令牌使用并实施速率限制
  • 考虑AWS SageMaker部署以获得专用基础设施

资源和文档

负责任使用

ESM设计用于蛋白质工程、药物发现和科学研究的有利应用。设计新蛋白质时,遵循负责任生物设计框架(https://responsiblebiodesign.ai/)。在进行实验验证前,考虑蛋白质设计的生物安全和伦理影响。