选择
四条路线的差别在可输入的分子、算力要求和部署成本。选错的典型后果是花一周下载数据库后发现显卡不支持,或者到了 Server 才发现配体没有 CCD 代码。
| 路线 | 适用条件 | 限制 |
|---|---|---|
| AlphaFold Server | 少量任务;蛋白、DNA、RNA 与 CCD 中已有的配体;不想配置环境 | 每天 30 个任务;单任务 5,000 token;不支持 SMILES 和自定义共价键;离子与修饰限于列表 |
| 本地 AF3(v3.0.4) | 需要 SMILES 配体、共价配体、自定义 MSA/模板、批量或超过 5,000 token | Linux;计算能力 8.0 以上 GPU;约 630 GB 数据库;64 GB 内存 |
| ColabFold 1.6.3(AF2-multimer) | 只有蛋白链;显存 16 GB 左右;想用 MMseqs2 服务器省掉数据库 | 不能放配体、核酸和修饰;16 GB 显存约可跑 2,000 残基 |
| Boltz-2 | 蛋白-小分子并且需要亲和力预测 | 亲和力输出分 binder 概率与 log10(IC50) 两个字段,前者用于区分结合物,后者用于比较结合物之间的强弱 |
| Chai-1 | AF3 类全原子预测,pip 安装 | 官方建议 A100 80GB、H100 80GB 或 L40S 48GB,有用户在 RTX 4090 上跑通 |
| Protenix v1 | 与 AF3 同训练截止日期的复现模型;也提供 2025-06 截止的应用模型 | 需要 GPU;与 AF3 输入 JSON 格式接近但不完全相同 |
| OpenFold3 | 与 AF3 架构对齐的开源实现;多卡批量与低显存模式 | 仍标为 preview;0.5.0 起默认权重为 OpenBind-0 |
在线版
以下数字来自 AlphaFold Server FAQ。2024 年教程写的每天 10 或 20 个任务、只能选 19 种配体,都已过时。
登录 Server 需要 Google 账号,Google 服务在中国大陆网络下通常无法直接访问。Server 用不了时,可以改用本地 AF3、学校超算已部署的 AF3(例如上海交大思源一号提供 v3.0.2 容器和共享参数),或上表中的开源模型。
| 项目 | 当前规则 |
|---|---|
| 每日额度 | 每天 30 个任务;额度不足时可保存为草稿,额度刷新后再提交 |
| 任务大小 | 5,000 token。蛋白每个残基 1 token,DNA/RNA 每个碱基 1 token,配体每个原子 1 token,离子 1 token,修饰残基按其全部原子计,糖链按原子计 |
| 链长下限 | 每条蛋白链和核酸链至少 4 个残基或碱基 |
| 配体 | 19 种常用配体可直接选;其他配体添加 “CCD Code” 实体并输入 1–5 位 CCD 代码(字典版本 2024_10_28),每种最多 50 份拷贝;不能输入 SMILES |
| 离子 | Ca²⁺、Co²⁺、Cu²⁺、Fe³⁺、K⁺、Mg²⁺、Mn²⁺、Na⁺、Zn²⁺、Cl⁻ 共 10 种 |
| 糖基化 | 可接在 N、S、T 上;单糖限 BGC、BMA、GLC、MAN、NAG(S/T 另可用 FUC);单个糖链最多 8 个糖残基;不能指定糖苷键原子 |
| 不能预测 | 水分子、氢原子;不感知膜平面;非标准氨基酸代码 B、J、O、U、X |
| 输出 | 每个 seed 5 个样本;zip 内含全部样本的 mmCIF 与置信度 JSON、job_request.json、配对与未配对 MSA、最多 4 个模板 |
| 批量 | 可上传 JSON,每个文件最多 100 个任务;草稿上限 500 个 |
在线版
[
{
"name": "kinase_atp_mg",
"modelSeeds": [],
"sequences": [
{
"proteinChain": {
"sequence": "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQAPILSRVGDGTQDNLSGAEKAVQVKVKALPDAQ",
"count": 1,
"modifications": [{"ptmType": "CCD_SEP", "ptmPosition": 13}],
"glycans": [{"residues": "NAG(NAG)", "position": 47}]
}
},
{"ligand": {"ligand": "CCD_ATP", "count": 1}},
{"ion": {"ion": "MG", "count": 2}}
],
"dialect": "alphafoldserver",
"version": 1
}
]- 01
按实体添加分子
同一蛋白的多个拷贝用 copies 设置,不要重复粘贴序列。双链 DNA 需要勾选 “+ Reverse complement” 添加互补链,否则只建模单链。序列中的未知残基 X 换成 A,未知核苷酸 N 在 DNA 中换成 T、RNA 中换成 U。
- 02
先删掉无序尾巴
长的无序 N/C 端会产生低置信度的虚假螺旋,并拉低附近区域的 pLDDT,还占用 token。FAQ 建议去掉无序尾巴,能更清楚地看出有序区的置信度。
- 03
检查模板设置
默认使用 2021-09-30 之前的 PDB 模板。要做无模板对照,或者想让结果贴近某个已知结构,在链菜单中关闭模板、设置截止日期或上传自定义模板(每条链最多 4 个)。用自定义模板时,FAQ 建议同时提供只含 10–100 条序列的浅 MSA,否则模板信息会被 MSA 的共进化信号覆盖。
- 04
用多个任务代替多 seed
界面提交的每个任务使用一个 seed、给出 5 个样本。困难体系(抗体-抗原、蛋白-核酸)要更多候选时,用 “Clone and reuse” 复制任务并让 seed 自动重新抽取,相当于每多一个任务增加 5 个样本。需要复现时在预览页关闭自动 seed,填 0–4,294,967,295 之间的整数。
- 05
批量任务用 JSON 上传
先在界面提交一个任务,下载 zip,以其中的 <job>_job_request.json 为模板,用脚本生成其他任务,每个文件最多 100 个,上传后作为草稿出现。额度用完的任务留在草稿中,第二天再提交。列表外的 CCD 配体在 JSON 中的写法,以界面添加 CCD Code 实体后下载的 job_request.json 为准。
- 06
保留 zip,供本地复用
zip 中的 MSA(a3m)和模板可以直接用于本地 AF3,方法见“结果与 Server 不一致”一节。官方说明由于编译器优化变化,同一 JSON 过一段时间重跑不保证逐位一致。本页实测(AF3 仓库 2026-10-09 版本):Server 下载的 job_request.json 现在写的是 "version": 3,本地 run_alphafold.py 直接读取会报 AlphaFold Server input JSON has unsupported version: 3, expected 1,改成 1 后可以读取;含 glycans 的 Server JSON 在本地会报 Specifying glycans in the `alphafoldserver` format is not supported,要按下文改写成本地方言。
本地部署
单卡推理时间(不含编译):1,024 token 在 A100 80GB 上 62 秒、H100 上 34 秒;5,120 token 分别为 2,547 秒和 1,416 秒。
多 GPU 不会加速单个输入。AF3 每次推理只用一张卡,--gpu_device 指定卡号;多卡机器应同时运行多个输入。官方测算单张 A100 80GB 的 GPU 时间效率是 16 张 A100 40GB 的 2 倍以上。
| 硬件 | 可处理规模或问题 | 需要的设置 |
|---|---|---|
| A100 80GB / H100 80GB | 单卡 5,120 token,官方验证过数值精度 | 默认即可 |
| A100 40GB | 4,352 token,吞吐量下降 | 开统一内存并修改 pair_transition_shard_spec |
| RTX 3090 / 4090 / A5000 / A6000(计算能力 8.6/8.9) | 可用,实测见下一节 | 大输入可能需要 xla 注意力实现或统一内存 |
| RTX 50 系等 Blackwell 显卡 | v3.0.2 起原生支持;v3.0.4 修复了 Blackwell 上的统一内存 | 使用 v3.0.4 |
| V100、RTX 20 系、Titan RTX(计算能力 7.x) | 不加设置时结构近似随机,大量原子冲突,ranking score ≤ -99;加设置后 V100 可跑 1,280 token | XLA_FLAGS 加 custom-kernel-fusion-rewriter,并用 xla 注意力实现 |
| P100(计算能力 6.0) | 1,024 token | 无需修改 |
| 计算能力 < 6.0 或 AMD GPU | 程序直接拒绝运行 | — |
| 磁盘 | 数据库下载约 252 GB,解压后约 630 GB,完整安装最多 1 TB | 放本地 SSD;目录不能在 alphafold3 仓库内 |
| 内存 | MSA 搜索阶段耗内存,长序列更多 | 至少 64 GB |
| 操作系统 | 只支持 Linux;维护者明确 WSL 不受支持 | v3.0.4 起可用 CPU(约慢 100 倍)或 Apple Silicon(mps,实验性) |
实测经验
以下是 GitHub issue 中用户报告的实测结果,均为单人或少数人的记录。条件与你的机器不同时,结果仅作数量级参考。
| 显卡与设置 | 体系 | 实测结果 | 来源 |
|---|---|---|---|
| RTX 4090 24GB,默认设置,功耗限制 300 W | 官方示例 2PV7(同源二聚体,2×298 残基) | Jackhmmer 约 6 分钟,Hmmsearch 约 3.5 分钟,GPU 推理约 90 秒 | issue #9(经验帖) |
| RTX 3090 24GB,默认设置 | 2PV7 | 每个 seed 推理 99.6 秒 | issue #9(经验帖) |
| RTX 4090,默认设置 | 3 条链共约 800 残基;该三聚体的 3 倍(约 2,400 残基) | 均正常输出,前者与 Server 结果基本一致 | issue #9(经验帖) |
| RTX 4090,--flash_attention_implementation=xla | 大复合物(规模未给出) | 可以跑完,推理约 1 小时,慢在 xla 实现 | issue #9(经验帖) |
| RTX 3090、4090、A100 40GB/80GB | 2PV7 | ranking_score 均为 0.67,与 A100 一致;同一测试中计算能力 7.x 的卡为 -99 | issue #59(经验帖,ETH 集群测试) |
| Quadro P3000 6GB 笔记本(计算能力 6.1) | 167–334 token | 低于 256 token 时每个 seed 150–190 秒;334 token 为 618 秒 | issue #59(经验帖) |
- nvidia-smi 显示占用约 23 GB 不代表快满了。Docker 镜像默认 XLA_CLIENT_MEM_FRACTION=0.95,启动时就预占 95% 显存,这个数字无法用来估算还能跑多大的体系(维护者在 issue #9 中的解释)。
- 工作站上的主要耗时是 CPU 上的 MSA 搜索。上面 4090 的例子中,MSA 约 9.5 分钟,推理只有 1.5 分钟,因此提速应优先复用 MSA,其次才是换显卡。
- 24 GB 卡在大体系上报显存不足时,先试 --flash_attention_implementation=xla 或统一内存,二者都会明显变慢。2024 年有用户报告统一内存在 4090 上不稳定(issue #209、#213),出问题时先排除 WSL 和测试版驱动。
- 多卡机器用 --gpus device=0(Docker)或 --gpu_device 固定一张卡,再用多个进程分别跑不同输入。
实操经验
AF3 只支持 Linux,维护者明确 WSL 不受支持。issue #209 中一位 4090 用户在 WSL 下反复显存报错,维护者建议改在原生 Linux 上运行。常见的替代做法如下。
装 Ubuntu 双系统或独立 Linux 机器
最稳妥的做法。官方安装说明以 Ubuntu 22.04 为基准,Docker 镜像基于 Ubuntu 24.04 与 CUDA 12.6.3,宿主机需要支持 CUDA 12.6 的驱动。数据库需要单独的 1 TB SSD。
用学校或单位的超算
很多超算已经部署好 AF3 容器、参数和数据库,例如上海交大思源一号提供 v3.0.2 Singularity 镜像,并给出 A100 40GB 与 A800 80GB 两套配置和分阶段运行脚本。先查所在平台的用户手册。
租用 Linux GPU 云服务器
国内 GPU 租用平台上有社区制作的 AF3 镜像。例如 GitHub 上一个 AutoDL 镜像说明要求驱动 580 以上、数据盘至少 700 GB 可用空间(数据库占 627 GB)。数据库只下载一次,保存在数据盘上供后续任务复用。
小体系先在 Mac 或 CPU 上试
v3.0.4 起可用 --jax_backend=cpu 或 mps 运行,适合检查输入 JSON 是否正确,不适合正式计算。
本地部署
Docker 是官方验证路线。官方 Dockerfile 基于 CUDA 12.6.3 和 Python 3.12,默认设置 XLA_FLAGS=--xla_gpu_enable_triton_gemm=false 以避免编译时间暴涨。集群上没有 Docker 时,先构建 Docker 镜像,再转换成 Singularity/Apptainer 镜像。
# 1. 代码(数据库与参数目录都不要放在仓库目录里)
git clone https://github.com/google-deepmind/alphafold3.git
cd alphafold3
# 2. 数据库:下载约 252 GB,解压后约 630 GB,建议放在 SSD
sudo apt install -y wget zstd
./fetch_databases.sh /data/af3_db
sudo chmod 755 --recursive /data/af3_db
# 3. 模型参数(2026-07 起可直接下载;目录里只放一个模型文件,.zst 不用解压)
mkdir -p /data/af3_models
wget -P /data/af3_models https://storage.googleapis.com/alphafold3/af3.bin.zst
# 4. 构建镜像(宿主机需 NVIDIA 驱动与 CUDA 12.6,并装好 nvidia-container-toolkit)
docker build -t alphafold3 -f docker/Dockerfile .
# RHEL / Rocky / AlmaLinux 报 "No file descriptors available (os error 24)" 时:
# docker build --ulimit nofile=65535:65535 -t alphafold3 -f docker/Dockerfile .
# 5. 运行
mkdir -p $HOME/af_input $HOME/af_output && chmod 755 $HOME/af_input $HOME/af_output
docker run -it \
--volume $HOME/af_input:/root/af_input \
--volume $HOME/af_output:/root/af_output \
--volume /data/af3_models:/root/models \
--volume /data/af3_db:/root/public_databases \
--gpus device=0 \
alphafold3 \
python run_alphafold.py \
--json_path=/root/af_input/fold_input.json \
--model_dir=/root/models \
--output_dir=/root/af_output# 非 Docker 路线(官方用于 CPU-only 与 macOS;Linux GPU 机器也可用,需自行保证 CUDA/cuDNN/JAX 正常)
# 先安装 HMMER(jackhmmer、nhmmer 等需在 PATH 中)和 uv
git clone https://github.com/google-deepmind/alphafold3.git
cd alphafold3
uv venv --python 3.12
source .venv/bin/activate
uv sync
uv run build_data # 生成化学组分数据;漏掉时连 --help 都报 FileNotFoundError: ...chemical_component_sets.msgpack
uv run python run_alphafold_data_test.py # 自检数据流程
# 纯 CPU(约比 GPU 慢 100 倍)。官方称 Apple Silicon 可改用 --jax_backend=mps,本页实测 mps 给出错误结构,见上方清单
uv run run_alphafold.py \
--json_path=fold_input.json \
--model_dir=/data/af3_models \
--db_dir=/data/af3_db \
--output_dir=af_output \
--jax_backend=cpu \
--flash_attention_implementation=xla# 在能顺利构建的机器上
docker build -t alphafold3 -f docker/Dockerfile .
docker save alphafold3 | gzip > alphafold3_image.tar.gz
# 拷到目标机器后
docker load < alphafold3_image.tar.gz- 参数目录里只能有一个模型文件。把 af3.bin.zst 和 af3_synthid.bin.zst 放在一起会报 Multiple models matched;程序能直接读取 .zst,不需要先解压。
- 参数文件兼容所有 3.0.x 版本,升级代码不需要重新下载参数。
- 国内构建镜像最常见的失败点有两个:Dockerfile 中安装 Python 依赖超时,以及 CMake 从 GitHub/GitLab 下载 abseil-cpp、pybind11、libcifpp 等源码包失败(CSDN 经验帖中卡在 14/15 步和 abseil-cpp)。可靠的处理是在网络通畅的机器上构建一次,用 docker save 导出、docker load 导入。
- docker run 报 permission denied 或 Cannot connect to the Docker daemon 时,先 sudo systemctl start docker,再把当前用户加入 docker 组(sudo usermod -aG docker $USER,重新登录生效)。
- 旧教程中的 pip install -r dev-requirements.txt、Python 3.11 和 conda 安装方式已不适用,仓库中已没有 dev-requirements.txt,pyproject.toml 要求 Python 3.12 以上。conda 环境中出现的 DNN library initialization failed、ptxas 版本不符一类报错,维护者都归因于 JAX/CUDA 安装问题。
- 本页实测(2026-10-10,AF3 仓库 2026-10-09 版本,jax 0.10.2,jax-mps 0.10.9,macOS arm64 8 核 16 GB):barnase–barstar(199 token)使用 ColabFold 生成的 MSA,1 个 seed × 5 个样本。--jax_backend=cpu 推理用时 2,709 秒,ipTM 0.93–0.94,与实验结构 1BRS 的 DockQ 为 0.97–0.98;同一输入改用 --jax_backend=mps,推理用时 778 秒,ipTM 0.17,barstar 平均 pLDDT 44.5,DockQ 0.03–0.15,结构错误,日志中没有任何报错。mps 是官方标注的实验性路径,在 Mac 上使用前先用一个有实验结构的体系与 CPU 结果对比。
实操经验
官方脚本用 wget 把 .zst 边下载边解压,没有断点续传,9 个文件并行下载,任何一个中断都要从头重下。官方给出的 45 分钟是在 GCP 机器上的耗时。
ColabFold 路线的 MSA 由 MMseqs2 生成,与 AF3 自带的 Jackhmmer 流程不同,结果会有差异,论文方法部分应写明。公共 MSA 服务器要求同一 IP 串行查询,不要多台机器同时提交。
本页实测:用 ColabFold 1.6.3 对 barnase–barstar(110 + 89 残基)运行 --af3-json,约 8 分钟得到 JSON,大部分时间在公共服务器排队。生成的 JSON 是 version 2,每条链带 unpairedMsa 与 pairedMsa,templates 为空列表;空列表表示推理时不使用模板。
# 官方 fetch_databases.sh 用 wget 边下边解压,中途断线只能整个文件重下。
# 网络不稳定时改为:先可续传地下载 .zst,再逐个解压。
SRC=https://storage.googleapis.com/alphafold-databases/v3.0
mkdir -p /data/af3_zst /data/af3_db && cd /data/af3_zst
for f in pdb_2022_09_28_mmcif_files.tar \
mgy_clusters_2022_05.fa \
bfd-first_non_consensus_sequences.fasta \
uniref90_2022_05.fa \
uniprot_all_2021_04.fa \
pdb_seqres_2022_09_28.fasta \
rnacentral_active_seq_id_90_cov_80_linclust.fasta \
nt_rna_2023_02_23_clust_seq_id_90_cov_80_rep_seq.fasta \
rfam_14_9_clust_seq_id_90_cov_80_rep_seq.fasta; do
aria2c -c -x 8 -s 8 "$SRC/$f.zst" # -c 断点续传;没有 aria2 时用 wget -c
done
# 解压(每解压完一个可删除对应 .zst,以免同时占用约 880 GB)
for f in *.fa.zst *.fasta.zst; do
zstd -d "$f" -o "/data/af3_db/${f%.zst}" && rm "$f"
done
tar --no-same-owner --no-same-permissions --use-compress-program=zstd \
-xf pdb_2022_09_28_mmcif_files.tar.zst -C /data/af3_db
chmod 755 --recursive /data/af3_db
# 已有别人下载好的数据库时,用 rsync 拷贝,断了可以接着传
# rsync -avP user@host:/path/to/af3_db/ /data/af3_db/# 用 ColabFold 的 MMseqs2 服务器生成 AF3 格式 JSON(只生成 JSON,不做预测)
# FASTA 中各组分用 ":" 分隔,非蛋白组分写成 "类型|序列" 或 "类型|序列|拷贝数",类型可为 dna、rna、ccd、smiles
# colabfold_batch 会把整条输入转成大写,SMILES 中的芳香小写原子会变成脂肪族原子:
# SMILES 改用 Kekulé 写法(例如 CC(=O)OC1=CC=CC=C1C(=O)O),或生成 JSON 后再手动加入
colabfold_batch input_sequences.fasta msa_out --af3-json
# 然后跳过 AF3 自带的数据流程,直接推理
python run_alphafold.py --json_path=msa_out/<name>.json --output_dir=out \
--model_dir=/data/af3_models --run_data_pipeline=false- 下载放在 tmux 或 screen 中运行,SSH 断开后不会中止。
- 本页实测(2026-10-10 对 9 个文件发 HEAD 请求):.zst 文件合计 238 GB(按 10^9 字节计),最大的是 mgy_clusters_2022_05.fa.zst(69 GB)和 pdb_2022_09_28_mmcif_files.tar.zst(57 GB);存储桶返回 Accept-Ranges: bytes,aria2c -c 或 wget -c 可以续传。
- 先下载、后解压时,.zst 与解压后的文件同时存在会占用约 880 GB;逐个解压并删除 .zst 可以控制峰值占用。
- 课题组或学校已有一份数据库时,直接用 rsync -avP 拷贝,比重新下载快且可续传。AutoDL 镜像作者还提供了网盘分发的数据库(经验帖),使用前核对文件名与上面的列表一致。
- 只想先跑通蛋白体系、暂时不下载数据库时,用 ColabFold 的 MMseqs2 服务器生成 MSA(见下方代码),再用 --run_data_pipeline=false 直接推理。
- 下载完成后执行 chmod 755 --recursive,权限不足时 MSA 工具报错信息不明确,很难定位。
输入
下面的文件可直接运行,序列是格式示例,请替换为你的序列,并同步修改修饰位置和成键位置。本页实测:该文件用 AlphaFold 3 仓库 2026-10-09 版本的 folding_input 解析,并在 macOS arm64 上完成特征化,修饰位置和成键原子名都通过了 CCD 校验。
{
"name": "kinase_atp_glyco_demo",
"modelSeeds": [1, 2, 3, 4, 5],
"sequences": [
{
"protein": {
"id": "A",
"sequence": "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQAPILSRVGDGTQDNLSGAEKAVQVKVKALPDAQ",
"modifications": [{"ptmType": "SEP", "ptmPosition": 13}],
"description": "format demo: pSer13, N-glycan on Asn47"
}
},
{"ligand": {"id": "B", "ccdCodes": ["ATP"]}},
{"ligand": {"id": ["C", "D"], "ccdCodes": ["MG"]}},
{"ligand": {"id": "E", "smiles": "CC(=O)Oc1ccccc1C(=O)O"}},
{"ligand": {"id": "F", "ccdCodes": ["NAG", "NAG"]}}
],
"bondedAtomPairs": [
[["A", 47, "ND2"], ["F", 1, "C1"]],
[["F", 1, "O4"], ["F", 2, "C1"]]
],
"dialect": "alphafold3",
"version": 4
}- 每个文件只能有一个任务;顶层是列表的文件会被识别为 Server 方言。
- id 只能用大写字母,写成小写报 IDs must be upper case letters;多拷贝写成列表,例如 ["C", "D"]。多字母链 ID 不会计算 RASA。
- 本地方言的修饰代码不带 CCD_ 前缀(写 SEP,Server 方言写 CCD_SEP),带前缀会直接报错(Protein ptms must not contain the "CCD_" prefix);从 Server JSON 手工改写时最容易漏掉。
- ptmPosition 和成键位置都从 1 开始计数;单残基配体的残基号写 1。
- 离子写成 ligand,用 ccdCodes,例如 ["MG"]。
- SMILES 配体不能出现在 bondedAtomPairs 中,因为没有原子名,写进去会报 Bond ... involves an unsupported SMILES ligand。共价配体要用 CCD 代码或 userCCD 自定义组分。
- SMILES 中的反斜杠在 JSON 中要写成两个反斜杠,可用 jq -R . 或 Python json.dumps 转义。
- 聚合物之间和聚合物内部的共价键不支持,例如二硫键交联的两条链或头尾环肽。
- 出现 Failed to construct RDKit reference structure 时,加大 --conformer_max_iterations,或在 userCCD 中提供理想坐标。
- 多个任务的 name 字段要互不相同;用 --input_dir 一次处理整个目录。
采样
每个 seed 默认生成 5 个扩散样本(--num_diffusion_samples=5),输出目录中有 seed 数 × 样本数个子目录,排名第一的结构复制到根目录。AF3 论文的基准测试使用 5 个 seed × 5 个样本,共 25 个候选。
单链蛋白或高置信度复合物用 1–5 个 seed 已足够。抗体-抗原复合物的论文结果显示,seed 增加到 1,000 时排名第一的结构仍在改善;这类体系至少先跑 10–20 个 seed,再看 ranking_score 和 ipTM 是否趋于稳定。
多 seed 不需要重复 MSA 搜索。先用 --run_inference=false 只跑数据流程,再用生成的 _data.json 只跑推理。
# 第一步:只跑 CPU 的 MSA/模板搜索,输出 <name>_data.json(可在无 GPU 的机器上跑)
# 第二步要用 --num_seeds 时,fold_input.json 的 modelSeeds 只写 1 个值(例如 [1]),
# 写了多个值会报 Input must have one rng seed to set multiple seeds.
python run_alphafold.py --json_path=fold_input.json --output_dir=out \
--model_dir=/data/af3_models --db_dir=/data/af3_db --run_inference=false
# 第二步:用带 MSA 的 JSON 只跑 GPU 推理;--num_seeds=10 从该 seed 起生成连续的 10 个 seed
python run_alphafold.py --json_path=out/kinase_atp_glyco_demo/kinase_atp_glyco_demo_data.json \
--output_dir=out --model_dir=/data/af3_models \
--run_data_pipeline=false --force_output_dir=true \
--num_seeds=10 --num_diffusion_samples=5 \
--jax_compilation_cache_dir=$HOME/.cache/af3_jax实操经验
- 复用 MSA:筛选 n 个蛋白与 m 个蛋白的两两组合时,先对每条链单独跑 --run_inference=false,再把各链的 unpairedMsa、pairedMsa、templates 字段拼进二聚体 JSON,数据流程从 n×m 次降到 n+m 次(官方 performance.md)。
- 同一靶点换配体或换伙伴链时,固定链的 MSA 只算一次,复制到每个新 JSON 中,变化的链留空让程序计算。
- CPU 数:--jackhmmer_n_cpu、--nhmmer_n_cpu 默认 min(CPU 核数, 8),超过 8 几乎没有加速。核数多的机器应同时跑多个输入。
- 数据库放本地 SSD。放在 NFS 等网络存储上,多任务并行时容易变慢或出错(issue #452 中维护者的判断)。
- 多核机器可把数据库分片:用 src/alphafold3/scripts/shard_databases.sh 切分后放在 SSD 或内存文件系统上,官方测得 MSA 搜索加速 10–30 倍;切分时需先 ulimit -n 65535。
- 开启 --jax_compilation_cache_dir:官方测试中同一输入第二次运行从 148 秒降到 32 秒。
- 批量输入大小相近时,用 --buckets 加入接近实际 token 数的档位,减少填充造成的浪费;超过最大档位的输入会按实际大小重新编译。
- 统一内存(TF_FORCE_UNIFIED_MEMORY=true)和 xla 注意力实现都能避免显存不足,代价是变慢,只在报错时开启。
- 上海交大超算在 A100-40GB 上测得数据流程从 v3.0.0 的 2,475 秒降到 v3.0.1 的 677 秒,旧版本应先升级。
排错
# 显存不足(A100 40GB、24GB 消费卡)或超过 5,120 token:开统一内存
export XLA_PYTHON_CLIENT_PREALLOCATE=false
export TF_FORCE_UNIFIED_MEMORY=true
export XLA_CLIENT_MEM_FRACTION=3.2
# A100 40GB 还需在 model_config.py 中把 pair_transition_shard_spec 改为:
# (2048, None), (3072, 1024), (None, 512)
# 计算能力 7.x(V100、RTX 20 系、Titan RTX、Quadro RTX):两项都必须设置,否则结构近似随机
export XLA_FLAGS="--xla_disable_hlo_passes=custom-kernel-fusion-rewriter"
python run_alphafold.py ... --flash_attention_implementation=xla
# Docker 中用 -e 传入,例如:docker run -e XLA_FLAGS="..." -e TF_FORCE_UNIFIED_MEMORY=true ...| 现象或报错 | 原因 | 处理 |
|---|---|---|
| 结构像随机线团,ranking score ≤ -99 | GPU 计算能力为 7.x | 设置 XLA_FLAGS=--xla_disable_hlo_passes=custom-kernel-fusion-rewriter,并加 --flash_attention_implementation=xla |
| implementation='triton' is unsupported on this GPU generation | 计算能力低于 8.0 的显卡不支持 Triton flash attention | 加 --flash_attention_implementation=xla |
| RESOURCE_EXHAUSTED / CUDA_ERROR_OUT_OF_MEMORY | token 数超过显存承载 | 开统一内存(见下方代码);多卡机器用 --gpus device=0 固定一张卡;在 WSL 中出现时改用原生 Linux |
| ptxas fatal: Unsupported .version 8.4; current version is '8.3' | conda 或系统中的 CUDA 工具链比 JAX 需要的旧 | 按 JAX 官方说明重装,或改用 Docker |
| unsupported version: 2, expected 1 | 代码版本过旧或误装了第三方分支 | 更新到当前版本;当前支持 version 1–4 |
| Protein ptms must not contain the "CCD_" prefix | 把 Server 方言的修饰代码直接用在本地 JSON 中 | 删除 CCD_ 前缀 |
| Multiple models matched | 参数目录中有多个模型文件 | 只保留 af3.bin.zst |
| MSA 工具报错信息不明确 | 数据库目录权限不足 | chmod 755 --recursive 数据库目录 |
| docker build 很慢、镜像巨大 | 数据库或参数目录放在了仓库目录内 | 移到仓库外再构建 |
| No file descriptors available (os error 24) | RHEL/Rocky/AlmaLinux 默认文件描述符上限低 | docker build 加 --ulimit nofile=65535:65535 |
| NotImplementedError: Not supported on gpu.(Tokamax gated_linear_unit) | 某些后端没有该算子实现 | 可以忽略,程序会自动换用其他实现 |
实操经验
Server 与本地使用相同的模型参数,差异主要来自 MSA。Server 对分片数据库跑 Jackhmmer 时没有设 --domZ,等效于把 --domE 放宽约 100 倍,部分输入会得到更深的 MSA。issue #492 中同一蛋白-DNA 复合物在 Server 上 ipTM 0.86,本地 0.1;改用 Server 的 MSA 后本地结果与 Server 一致。
{
"name": "use_server_msa",
"modelSeeds": [1, 2, 3, 4, 5],
"sequences": [
{
"protein": {
"id": "A",
"sequence": "<与 Server 任务完全相同的序列>",
"unpairedMsaPath": "server_job/msas/fold_<job>_unpaired_msa_chains_a.a3m",
"pairedMsaPath": "server_job/msas/fold_<job>_paired_msa_chains_a.a3m"
}
}
],
"dialect": "alphafold3",
"version": 4
}- 01
先在两边都多跑几个 seed
issue #385 中 Server 的一个任务给出 ipTM 0.27,本地 20 个样本为 0.73–0.92;维护者在 Server 上换一个 seed 得到 0.90,与本地一致。Server 界面的每个任务只用一个 seed,比较前两边都至少跑 3–5 个 seed,确认差异是系统性的。
- 02
比较 MSA 深度
本地 <name>_data.json 中的 unpairedMsa 与 Server zip 中的 a3m 文件对比序列条数。issue #492 中两者只差 12 条序列(100 对 112),结果就完全不同。
- 03
直接使用 Server 的 MSA
把 zip 中各链的 unpaired 与 paired a3m 文件路径写进本地 JSON(version 2 以上),不写 templates 字段,本地数据流程会重新搜索模板;写成 [] 表示不用模板。a3m 文件在 zip 的 msas/ 目录中。本页实测:用一个公开的 Server 下载包按此方式改写,JSON 能被本地版正常读取。
- 04
或者放宽本地搜索
官方给的另一种办法是把 Jackhmmer/Nhmmer 的 --domE 提高 100 倍。run_alphafold.py 没有 --domE 命令行参数,需要修改数据流程中的工具配置,因此多数情况下直接用 Server 的 MSA 更简单。
- 05
结构一致、只有 ipTM 不同时
issue #385 的用户只用单个数据库建 MSA,ipTM 分别为 0.75(BFD)、0.91(UniRef90)、0.70(UniProt)、0.90(MGnify),预测结构却基本相同。ipTM 对 MSA 来源本身就敏感,结构叠合一致时,应以多 seed 的整体分布和 PAE 判断界面,不要只看单个 ipTM 数值。
特殊体系
蛋白-多肽
多肽作为第二条 protein 链输入。少于 16 个残基的链 pTM 会被压低(例如 0.03),这是 TM-score 公式对短链的缩放所致;判断多肽结合位置要看链间 PAE 和多肽的 pLDDT。
环肽
AF3 不支持聚合物内部的共价键,头尾环肽无法写成 protein 链。维护者的建议是把整个环肽写成 SMILES(当作小分子)或用 userCCD 定义。Server 无法输入 SMILES,因此环肽只能用本地版。
糖基化与共价配体
本地版用多 CCD 配体加 bondedAtomPairs 定义糖链,可参考官方 examples/rnaseb_glycosylated.json。除糖链外,共价配体的离去原子不会被自动删除,预测后需手动删除,成键处的键长也需检查。
RNA、DNA 与蛋白复合物
双链 DNA 要写两条链。蛋白-核酸复合物中核酸超过 100 个、残基总数超过 2,000 时,原子冲突最常见。官方记录的 Server 与本地结果差异案例(issue #492)也是蛋白-DNA 复合物,见上一节。
AF3 与 AF2 / AF2-multimer
AF2-multimer 只预测蛋白链。AF3 加入了核酸、配体、离子和修饰,蛋白复合物精度也更高,但会在无序区生成低置信度的虚假螺旋,AF2 在无序区通常输出带状结构。只预测蛋白复合物、显存又有限时,ColabFold 的 AF2-multimer 部署成本最低。
和分子对接的关系
AF3 直接输出配体结合位置,本身就是一种结合模式预测,论文报告其在 PoseBusters 基准上显著优于 Vina。手性错误率为 4.4%,配体结构用于后续对接打分或分子动力学前,要检查手性中心、键长和冲突。AF3 倾向于预测 PDB 中常见的单一构象(例如对 cereblon 的 apo 和 holo 都只给出闭合态),不能代替构象采样。
结果
根目录的 <name>_model.cif 是 ranking_score 最高的样本,ranking_score = 0.8×ipTM + 0.2×pTM + 0.5×无序比例 − 100×has_clash,只用于在样本之间排序。<name>_summary_confidences.json 给出整体与按链、按链对的 pTM、ipTM 和 chain_pair_pae_min;<name>_confidences.json 给出逐原子 pLDDT 和完整 PAE 矩阵。输出只有 mmCIF,没有 PDB 格式,需要时用 gemmi 等工具转换。
官方给出的 ipTM 阈值:高于 0.8 可信,低于 0.6 大概率失败,0.6–0.8 之间需结合 PAE 判断。各指标的计算方式、阈值来源和常见误读见《AlphaFold 结果怎么看》。
国内实操
以下做法来自中文社区经验帖与高校超算手册,并已与官方仓库或第二个来源核对。
Protenix 网页版:邮箱注册,配体可填 SMILES
字节跳动的 Protenix Server(protenix-server.com)用邮箱注册登录,配体可以直接输入 SMILES,这两点 AlphaFold Server 做不到。离子仍要填 CCD 代码,例如二价铁写 FE2。结果为 CIF,文件组织与 AF3 接近(CSDN 经验帖)。
Protenix 本地版:权重和 MSA 都不经过 Google
模型权重和 CCD 文件放在火山引擎北京对象存储(protenix.tos-cn-beijing.volces.com),protenix_base_default_v1.0.0.pt 为 1.48 GB(本页 2026-10-10 用 HEAD 请求核对)。蛋白 MSA 默认发送到 protenix-server.com/api/msa(--msa_server_mode protenix,也可改为 colabfold),模板搜索默认关闭,因此不下载 630 GB 数据库也能运行。官方显存表:1,000 token 峰值 18.2 GB、59 秒;2,000 token 66.6 GB。24 GB 显卡适合约 1,000 token 以内的体系。当前 README 列出 protenix-v2(2026-04-08)与 v1.0.0 两代模型。
Protenix 安装:绕开滞后的 pip 镜像
配置了清华等 pip 镜像时,镜像中的 protenix 可能落后于 GitHub 版本,README 中的 protenix pred 命令会对不上。README 给出的做法是临时指定官方源:pip install --upgrade protenix --index-url https://pypi.org/simple。
学校超算:直接用平台的容器和共享数据库
除上海交大思源一号外,华南理工科学计算平台在 hpckapok1、hpckapok2 两个集群上提供 AF3 Singularity 镜像,模型参数和数据库放在共享目录。作业脚本申请 gpuA800 分区一张卡,用 singularity exec --nv 把自己的 input、output 目录绑定到 /root/af_input、/root/af_output 即可运行。动手部署前,先在本校超算手册中搜索 AlphaFold3。
非 Docker 编译:先看 GCC 版本
非 Docker 路线最常失败在 pip install . 编译 C++ 扩展这一步。日本超算用户的记录(Qiita)指出 libcifpp 需要 GCC 11 以上,低于 9.4 无法编译。一位国内用户在 Ubuntu 24.04 的 conda 环境中用 conda-forge 装 gcc/gxx 12.4.0 和 cmake 3.30.2,再补装 pybind11 后,pip install --no-deps . 编译成功(CSDN 经验帖)。GitHub 克隆慢时可用 gitcode 镜像 https://gitcode.com/gh_mirrors/alp/alphafold3.git,pip 加 -i https://pypi.tuna.tsinghua.edu.cn/simple。
交给 Agent
Scientify 的科研环境预装的是 ColabFold 1.6.3 与 AlphaFold2 权重,不包含 AF3 参数和数据库。预装环境覆盖纯蛋白复合物预测;含配体、核酸或修饰的体系需要另行安装 AF3 或开源模型。
指令示例:“用 ColabFold 预测附件中两条蛋白链的复合物结构,跑 5 个模型、每个 3 个 seed,按 ipTM 排序,给出前三个结构的 PAE 图和链间接触残基列表。”
- 01
准备输入
智能体把序列整理成 ColabFold 的 FASTA 或 CSV 格式,检查非标准残基和链数。
- 02
租用 GPU 并运行
在你开通授权后,智能体按需租用 GPU(按秒计费),运行 colabfold_batch,日志和中间文件保存在工作区。关闭本机后任务继续运行。
- 03
汇总结果
产出各模型的 PDB、排序表、PAE 图和界面残基列表,并对结果做对抗审阅,检查任务是否真正完成。
- 04
你仍需核对
链的拷贝数与真实化学计量是否一致,ipTM 处于 0.6–0.8 时界面是否有实验证据支持,以及无序区是否需要截掉后重算。
参考资料
- google-deepmind/alphafold3 installation.md — 系统要求、数据库体积、Docker 与 uv 安装、参数下载地址
- AlphaFold 3 performance.md — 各 GPU 的 token 上限、统一内存、推理耗时、分阶段运行、MSA 复用、数据库分片、编译缓存
- AlphaFold 3 known_issues.md — 计算能力 7.x 结果错误、Server 与本地 MSA 差异
- AlphaFold 3 input.md — 输入 JSON 字段、配体三种写法、成键与糖链、userCCD、外部 MSA 路径
- AlphaFold 3 发布说明(v3.0.1–v3.0.4) — Blackwell 支持、CPU 与 Apple Silicon 支持、新增参数
- fetch_databases.sh 与 params.py — 数据库下载地址与方式;参数目录的文件匹配规则(src/alphafold3/model/params.py)
- AlphaFold Server FAQ — 每日 30 个任务、token 计数、CCD 配体、糖链规则、模板与浅 MSA 建议、输出内容
- AlphaFold Server JSON 格式说明 — Server 方言字段与允许的配体、离子、修饰列表
- Issue #9:24 GB 显卡能否运行 — 经验帖:RTX 3090/4090 的耗时与可跑体系
- Issue #59:计算能力 7.x GPU 输出错误 — 经验帖与维护者回复:多型号显卡的 2PV7 测试结果、P3000 笔记本耗时
- Issue #209:WSL 下 4090 显存报错 — 维护者建议改用原生 Linux
- Issue #492:Server 与本地结果不一致 — ipTM 0.86 与 0.1 的复现、MSA 差 12 条序列
- Issue #385:本地与 Server 差异排查 — 经验帖:Server 单 seed 偏低、逐个数据库测试的 ipTM 变化
- Issue #452:并行运行与网络存储 — 经验帖:数据库放在 NFS 上的问题
- Issue #629:头尾环肽输入方式 — 维护者建议使用 SMILES
- 上海交大超算平台用户手册:AlphaFold3 — 经验帖:A100-40GB 与 A800 配置、分阶段脚本、各版本数据流程耗时
- CSDN:docker 失败但详细版|Alphafold3 安装部署指南 — 经验帖:国内构建镜像时依赖下载超时与 abseil-cpp 下载失败
- GitHub:alphafold3 AutoDL 镜像说明 — 经验帖:云 GPU 镜像的驱动与磁盘要求、数据库网盘分发
- Abramson et al., Nature 2024 — 5 seeds × 5 samples 基准设置、抗体 1,000 seeds、手性错误率 4.4%、构象偏好
- ColabFold README — --af3-json 生成 AF3 输入、MSA 服务器使用要求
- Boltz、Chai-1、Protenix、OpenFold3 仓库 — 开源替代的功能与硬件说明(另见 jwohlwend/boltz、chaidiscovery/chai-lab、aqlaboratory/openfold-3)
- Protenix 推理说明与权重地址 — MSA 服务器模式、显存与耗时表;权重地址见 protenix/web_service/dependency_url.py
- CSDN:Protenix 网页的使用及 Linux 服务器的部署和使用 — 经验帖:邮箱注册、SMILES 配体、离子 CCD 代码
- 华南理工大学科学计算公共服务平台:AlphaFold3 — 高校超算手册:Singularity 镜像、共享参数与数据库、A800 作业脚本
- CSDN:alphafold3 本地部署记录(conda) — 经验帖:gitcode 镜像、清华源、gcc 12.4.0、cmake 3.30.2、pybind11
- Qiita:AlphaFold3 非 Docker 安装记录 — 经验帖:libcifpp 需要 GCC 11 以上