ChrisHayduk/minAlphaFold2

A minimal PyTorch re-implementation of AlphaFold2's model & training

解决的问题

minAlphaFold2 提供了一个极简且具教学意义的 AlphaFold2 PyTorch 实现。它通过移除生产环境级别的复杂性(如 JAX 优化代码或繁重的架构),并以代码与原始 62 页补充论文之间清晰的 1:1 对应关系取代,解决了理解原始系统的困难。

运作方式

本项目使用纯 PyTorch 原语(nn.Linear、torch.einsum 等)实现 AlphaFold2 架构,无需外部机器学习库。它完全遵循论文规范,包括:

  • 架构: 所有 32 个补充算法皆实现为独立模块,从 Evoformer 堆叠到结构模块 (Structure Module)。
  • 训练: 采用两阶段训练配方(初始与微调),利用梯度累积在单一 GPU 上模拟大规模 TPU 批次。
  • 数据管线: 整合 OpenProteinSet 进行 MSA 与模板处理,包含针对分辨率与序列组成的确定性筛选。
  • 优化: 忠实移植迭代约束 Amber 最小化,用于放松预测结构。

适用对象

  • 希望学习 AlphaFold2 内部运作机制,但不想钻研生产环境代码库的 AI 研究人员与学生。
  • 寻求精简、可训练的参考实现,以便进行分支与调整以进行蛋白质折叠研究的开发者。
  • 具备编程背景,希望以易读方式进入 AI 驱动结构生物学领域的生物学家。

特色亮点

  • 论文与代码对应: 每个模块皆对应 AF2 补充论文中的编号算法。
  • 纯 PyTorch: 无自定义 CUDA 内核或 einops,使代码高度可读且标准化。
  • 单 GPU 可训练: 使用梯度检查点与累积技术,让 48 层 Evoformer 块可在消费级或云端 GPU 上运行。
  • 端到端管线: 包含数据下载、预处理、训练与结构放松脚本。

相关

  • 项目
  • 项目
  • 项目
  • 项目