跳转到内容

AlphaFold3 原理与上手:从给蛋白折叠,到给一切分子复合物建模

AlphaFold2 解决的是「给定一条蛋白序列,预测它折叠成什么形状」。AlphaFold3 把问题换了个问法:「给定一堆分子——蛋白、DNA、RNA、小分子配体、离子——预测它们凑在一起是什么结构」。

为了做到这件事,AF3 动了两处核心:把重度处理多序列比对(MSA)的 Evoformer 换成更轻的 Pairformer,把基于刚体坐标系的结构模块换成一个扩散模型,让它像生成图片那样,从噪声里一步步「去噪」出每个原子的坐标。

这篇讲清楚三件事:这套设计为什么成立、怎么在本地或网页上跑起来、结果怎么读。完整方法以官方论文 Abramson et al., Nature 2024 及其补充材料为准。

三代解决的问题在变,主干结构也跟着换。

AlphaFold 三代演进
AlphaFold1AlphaFold2AlphaFold3
年份201820212024
主要对象单体蛋白单体蛋白(后续 Multimer 扩到复合物)蛋白、核酸、配体、离子及复合物
核心机制预测距离矩阵 + 物理优化Evoformer + 结构模块Pairformer + 扩散模块
输出距离分布,再重建结构端到端原子坐标端到端原子坐标(生成式)

AF1 还是「先预测约束、再优化结构」两步走。AF2 第一次做到端到端、且在 CASP14 把单体蛋白预测拉到接近实验精度。AF3 则把适用范围从「蛋白」扩到「几乎任意生物分子的组合」。

蛋白很少单独干活。它要和 DNA、RNA 结合,要被小分子药物抑制,要靠金属离子稳定结构。真正有用的,往往是这些复合物的结构。

AF2 的主场是单体蛋白。它的后续版本 AF2-Multimer 能拼蛋白-蛋白复合物,但对小分子配体、核酸、离子这些「非蛋白」组分支持有限,通常还要外接专门的对接(docking)工具,分两步做。

AF3 想把这件事一步做完:输入里可以同时有蛋白链、核酸链、配体、离子,模型直接预测它们共同的三维结构。按 AF3 论文的说法,它在蛋白-配体、蛋白-核酸等界面上的准确度,明显高于传统对接方法和 AF2 时代的拼装流程。

要支持这么杂的输入,旧架构里很多「为蛋白量身定做」的假设就得拆掉——这是后面所有设计改动的起点。带着一个问题往下读:如果输入不再只是蛋白,AF2 的哪些部分会失效?

AF3 大致分三段:把各种输入整理成统一表示,用 Pairformer 在表示上「想清楚」分子间关系,再用扩散模块把这套关系「画」成具体坐标。

AlphaFold3 整体流程

论文里的官方架构图见 Abramson et al., Nature 2024 — Fig. 1(受版权保护,这里不转载,只给概念示意)。

记住一条主线,后面每个改动都挂在它上面:把「为蛋白定制」的部件,换成「对任意分子都成立」的部件。下面三步,逐个对照 AF2 看。

原理 ①:输入与表示——少看 MSA,统一 token

Section titled “原理 ①:输入与表示——少看 MSA,统一 token”

AF2 怎么做:它非常依赖多序列比对(MSA)——把同源序列堆起来,从进化共变里读出「哪两个位点在空间上挨着」。Evoformer 花了大量算力反复咀嚼这块 MSA。

问题在哪:配体、离子、修饰残基根本没有「同源序列」可比对,也没法像蛋白那样按残基切块。AF2 这套表示天然只服务蛋白。

AF3 的改法:两点。其一,仍用 MSA 和模板,但不再重度处理,而是更快把信息汇进配对表示(pair representation),算力留给后面。其二,改用更细的、统一的 token 化,并在生成结构时下沉到原子层面——这样蛋白和小分子才能用同一套语言描述。

总之,先让「表示」对所有分子一视同仁,统一预测才有地基。

原理 ②:Pairformer——把推理重心放到「关系蓝图」

Section titled “原理 ②:Pairformer——把推理重心放到「关系蓝图」”

把蛋白链、核酸、配体都摆上桌后,模型真正要算清的是一张关系蓝图:谁和谁挨着、相距多远、几何关系如何。这张图就是配对表示,维护它的模块叫 Pairformer

Pairformer 接手了 Evoformer 最有价值的部分,并保留了一个关键操作——对配对表示做三角更新(triangular updates),强制几何自洽,避免「A 离 B 很近、B 离 C 很近,却说 A 离 C 很远」这种自相矛盾。

和 Evoformer 的差别在侧重点:Evoformer 把 MSA 和配对表示一起重算,Pairformer 更聚焦配对表示本身,对 MSA 的依赖更轻。好处是算力更省,而且不再假设输入一定是能做出漂亮 MSA 的蛋白——这正是支持核酸、配体所必需的松绑。

Pairformer 的产物不是坐标,而是一份「想清楚了的关系蓝图」。把蓝图变成原子坐标,是下一步的事。

感兴趣的看:三角更新在做什么(要点 + 直觉)

把配对表示想成一张 N×NN\times N 的表格,第 (i,j)(i,j) 格记录「残基 iijj 的关系」。三角更新的核心直觉是借第三个点 kk 来校正 (i,j)(i,j):如果 iikkkkjj 的关系已知,就能约束 iijj,类似三角不等式。反复做,整张表会收敛到几何上自洽的状态。这一步在 AF2 已被验证有效,AF3 予以保留。

原理 ③:扩散模块——像生成图片那样生成结构

Section titled “原理 ③:扩散模块——像生成图片那样生成结构”

这是 AF3 最大的观念转变。AF2 的结构模块带着一套为蛋白设计的几何机制(刚体坐标系、扭转角、不变点注意力),把表示「解码」成坐标。AF3 把它整个换成扩散模型

扩散模型的思路来自图像生成,分两个方向:

  • 加噪(训练时):往真实结构里一步步掺噪声,直到变成一团随机点。
  • 去噪(推理时):反过来,从随机点出发,让模型在 Pairformer 蓝图的引导下一步步去噪,最后收敛成合理结构。
扩散去噪:从噪声到结构

为什么这么换值得:

  • 直接出原子坐标,不挑分子种类。去噪过程把所有原子都当「点」处理,不需要蛋白专属的刚体框架,配体、离子、核酸天然能塞进同一套流程。
  • 天然能给多个合理答案。换不同随机种子去噪,会得到略不同的结构,方便采样和挑选。
  • 省掉一堆手工几何先验。AF2 结构模块里很多为蛋白写死的几何处理,扩散这套基本不需要。

代价也有:生成式模型可能在约束不足的区域「编」出看着合理、其实没依据的结构(无序区尤其明显)。AF3 用交叉蒸馏等手段压制这种「幻觉」,但读结果时仍要靠置信度判断哪里能信。

感兴趣的看:扩散的两个公式(去噪生成的数学骨架)

前向加噪:给原子坐标 x0x_0 逐步加高斯噪声,第 tt 步可一次写成

xt=αˉtx0+1αˉtϵ,ϵN(0,I)x_t = \sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon,\qquad \epsilon\sim\mathcal{N}(0, I)

其中 αˉt\bar\alpha_ttt 从 1 降到 0:tt 越大,结构越接近纯噪声。

反向去噪(训练目标):网络 DθD_\theta 学着在「噪声坐标 xtx_t + 时间 tt + Pairformer 给的条件表示 cc」下还原干净结构,最小化

L=Ex0,ϵ,tDθ(xt,t,c)x02\mathcal{L} = \mathbb{E}_{x_0,\,\epsilon,\,t}\big\lVert D_\theta(x_t, t, c) - x_0 \big\rVert^2

推理时从 xTN(0,I)x_T\sim\mathcal{N}(0,I) 出发,反复套用 DθD_\theta 一步步去噪,得到最终坐标。这是 DDPM 类扩散的标准骨架;AF3 的关键在于把它作用在全原子坐标上、并用 Pairformer 的关系蓝图当条件 cc。精确形式以论文方法部分为准。

扩散思路在蛋白领域并不孤立——蛋白设计里的 RFdiffusion 也用扩散,见本站ProteinMPNN / RFdiffusion 教程

单看每个改动可能记不住,但它们指向同一个目标——减专用、加通用

  • 想支持非蛋白分子 → 不能死磕 MSA、不能按残基硬切 → 于是有了轻 MSA + 统一 token + 原子级表示(原理①)。
  • 表示通用了,解码器也不能是蛋白专属几何模块 → 于是用扩散直接生成坐标,对分子种类不挑食(原理③)。
  • 配对表示这块在 AF2 被验证有效,保留并精简 → 于是有了 Pairformer(原理②)。

换句话说,AF3 不是把 AF2 修修补补,而是重新问了一遍「最少需要哪些假设」,把蛋白专属的部分尽量换成通用部分。这条主线,就是它的研究逻辑。理解了它,再去读论文的模块细节就不会迷路。

AF3 有两条路,门槛差很多。

网页版:AlphaFold Server 免安装,非商用免费,浏览器里提交即可。代价是配体和共价修饰的种类有限、有使用配额。先验证想法、做轻量预测,从这里开始最省事。

本地版:google-deepmind/alphafold3 仓库。 适合批量、定制配体、或数据不便上传的场景。门槛按官方安装文档

  • 操作系统:仅支持 Linux
  • GPU:计算能力 8.0 以上的 NVIDIA 卡;官方在 A100 / H100 80GB 上验证,单卡可处理约 5120 个 token 的输入。
  • 磁盘:序列数据库下载约 252GB,解压后约 630GB,建议预留约 1TB SSD
  • 内存:长序列的搜索阶段吃内存,建议 64GB 以上。
  • 模型权重:填表单向 DeepMind 申请,一般 2–3 个工作日回复,只能用官方直接发放的权重。

许可要看清楚:源码是 CC-BY-NC-SA 4.0,权重另有使用条款都仅限非商用。官方还明确写了:AF3 及其输出仅供理论建模,不得用于临床用途

本地跑通常走 Docker(或由 Docker 镜像转的 Singularity):克隆仓库、跑 fetch_databases.sh 下数据库、申请并放好权重、docker build 构建镜像。

使用:一次预测怎么跑、结果怎么读

Section titled “使用:一次预测怎么跑、结果怎么读”

本地版的输入是一个自定义 JSON 文件(格式见输入文档),里面描述要折叠的分子。准备好 fold_input.json 后,核心命令长这样:

Terminal window
docker run -it \
--volume $HOME/af_input:/root/af_input \
--volume $HOME/af_output:/root/af_output \
--volume <模型权重目录>:/root/models \
--volume <数据库目录>:/root/public_databases \
--gpus all \
alphafold3 \
python run_alphafold.py \
--json_path=/root/af_input/fold_input.json \
--model_dir=/root/models \
--output_dir=/root/af_output

两个常用开关:--run_data_pipeline 控制是否跑 MSA / 模板搜索,--run_inference 控制是否跑模型推理。把数据搜索和推理拆开,能在同一份 MSA 上反复试不同设置,省时间。

跑完看两个置信度(详见输出文档):

  • pLDDT:每个原子/残基的局部置信度,越高越可信,低分区往往是柔性或无序区。
  • PAE(Predicted Aligned Error):成对的相对位置误差,看复合物里链与链的相对摆位靠不靠谱,特别适合判断界面对不对。

读结果的纪律:高 pLDDT 不等于功能正确,扩散模型在弱约束区可能给出貌似合理的结构,先看置信度、再下结论

几个常见坑:把数据库放在慢盘上会让搜索极慢(尽量上 SSD);输入输出目录要给 Docker 写权限;序列太长会超出单卡显存,得拆或换更大显存的卡。

AF3 和 AF2 最大的区别? AF2 解单体蛋白折叠(Evoformer + 结构模块);AF3 用 Pairformer + 扩散模型,直接生成全原子坐标,能统一预测蛋白、核酸、配体、离子及其复合物。

能用 ColabFold 跑 AF3 吗? 不能,ColabFold 跑的是 AF2。AF3 只能用官方 AlphaFold Server,或本地部署官方仓库。

一定要本地装吗? 不一定。先用 AlphaFold Server 验证想法;需要批量、定制配体或数据保密时再上本地版。

能用于商业或临床吗? 不能。源码与权重均限非商用,官方明确声明输出仅供理论建模、不得用于临床。

  1. Accurate structure prediction of biomolecular interactions with AlphaFold 3 (Abramson et al., Nature 2024) — Abramson et al. · 2026-05-31 · publisher (Nature)
  2. google-deepmind/alphafold3 (官方推理代码与文档) — Google DeepMind · 2026-05-31 · 源码 CC-BY-NC-SA 4.0;权重另有 Terms of Use
  3. AlphaFold Server — Google DeepMind / Isomorphic Labs · 2026-05-31 · 非商用使用条款
  4. Highly accurate protein structure prediction with AlphaFold (Jumper et al., Nature 2021) — Jumper et al. · 2026-05-31 · publisher (Nature)
  5. Architectural highlights of AlphaFold3 (OPIG blog) — Oxford Protein Informatics Group · 2026-05-31 · blog