Google DeepMind 正式开源 AlphaFold 3 (AF3) 的源代码和模型权重后,生命科学与 AI 交叉领域的开发者迎来了一波本地部署热潮。
虽然官方推荐使用 A100/H100 等企业级显卡,但对于预算有限的个人开发者或小型实验室,一张 RTX 4090 (24GB VRAM) 是性价比极高的选择。本文将详细介绍如何在 Ubuntu 系统下,利用单张 RTX 4090 配置并平稳运行轻量版 AlphaFold 3,重点解决硬盘空间不足和24GB 显存溢出 (OOM) 这两大痛点。
核心配置思路
运行本地 AlphaFold 3 主要面临两大瓶颈:
- 存储瓶颈:官方完整数据库高达 2.5 TB,下载和解压需要极长的时间与巨额硬盘成本。
- 显存瓶颈:24GB 显存面对超长多聚体或大蛋白时容易发生 Out of Memory (OOM)。
轻量化方案的核心策略:
- 数据瘦身:不下载完整的 BFD 数据库,改用
reduced_bfd(或者仅保留最核心的 UniRef90、MGnify 和 PDB 数据库),将存储需求缩减到 300GB 左右。 - 计算优化:利用 PyTorch 的梯度检查点(Gradient Checkpointing)或在推理脚本中限制最大序列长度。
- MSA 预计算:将繁重的多序列比对(MSA)步骤放到 CPU 或轻量级服务器上进行,GPU 仅负责推理(Folding)。
准备工作
1. 硬件与系统要求
- OS: Ubuntu 22.04 LTS (推荐)
- GPU: NVIDIA RTX 4090 (24GB VRAM)
- 驱动: NVIDIA Driver >= 535.x
- 内存: 主机物理内存 64GB 推荐(若进行 MSA 检索,128GB 最佳)
- 存储: 至少 500GB 的 NVMe SSD(数据库检索对随机读写性能要求极高,千万不要用机械硬盘)
2. 环境依赖安装
确保系统已安装 Docker 和 NVIDIA Container Toolkit。
# 安装 Docker
sudo apt-get update
sudo apt-get install docker.io -y
# 安装 NVIDIA Container Toolkit 以支持 Docker 调用 GPU
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
第一步:申请与下载 AlphaFold 3 模型权重
由于版权限制,AlphaFold 3 的权重需要去 Google DeepMind 官方学术授权页面申请。
- 访问 Google DeepMind AlphaFold 3 申请表单。
- 填写学术邮箱等信息,通常几小时内即可通过审核,获得专属的下载链接。
- 下载完成后,你会得到一个包含多个
.json配置文件和.npz/.pt权重文件的压缩包。
将权重文件解压至本地指定路径:
mkdir -p ~/alphafold3/weights
tar -xf alphafold3_weights.tar -C ~/alphafold3/weights
第二步:配置轻量级数据库(300GB 方案)
完整版的数据库检索(Jackhmmer/HHblits)耗时且占空间。我们在本地部署时,可以选择不下载完整版 BFD,而是下载 reduced_bfd。
官方提供了下载脚本 download_all_data.sh。我们可以通过参数来限制下载:
git clone https://github.com/google-deepmind/alphafold3.git
cd alphafold3
# 创建数据存储目录(确保此目录在 SSD 上)
mkdir -p /media/ssd/alphafold3_data
# 运行轻量化下载脚本(使用 reduced_bfd)
bash docker/download_all_data.sh /media/ssd/alphafold3_data reduced_bfd
提示:即使是 reduced_bfd 方案,下载与解压也需要数小时,具体取决于网络带宽和 CPU 性能。
第三步:构建并配置 Docker 容器
AlphaFold 3 官方推荐在 Docker 容器内运行,这样可以免去繁琐的 CUDA、Pytorch 版本冲突问题。
修改配置文件以适配 24GB 显存
在alphafold3/src目录下,找到控制推理时内存分配的配置文件。通过开启gradient_checkpointing或限制块大小(chunk size),可以有效防止 4090 显存溢出。在运行参数中,确保添加以下配置(或在输入 JSON 中指定):
{ "model": { "global_config": { "use_rematerialization": true, "chunk_size": 4 } } }注意:将
chunk_size设为 4 或 8 会略微降低计算速度,但能让 24GB 显存吞下高达 1500+ 残基(Residues)的复杂单体或多聚体。构建 Docker 镜像
docker build -f docker/Dockerfile -t alphafold3 .
第四步:运行推理(以具体蛋白为例)
AlphaFold 3 的输入是一个 .json 格式的任务描述文件。这里给出一个预测普通单体蛋白的 input.json 示例:
[
{
"name": "lysozyme_test",
"sequences": [
{
"protein": {
"id": "A",
"sequence": "KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL"
}
}
],
"model_seeds": [1]
}
]
将该文件保存至 ~/alphafold3/input/input.json。
启动 Docker 容器进行预测
运行以下命令挂载本地数据库、权重和输入输出路径:
docker run --rm --gpus all \
-v /media/ssd/alphafold3_data:/data \
-v ~/alphafold3/weights:/weights \
-v ~/alphafold3/input:/input \
-v ~/alphafold3/output:/output \
alphafold3 \
python3 /app/alphafold/run_alphafold.py \
--json_path=/input/input.json \
--model_dir=/weights \
--output_dir=/output \
--uniref90_database_path=/data/uniref90/uniref90.fasta \
--mgnify_database_path=/data/mgnify/mgy_clusters_2022_05.fasta \
--pdb_database_path=/data/pdb_seqres/pdb_seqres.txt \
--small_bfd_database_path=/data/small_bfd/bfd-first_non_consensus_sequences.fasta \
--uniclust30_database_path=/data/uniclust30/uniclust30_2018_08 \
--use_precomputed_msas=false
单卡 4090 极限压榨指南(显存优化技巧)
如果你在运行过程中依然遇到 CUDA out of memory,请尝试以下优化方案:
1. 托管 MSA 检索(推荐)
MSA(多序列比对)是极度消耗 CPU 内存和时间的过程。你可以先在 ColabFold 网页端或利用现成的公共服务器运行 MMseqs2 得到 .a3m 格式的比对文件。
然后将 --use_precomputed_msas 参数设为 true。这样本地 4090 只进行最核心的 Diffusion 和 Folding 推理,不仅速度提升 10 倍以上,显存占用也会大幅降低。
2. 启用 XFormers 或 FlashAttention
AlphaFold 3 内部使用了大量的 Attention 机制。确保容器内的 PyTorch 启用了 FlashAttention-2,这对于 Ampere 和 Ada Lovelace 架构(RTX 4090)有极佳的显存优化效果。
可以在 Dockerfile 编译时指定:
pip install flash-attn --no-build-isolation
3. 严格限制 Residue 长度
对于 24GB 显存,单张 4090 的预测极限大致如下:
- 未开启重计算:~800 残基
- 开启重计算 (Gradient Checkpointing):~1500 残基
- 开启重计算 + Chunking (块大小=4):~2000 残基
如果你的靶点蛋白超过 2000 个氨基酸,建议进行结构域(Domain)拆分预测,或直接租用 80GB 显存的 A100。
总结
通过 reduced_bfd 数据库瘦身 和 推理端显存重计算(Gradient Rematerialization),单张 RTX 4090 完全可以成为本地流畅运行 AlphaFold 3 的生产力工具。对于日常中小尺度的蛋白结构预测与配体对接,该配置能够提供极佳的响应速度与隐私保护。