3. 硬件与软件环境要求

说真的,AlphaFold 这玩意儿对硬件的要求不是一般的苛刻。我见过不少朋友兴冲冲配好了环境,结果一跑就崩,最后发现是显卡显存不够,或者 CUDA 版本没对齐。这一节,咱们就一次性把这事儿捋清楚。

AlphaFold 环境依赖体系 工程机 / 服务器 GPU · 内存 · 磁盘 操作系统 CUDA / cuDNN Python 虚拟环境 依赖库 (JAX/HA) AlphaFold 推理管线 ⚠ 软件与硬件必须严格对齐。一个 CUDA 版本不对,整条管线都跑不起来。 我个人习惯是先定 GPU 型号,再倒推 CUDA、cuDNN 和操作系统的组合。

3.1 GPU:绕不开的算力核心

AlphaFold 的核心计算,说白了全靠 GPU 顶着。没有一块像样的显卡,你连个最小蛋白都跑不动。我自己的经验是,GPU 显存决定了你能预测多长的序列。

GPU 型号 显存 适用场景 备注
NVIDIA A100 40GB / 80GB 大规模批量预测 / 长序列 企业级最优选择
NVIDIA V100 16GB / 32GB 单条蛋白预测(<2000残基) 性价比不错,我用得最多
NVIDIA RTX 4090 24GB 个人工作站 / 快速原型 消费级显卡里最能打的
NVIDIA RTX 3090 24GB 个人工作站 功耗高,散热要跟上

⚠ 显存不够怎么办?

我现在还能记起来第一次跑 AlphaFold 时的狼狈。当时我用的是一块 11GB 的 RTX 2080 Ti,跑一条 1500 残基的蛋白,跑到一半直接 OOM 崩了。后来查日志才发现,AlphaFold 默认的模型参数量把显存吃光了。如果你显存有限,可以试试调小 --models_to_relax 参数,少跑几个模型。

3.2 内存:别小看 CPU 端的压力

GPU 干活,CPU 也不能闲着。AlphaFold 在数据预处理和特征生成阶段,需要加载大规模的序列数据库(BFD、UniRef、PDB70 等)。这些数据库解压后动辄几百 GB,全部加载到内存里做索引。

我个人建议,内存至少 64GB 起步。如果你打算把数据库全部映射到内存里加速,那 128GB 会更踏实。

推荐配置:

  • 入门:64GB RAM(凑合能用,但会很卡)
  • 标准:128GB RAM(我现在的配置,日常够用)
  • 舒适:256GB+ RAM(适合企业级批量预测)

3.3 磁盘空间:数据库才是大头

AlphaFold 本身代码不大,但依赖的蛋白质结构数据库、序列数据库可不小。我每次部署新环境,最头疼的就是下载全套数据库。

数据库 压缩后大小 解压后大小 是否需要下载
BFD / Uniclust30 ~70 GB ~200 GB 建议下载(精度更高)
Small BFD ~15 GB ~35 GB 可选(降级使用)
UniRef90 ~20 GB ~55 GB 建议下载
PDB70 / PDB mmCIF ~5 GB ~10 GB 必须下载
Uniprot / UniRef30 ~25 GB ~60 GB 建议下载

💡 我的数据库管理技巧:

我以前犯过一个大错,把数据库直接放在系统盘上,结果跑着跑着磁盘满了,整个系统卡死。后来我把数据库独立挂载到一块 2TB 的 NVMe SSD 上,用 ln -s 软链接到 AlphaFold 的数据目录,再也没出过问题。

# 挂载数据盘(示例)
sudo mkfs.ext4 /dev/nvme1n1
sudo mount /dev/nvme1n1 /data/alphafold_db

# 创建软链接
ln -s /data/alphafold_db /path/to/alphafold/data

3.4 操作系统:Linux 是首选

AlphaFold 官方支持的 Linux 环境,说白了就是 Ubuntu。Windows 呢?我知道有人用 WSL2 跑,也成功了。但我个人不推荐这么搞——容器化和文件路径兼容性问题太多。

⚠ macOS 用户请注意:

别想了,Apple M 系列芯片现在跑不了 AlphaFold 的完整管线。缺 CUDA 支持,你连 JAX 都没法正常加速。我自己试过,完全跑不动。

我推荐的操作系统组合:

  • Ubuntu 20.04 LTS / 22.04 LTS(最稳定,踩坑最少)
  • Debian 11+(也能用,但依赖包版本要手动调)
  • CentOS 7 / Rocky Linux 8(企业环境常见,兼容性需要测)

3.5 CUDA & cuDNN:版本对齐是命根子

这部分我吃过太多亏了。AlphaFold 依赖的 JAX、TensorFlow 和 Haiku 版本对 CUDA 版本极度敏感。一个不匹配,你连导入包那一步都过不去。

我记得有一次帮同事调试,他装的是 CUDA 11.8,但 JAX 只支持到 11.4,结果 GPU 完全没被识别。折腾了两天才发现是版本问题。

组件 推荐版本 我的避坑经验
CUDA Toolkit 11.1 - 11.4 别装太新,11.2 最稳
cuDNN 8.2.2 必须与 CUDA 版本严格匹配
NVIDIA Driver ≥ 460.32.03 驱动太老会报兼容性错误
JAX 0.2.25 - 0.3.15 JAX 对 CUDA 版本最挑剔
# 检查 CUDA 版本
nvcc --version

# 检查 cuDNN 版本
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

# 如果版本不对,用 conda 重装环境
conda create -n alphafold python=3.8
conda install -c conda-forge cudatoolkit=11.2 cudnn=8.2.2

我的版本对齐口诀:

驱动 ≥ 460 → CUDA 11.2 → cuDNN 8.2 → JAX 0.3.1 → AlphaFold 2.3.0。按这个顺序装,基本不会出大问题。

3.6 快速环境检查清单

写到最后,我把我每次部署新环境都要跑一遍的检查命令列出来。你装完环境后,建议一条一条验证。

# 1. 检查 GPU 可用性
nvidia-smi
# 正常会显示 GPU 型号、显存、驱动版本

# 2. 检查 CUDA 工具链
nvcc --version
# 输出应该包含你安装的 CUDA 版本号

# 3. 检查 cuDNN 是否被正确识别
python3 -c "import ctypes; print('cuDNN OK')"
# 不会报错就说明 cuDNN 库路径正确

# 4. 检查 JAX 能否调用 GPU
python3 -c "import jax; print(jax.devices())"
# 输出应该显示 [StreamExecutorGpuDevice(...)] 而不是 [TFRT_CPU_0]

# 5. 检查 AlphaFold 主要依赖
python3 -c "import alphafold; print('AlphaFold import success')"
# 这一步通过,基本上环境就稳了

💡 最后一个小建议:

你想想看,环境配好是最容易的一步。真正难的是后面的参数调优、数据库更新和模型选择。留个备份吧,把 conda env 的 yaml 文件导出来,下次部署直接用。

conda env export > alphafold_env.yaml