@THayes427: 另外请查看这个@modal教程,它详细讲解了上面笔记本中的底层代码,并提供了更多详细解释…
摘要
一个Modal教程,展示如何使用ESMFold2和ESMC模型扩展蛋白质绑定剂设计,包含用于迭代优化和自动伸缩基础设施的代码。
查看缓存全文
缓存时间: 2026/06/03 19:54
@modal 另外,可以看看这个@modal 教程,它会更详细地讲解上面笔记本中的底层代码,帮助你扩展设计规模: https://t.co/P4tlqjf3Td
使用 ESMFold2 和 ESMC 大规模设计蛋白质结合子
来源:https://modal.com/docs/examples/esmfold2_binder_design 蛋白质折叠是计算生物学领域里程碑式的突破。但对于许多应用而言,我们不仅仅想预测现有蛋白质的结构——我们还想设计能够调控生物学过程的新型蛋白质。
实现这一目标最重要的方式之一就是通过结合。蛋白质-蛋白质相互作用驱动着大部分生物学功能,而设计能特异性结合目标靶点的分子能力,为新的研究工具和疗法打开了大门。近期的人工智能方法通过迭代优化过程,反转结构预测模型来应对结合子设计:
- 将候选结合子与目标蛋白一起进行折叠。
- 根据结合子的折叠和结合情况对所得结构进行评分。
- 在序列空间中朝提升评分的方向迈进一步。
- 重复上述步骤。
在本示例中,我们将演示如何在 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)(cd45、ctla4、egfr、pd-l1、pdgfr)和结合子模板(minibinder、trastuzumab_framework_vhvl、atezolizumab_framework_vhvl、ocankitug_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_names 和 binder_names 以逗号分隔的字符串形式传入。默认值会扫描一个目标搭配两种结合子模式——一个 minibinder 和一个 trastuzumab_framework_vhvl 抗体模板——因此一条命令就能同时对两者进行并行扫描:
相似文章
@SylvainGariel: 我花了一段时间才弄清楚大家对ESMFold2的热议是怎么回事。起初,基准测试数据看起来并不特别突…
ESMFold2是一个用于蛋白质结构预测的开源AI模型,在蛋白质相互作用和抗体方面达到了最先进的性能,并拥有庞大的结构数据库(ESM Atlas)。
@charles_irl: 在上周关于@modal快速冷启动技术内部细节的博客文章中,新增了一个小段。本节……
Modal解释了如何使用云缓冲区、自定义文件系统、检查点/恢复以及CUDA检查点/恢复,将AI推理冷启动速度提升40倍,并将云缓冲区管理框架化为一个线性优化问题,用GLOP求解。
Biohub/esm
Biohub 发布了 ESMC、ESMFold2 和 ESM Atlas——一个用于蛋白质生物学的世界模型,能够实现跨尺度的最先进预测、设计和发现,包括一个包含十亿结构的图谱。
@nanjiangwill: 在 @modal,我们正在努力确保开源强化学习框架具备训练前沿开放权重模型所需的所有技术…
Modal 正在通过增量压缩和其他技术增强开源强化学习框架,以训练前沿开放权重模型。slime 框架将无损增量同步引入分解式训练环境。
@modal: 前沿模型设定下限。专用模型提升上限。借助Modal,@AppliedCompute正在为DoorDash、Mercor和Cognition等公司训练定制化智能体团队…
Modal宣布,AppliedCompute正在利用其平台为DoorDash、Mercor和Cognition等公司训练定制化智能体团队,强调从前沿模型向专用模型的转变。