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