@THayes427: 另外请查看这个@modal教程,它详细讲解了上面笔记本中的底层代码,并提供了更多详细解释…

X AI KOLs Following 工具

摘要

一个Modal教程,展示如何使用ESMFold2和ESMC模型扩展蛋白质绑定剂设计,包含用于迭代优化和自动伸缩基础设施的代码。

@modal 另外请查看这个@modal教程,它详细讲解了上面笔记本中的底层代码,并提供了扩展设计的更详细解释: https://t.co/P4tlqjf3Td
查看原文
查看缓存全文

缓存时间: 2026/06/03 19:54

@modal 另外,可以看看这个@modal 教程,它会更详细地讲解上面笔记本中的底层代码,帮助你扩展设计规模: https://t.co/P4tlqjf3Td


使用 ESMFold2 和 ESMC 大规模设计蛋白质结合子

来源:https://modal.com/docs/examples/esmfold2_binder_design 蛋白质折叠是计算生物学领域里程碑式的突破。但对于许多应用而言,我们不仅仅想预测现有蛋白质的结构——我们还想设计能够调控生物学过程的新型蛋白质。

实现这一目标最重要的方式之一就是通过结合。蛋白质-蛋白质相互作用驱动着大部分生物学功能,而设计能特异性结合目标靶点的分子能力,为新的研究工具和疗法打开了大门。近期的人工智能方法通过迭代优化过程,反转结构预测模型来应对结合子设计:

  1. 将候选结合子与目标蛋白一起进行折叠。
  2. 根据结合子的折叠和结合情况对所得结构进行评分。
  3. 在序列空间中朝提升评分的方向迈进一步。
  4. 重复上述步骤。

在本示例中,我们将演示如何在 Modal 上使用由 Biohub 开发的最先进模型 ESMFold2 和 ESMC(https://biohub.ai/esm/protein/about)来实现这一过程,这些模型可以预测生物分子复合物的结构。查阅他们的技术报告(https://modal-cdn.com/esmfold2_tech_report.pdf),了解这些模型是如何开发出来的,以及如何利用它们来设计并实验验证针对治疗相关靶点的结合子。

我们将从构建一个用于设计单一结合子的 Modal Function 开始;然后只需再多写几行代码,我们就能编写一个编排函数,借助 Modal 的自动扩展基础设施和全球 GPU 容量来执行大规模搜索。

设置https://modal.com/docs/examples/esmfold2_binder_design#setup

定义我们的 Modal Imagehttps://modal.com/docs/examples/esmfold2_binder_design#defining-our-modal-image

我们将使用 Image.micromamba 作为基础镜像,因为我们需要的一些包只能通过 Conda 获取。我们还会安装来自 CZ Biohub 的 esm(https://github.com/Biohub/esm)库(它会引入一个定制的 transformers 分支),以及其他一些用于处理蛋白质序列的有用库。

我们设置了 CUBLAS_WORKSPACE_CONFIG,这样可以在远程代码开头调用 torch.use_deterministic_algorithms(True),从而确保可重复性。

在 Modal Volumes 上缓存权重并持久化结果https://modal.com/docs/examples/esmfold2_binder_design#caching-weights-and-persisting-results-on-modal-volumes

ESMFold2 基于 6B 参数的 ESMC 编码器;再加上用于最终评分的四个评判模型,模型权重总共约为 50 GB。我们将它们缓存在一个 Modal Volume(https://modal.com/docs/guide/volumes)上,与每次从 Hugging Face 重新下载相比,冷启动时的性能要好得多。

第二个 Volume 将用于存储我们的结果。

在 Modal 上设计结合子https://modal.com/docs/examples/esmfold2_binder_design#designing-a-binder-on-modal

为了在 Modal 上运行结合子设计,我们定义了一个 BinderDesignService 类,并用 @app.cls 装饰器包装它。该装饰器接受描述代码所需基础设施的参数:我们定义的 Image 和两个 Volume,外加一块 H100 GPU,它有足够的内存来承载 6B 参数的 ESMC 编码器和四个 ESMFold2 “英雄”评判模型。

在类内部,@modal.enter() 生命周期钩子(https://modal.com/docs/guide/lifecycle-functions#modalenter)在每个容器启动时下载并初始化这些模型,这样同一容器上的后续 design 调用就可以重用已加载的权重。

我们用 @modal.method() 装饰我们的 design 方法,以支持远程执行。稍后我们会看到它通过 .remote()(单次设计)以及 .spawn() + modal.FunctionCall.gather(https://modal.com/docs/reference/modal.FunctionCall)(并行扫描)被调用。该类本身是对辅助包中 ESMFold2Designer(https://github.com/modal-labs/modal-examples/blob/main/06_gpu_and_ml/binder-design/binder_design/models.py)的轻量封装,后者负责实际的模型加载和梯度引导优化循环(binder_design.design(https://github.com/modal-labs/modal-examples/blob/main/06_gpu_and_ml/binder-design/binder_design/design.py)中的 design_binder)。

通过选择进行并行扫描https://modal.com/docs/examples/esmfold2_binder_design#fanning-out-a-sweep-with-selection

单次设计运行在每个批次位置上只给出一个候选序列。为了达到论文中报道的那种命中率,你需要多个种子、多个结合子模板以及多个目标,然后通过一轮选择,根据组合的 ipTM / distogram-ipTM-proxy 评分对设计结果进行排名。

我们在 Modal Function 内部进行编排,这样你就不必担心需要在本地保持一个长时间运行的进程,或者安装任何本地依赖项。

从命令行运行https://modal.com/docs/examples/esmfold2_binder_design#from-the-command-line

main 运行一次单次设计。可以通过覆盖 target_name/binder_name 来尝试内置的某个目标(https://github.com/modal-labs/modal-examples/blob/main/06_gpu_and_ml/binder-design/binder_design/prompts.py)(cd45ctla4egfrpd-l1pdgfr)和结合子模板(minibindertrastuzumab_framework_vhvlatezolizumab_framework_vhvlocankitug_framework_vhvl),或者直接传入任意的 target_sequence/binder_sequence

sweep 在你传入的目标和结合子的每一个 (target, binder, seed) 组合上执行网格扫描,利用 Modal 的异步任务处理(https://modal.com/docs/guide/job-queue)水平扩展设计。选择环节在服务端运行,生成的 parquet 文件同时写入 esmfold2-binder-design-results Volume 和本地文件,方便检查。

target_namesbinder_names 以逗号分隔的字符串形式传入。默认值会扫描一个目标搭配两种结合子模式——一个 minibinder 和一个 trastuzumab_framework_vhvl 抗体模板——因此一条命令就能同时对两者进行并行扫描:

相似文章

Biohub/esm

GitHub Trending (daily)

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