191

OpenFold:训练和推理 AlphaFold 类模型的开源方案

OpenFold 是可训练的开源 AlphaFold2 复现,适合需要微调或扩展结构预测模型的团队。这篇讲清它相对官方实现的差异与真实使用场景。

OpenFold 由哥伦比亚大学 AlQuraishi 组主导,是 AlphaFold2 的 PyTorch 可训练复现。DeepMind 官方实现基于 JAX 且只发布推理代码与权重,OpenFold 补上了最关键的一块:你可以从头训练,也可以在自己的数据上微调。这让结构预测模型第一次真正可被研究社区改造。

部署

git clone https://github.com/aqlaboratory/openfold.git
cd openfold
mamba env create -f environment.yml
conda activate openfold
python setup.py install
bash scripts/download_alphafold_params.sh openfold/resources/   # 可直接用 AF2 权重

python run_pretrained_openfold.py fasta_dir/ pdb_mmcif/mmcif_files/ \
  --output_dir out/ --config_preset model_1_ptm \
  --model_device cuda:0

它与 AlphaFold2 的权重二进制兼容,可以直接加载官方参数做推理,也可加载 OpenFold 自训练的权重。

相对官方实现的差异

维度 AlphaFold2 官方 OpenFold
框架 JAX / Haiku PyTorch
训练代码 不提供 完整提供
微调 不支持 支持
许可 权重非商业 代码 Apache 2.0,OpenFold 自训权重许可更宽松
显存优化 一般 有 DeepSpeed 等优化,长序列更友好

许可差异是很多团队选它的真实原因:AF2 官方权重带非商业限制,而 OpenFold 自行训练的权重许可更宽松,商业场景下的可用性不同。使用前仍需核对具体版本的条款。

什么场景真的需要它

  • 要微调到特定蛋白家族:例如抗体、膜蛋白、特定折叠类型,通用模型表现不佳时,用自有结构数据微调可能改善。
  • 要改架构做研究:想验证 Evoformer 的某个设计、换 MSA 处理方式、做消融实验——只有可训练的实现才能做。
  • 要蒸馏或加速:把大模型压缩成更快的版本用于高通量场景。
  • 要中间表示:OpenFold 便于取出 Evoformer 的嵌入表示,作为下游任务(功能预测、突变效应)的特征——这是很多实际项目用它的方式。

反过来说,如果只是想拿到某个蛋白的结构,完全不需要 OpenFold:用 AlphaFold Server、ColabFold 或直接查 AlphaFold DB 更快更省事。为一次性预测部署整套训练环境是明显的过度工程。

训练成本要有心理准备

  • 从头训练需要数百 GPU-天量级的算力与 PDB 全量数据 + 自蒸馏数据集,绝大多数团队不现实。
  • 微调成本低得多,但仍需多卡与相当规模的结构数据;样本太少时容易过拟合,收益不稳定。
  • 训练与推理都要 MSA 数据库(数百 GB),存储与检索时间要提前规划。

上手提示

  • 它的独占价值是「可训练、可微调、许可更宽松」,不是预测得更准;
  • 只想要结构就用 AlphaFold Server / ColabFold,别过度工程;
  • 取 Evoformer 嵌入做下游特征,是它被低估的实用用法;
  • 从头训练成本极高,多数团队应只考虑微调。

延伸资源