AlphaFold 3 / 使用教程

AlphaFold 3 怎么用:Server 提交、本地部署与实操经验

本页按 2026 年 10 月的官方文档和 GitHub issue、中文部署帖中的实测记录整理:AlphaFold Server 的额度与提交技巧,本地 AF3 v3.0.4 的硬件、安装、国内部署和消费级显卡经验,可直接改用的输入 JSON,以及提速、排错和结果与 Server 不一致时的处理。

直接答案

体系不超过 5,000 token、配体在 PDB 化学组分字典(CCD)中有代码时,直接用 AlphaFold Server(alphafoldserver.com),每天 30 个任务,需要 Google 账号登录。需要 SMILES 配体、共价键、批量运行或更大体系时,本地部署 AF3:只支持 Linux,需要计算能力 8.0 以上的 NVIDIA GPU,数据库下载约 252 GB、解压后约 630 GB,模型参数可直接下载 af3.bin.zst。RTX 3090/4090 用默认设置即可运行,有用户在 4090 上跑通约 2,400 残基的三聚体;工作站上 MSA 搜索通常比 GPU 推理慢数倍,复用 MSA 是最有效的提速手段。

选择

四条路线的差别在可输入的分子、算力要求和部署成本。选错的典型后果是花一周下载数据库后发现显卡不支持,或者到了 Server 才发现配体没有 CCD 代码。

路线适用条件限制
AlphaFold Server少量任务;蛋白、DNA、RNA 与 CCD 中已有的配体;不想配置环境每天 30 个任务;单任务 5,000 token;不支持 SMILES 和自定义共价键;离子与修饰限于列表
本地 AF3(v3.0.4)需要 SMILES 配体、共价配体、自定义 MSA/模板、批量或超过 5,000 tokenLinux;计算能力 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-1AF3 类全原子预测,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
各开源模型信息取自其 GitHub README,核对日期 2026-10-10。

在线版

以下数字来自 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 个

在线版

Server 方言 JSON(顶层必须是列表;配体与修饰带 CCD_ 前缀)json
[
  {
    "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
  }
]
  1. 01

    按实体添加分子

    同一蛋白的多个拷贝用 copies 设置,不要重复粘贴序列。双链 DNA 需要勾选 “+ Reverse complement” 添加互补链,否则只建模单链。序列中的未知残基 X 换成 A,未知核苷酸 N 在 DNA 中换成 T、RNA 中换成 U。

  2. 02

    先删掉无序尾巴

    长的无序 N/C 端会产生低置信度的虚假螺旋,并拉低附近区域的 pLDDT,还占用 token。FAQ 建议去掉无序尾巴,能更清楚地看出有序区的置信度。

  3. 03

    检查模板设置

    默认使用 2021-09-30 之前的 PDB 模板。要做无模板对照,或者想让结果贴近某个已知结构,在链菜单中关闭模板、设置截止日期或上传自定义模板(每条链最多 4 个)。用自定义模板时,FAQ 建议同时提供只含 10–100 条序列的浅 MSA,否则模板信息会被 MSA 的共进化信号覆盖。

  4. 04

    用多个任务代替多 seed

    界面提交的每个任务使用一个 seed、给出 5 个样本。困难体系(抗体-抗原、蛋白-核酸)要更多候选时,用 “Clone and reuse” 复制任务并让 seed 自动重新抽取,相当于每多一个任务增加 5 个样本。需要复现时在预览页关闭自动 seed,填 0–4,294,967,295 之间的整数。

  5. 05

    批量任务用 JSON 上传

    先在界面提交一个任务,下载 zip,以其中的 <job>_job_request.json 为模板,用脚本生成其他任务,每个文件最多 100 个,上传后作为草稿出现。额度用完的任务留在草稿中,第二天再提交。列表外的 CCD 配体在 JSON 中的写法,以界面添加 CCD Code 实体后下载的 job_request.json 为准。

  6. 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 40GB4,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 tokenXLA_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,实验性)
来源:AF3 installation.md、performance.md、known_issues.md、各版本发布说明与 issue #59、#209。

实测经验

以下是 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/80GB2PV7ranking_score 均为 0.67,与 A100 一致;同一测试中计算能力 7.x 的卡为 -99issue #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 镜像。

Docker 路线(Ubuntu 22.04/24.04)bash
# 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 路线(uv)bash
# 非 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
在一台机器上构建、拷到另一台机器使用bash
# 在能顺利构建的机器上
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 为空列表;空列表表示推理时不使用模板。

可续传的下载与解压bash
# 官方 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 生成 MSAbash
# 用 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 校验。

fold_input.json(alphafold3 方言,version 4)json
{
  "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 只跑推理。

分阶段运行、多 seed 与编译缓存bash
# 第一步:只跑 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 秒,旧版本应先升级。

排错

低显存与旧 GPU 设置bash
# 显存不足(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 ≤ -99GPU 计算能力为 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_MEMORYtoken 数超过显存承载开统一内存(见下方代码);多卡机器用 --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)某些后端没有该算子实现可以忽略,程序会自动换用其他实现
来源:AF3 known_issues.md、installation.md、params.py 与 GitHub issue #46、#59、#68、#193、#209。

实操经验

Server 与本地使用相同的模型参数,差异主要来自 MSA。Server 对分片数据库跑 Jackhmmer 时没有设 --domZ,等效于把 --domE 放宽约 100 倍,部分输入会得到更深的 MSA。issue #492 中同一蛋白-DNA 复合物在 Server 上 ipTM 0.86,本地 0.1;改用 Server 的 MSA 后本地结果与 Server 一致。

在本地 JSON 中使用 Server 下载的 MSAjson
{
  "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
}
  1. 01

    先在两边都多跑几个 seed

    issue #385 中 Server 的一个任务给出 ipTM 0.27,本地 20 个样本为 0.73–0.92;维护者在 Server 上换一个 seed 得到 0.90,与本地一致。Server 界面的每个任务只用一个 seed,比较前两边都至少跑 3–5 个 seed,确认差异是系统性的。

  2. 02

    比较 MSA 深度

    本地 <name>_data.json 中的 unpairedMsa 与 Server zip 中的 a3m 文件对比序列条数。issue #492 中两者只差 12 条序列(100 对 112),结果就完全不同。

  3. 03

    直接使用 Server 的 MSA

    把 zip 中各链的 unpaired 与 paired a3m 文件路径写进本地 JSON(version 2 以上),不写 templates 字段,本地数据流程会重新搜索模板;写成 [] 表示不用模板。a3m 文件在 zip 的 msas/ 目录中。本页实测:用一个公开的 Server 下载包按此方式改写,JSON 能被本地版正常读取。

  4. 04

    或者放宽本地搜索

    官方给的另一种办法是把 Jackhmmer/Nhmmer 的 --domE 提高 100 倍。run_alphafold.py 没有 --domE 命令行参数,需要修改数据流程中的工具配置,因此多数情况下直接用 Server 的 MSA 更简单。

  5. 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 图和链间接触残基列表。”

  1. 01

    准备输入

    智能体把序列整理成 ColabFold 的 FASTA 或 CSV 格式,检查非标准残基和链数。

  2. 02

    租用 GPU 并运行

    在你开通授权后,智能体按需租用 GPU(按秒计费),运行 colabfold_batch,日志和中间文件保存在工作区。关闭本机后任务继续运行。

  3. 03

    汇总结果

    产出各模型的 PDB、排序表、PAE 图和界面残基列表,并对结果做对抗审阅,检查任务是否真正完成。

  4. 04

    你仍需核对

    链的拷贝数与真实化学计量是否一致,ipTM 处于 0.6–0.8 时界面是否有实验证据支持,以及无序区是否需要截掉后重算。

参考资料

常见问题

AlphaFold Server 打不开或进不去怎么办?

Server 需要用 Google 账号登录,而 Google 服务在中国大陆网络下通常无法直接访问。可替代的方式有三种:在 Linux GPU 服务器上本地部署 AF3;使用学校超算已部署的 AF3;或者使用 Boltz、Chai-1、Protenix 等可以本地运行的开源模型。

AlphaFold 3 模型参数还需要申请吗?

不需要。2026 年 7 月 23 日起,官方仓库改为直接从 storage.googleapis.com/alphafold3/af3.bin.zst 下载,放进单独的参数目录即可,不用解压。网上写“填表申请、等待 2–5 个工作日”的教程已经过时。

RTX 4090 能跑多大的体系?

没有官方上限。GitHub issue 中有用户用默认设置在 4090 上跑通约 2,400 残基的三聚体,也有用户在更大的复合物上需要改用 xla 注意力实现,推理耗时约 1 小时。显存占用显示约 23 GB 是预分配所致,不能用来估算余量。

AlphaFold 3 能在 Windows 上安装吗?

官方只支持 Linux,维护者明确 WSL 不受支持,并把 WSL 上的显存报错归因于此。可行的做法是装 Ubuntu 双系统、使用学校超算或租用 Linux GPU 云服务器。v3.0.4 起可以在 macOS 上用 CPU 或 Apple Silicon GPU 运行小体系做测试。

AlphaFold Server 能输入自己的小分子 SMILES 吗?

不能。Server 只接受 PDB 化学组分字典中已有的 CCD 代码(字典版本 2024_10_28)。字典中没有的分子、需要和蛋白共价相连的分子,都要用本地 AF3 的 smiles 或 userCCD 字段输入。

一台机器有多张 GPU,AlphaFold 3 会自动并行吗?

不会。单个输入只用一张卡,用 --gpu_device 或 CUDA_VISIBLE_DEVICES 指定。多卡应当并行运行多个输入,或把 MSA 搜索放在 CPU 节点、推理放在 GPU 节点分开执行。

把结构预测交给 Scientify

写下序列和要回答的问题,科学智能体会在云电脑中准备输入、按需租用 GPU 运行 ColabFold,并整理结构、排序表和 PAE 图。关闭本机后任务继续运行。新注册用户免费获得 5 美元等值额度。