1. AlphaFold 概述与背景

做蛋白质结构预测的人,很多年前都听过一句话:「序列决定结构,结构决定功能。」听起来理所当然,但真正要把一条氨基酸序列变成三维原子坐标,那可是个硬骨头。我最早接触这个方向是在2018年,那时候团队还在用传统的同源建模加上分子动力学模拟,跑一个中小型蛋白要花好几周,运气不好还推不出靠谱的结构。直到 AlphaFold 横空出世,整个领域才真正变了个天。

这一章我们先聊聊 AlphaFold 到底是什么、它为什么重要,以及为什么我们非得折腾 ONNX 导出和优化。你如果已经在做推理部署,可能更关心后面的实操,但背景弄清楚了,坑能少踩一半。

1.1 蛋白质结构预测:从实验到计算

要理解 AlphaFold 的价值,得先知道传统方法有多难。

实验方法:X射线晶体学、核磁共振、冷冻电镜。精度很高,但成本高、周期长、对蛋白本身有要求。很多膜蛋白或者动态复合物根本没法结晶。

于是大家开始想办法用计算机算。早期方法大致分两类:

  • 同源建模:找模板,依赖已知结构。遇到全新折叠直接歇菜。
  • 从头预测:用物理能量函数去搜索构象空间。算力需求巨大,成功率很低。

深度学习入场后,先是把残基距离和接触预测精度拉高了十几个百分点。2018年AlphaFold第一版在CASP13上拿了第一,但性能还没到实用级。真正的爆发是AlphaFold2——直接把结构预测的精度推到了与实验方法相当的水平。

1.2 AlphaFold 的诞生与突破

简单说,AlphaFold2 是个端到端的深度学习模型。它把传统方法里分阶段的任务——MSA构建、模板对齐、能量最小化——全部揉到一个神经网络里,用可微分的方式端到端地学习。

我拆一下它最关键的两个模块:

  • Evoformer:处理MSA和成对特征。通过行/列注意力轮流更新MSA表示和成对表示,相当于让模型自己找出进化信息里的规律。
  • Structure Module:把抽象的残基表示转换成具体的三维坐标。用IPA(Invariant Point Attention)保证平移和旋转不变性。

这两个模块堆叠起来,加上recycling循环,使得预测精度在CASP14上达到了中位RMSD 0.5 nm以下——这在以前是不可想象的。

我个人习惯把AlphaFold2理解为「可微分的结构搜索」。它不是在能量面上暴力采样,而是让梯度信号直接从最终坐标回传到输入特征。这个设计思想后来也被很多其他科学AI模型借鉴了。

1.3 从 AlphaFold2 到 AlphaFold3

AlphaFold3 是在2024年发布的,扩展了适用范围。除了蛋白质单体,还能预测蛋白质-小分子、蛋白质-核酸(DNA/RNA)、甚至蛋白质-修饰残基的复合物。它进一步统一了表示空间,用 Diffusion 模块直接生成原子坐标,不再像AlphaFold2那样分步做残基框架和侧链。

但坦白讲,AlphaFold3 的模型结构更复杂,导出和部署的难度也相应增加。目前社区里对AlphaFold3的开源复现还没完全稳定,所以我们课程的主力还是基 AlphaFold2 来讲解导出流程,但里面涉及的原则——比如动态轴对齐、内存管理、算子兼容——在AlphaFold3上同样适用。

1.4 为什么需要导出与 ONNX 优化?

很多人以为推理就是用原版PyTorch/JAX跑一下就完了。说实话,我在2022年花了整整一个月才把AlphaFold2成功部署到客户的GPU集群上,踩过的坑列出来能写一本小册子。

主要有几个痛点:

痛点后果
模型太大(~800MB参数)显存吃紧,单卡难跑
依赖特定Python环境版本冲突,难维护
动态shape + 循环PyTorch导出容易报流图不完整
推理速度慢(单条序列数分钟)高通量筛选不现实

ONNX(Open Neural Network Exchange)提供了一个统一的模型表示标准。把AlphaFold导出到ONNX以后,你可以:

  • 摆脱框架依赖:只用ONNX Runtime就能跑,部署环境干净很多。
  • 享受后端优化:TensorRT、OpenVINO等推理引擎都支持ONNX作为输入。
  • 混合精度与量化:FP16甚至INT8推理,速度翻几倍。

我曾经接手过一个项目,团队原本用原始PyTorch跑AlphaFold2做虚拟筛选,每天只能处理不到100个靶点序列。我帮他们做了ONNX导出 + FP16优化后,同样一块A100,吞吐量飙升到每天1200+。那个客户后来每个季度都续签合同。

但注意,AlphaFold的结构里包含很多自定义算子(比如ipa_pairs、三角乘法),直接导出会遇到各种兼容性报错。我们后面会手把手教你逐层替换。

避坑:不要以为`torch.onnx.export`能一把过。AlphaFold复杂的控制流(recycling循环、动态mask)需要配合`torch.jit.script`,甚至要手动改写部分forward函数。这些我会在课程里一一演示。

1.5 本章小结

这一章我们把AlphaFold的背景拉了一遍。你只要记住几个关键点:

  • AlphaFold2是一个端到端的、基于注意力机制的可微结构预测模型。
  • 它利用了进化信息(MSA)和模板结构来完成预测。
  • 原版模型直接部署会有框架、性能、环境等一堆问题。
  • ONNX标准化加上推理优化,可以显著提升吞吐量,降低运维成本。

下面这张图概括了AlphaFold2推理的核心流水线——从序列输入到结构输出,我们后面每一步导出操作都会围绕它展开。

AlphaFold2 推理管线(概览) 序列输入 FASTA / 原始序列 MSA & 模板 HHblits / MMseqs2 + 模板检索 Evoformer 48 × Transformer 行/列注意力 Structure Module IPA × 8 残基框架→坐标 输出 pLDDT + 结构 注意:整个管线有一个 recycling 反馈回路(最多 3 次迭代) 实际导出时需要处理动态 axis 和循环展开 Recycle: 输出特征回传至序列输入(最多3次)