4、硬件需求:GPU(NVIDIA)、显存、系统内存与存储空间规划
AlphaFold 不是那种随便一台机器就能跑的软件。我个人习惯是,先把硬件账算清楚再动手,不然装了半天跑不了,那才叫浪费时间。这一章我带你捋一遍 GPU、显存、内存和存储的具体要求,顺便聊几个我踩过的坑。
4.1 GPU 与显存 —— 整个流程的瓶颈
AlphaFold 的推理和训练都重度依赖 NVIDIA GPU。说白了,显存决定了你能不能跑、能跑多大规模。我最初用一台 8GB 显存的 GTX 1080 试过,单个蛋白序列稍长就 OOM(Out Of Memory),后来换了 24GB 的 RTX 3090 才勉强顺畅。
最低硬件要求
| 组件 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| GPU 型号 | NVIDIA Tesla T4 / RTX 2080 Ti | NVIDIA A100 / V100 / RTX 4090 | 必须支持 CUDA Compute Capability ≥ 7.0 |
| 显存 | 16 GB | 32 GB 或更多 | 16GB 跑短序列 (< 500 aa) 勉强,长序列 (> 1000 aa) 必爆 |
| GPU 数量 | 1 块 | 2–4 块并行 | 多卡只在批量处理时加速,单卡也能用 |
注意:我曾经用一块 11GB 的 RTX 2080 Ti 跑一个 800 aa 的蛋白,显存占用峰值到了 14GB,直接卡死。不要相信最低配置里的“8GB 可用”,实际多序列并行 + 中间数据膨胀很容易超限。
显存到底吃在哪?
AlphaFold 的推理过程中,几个关键模块对显存消耗巨大:
- MSA 构建——需要加载多个同源序列,序列越多显存占用越高。
- Pair Representation——这个是显存大户,序列长度平方级的矩阵。
- Evoformer + Structure Module——Transformer 层数和 heads 数决定参数量,每增加一层,显存涨一大截。
我做过一个简单测试:用默认参数(8个 recycle)跑一个 500 aa 的蛋白,显存占用约 18 GB;跑到 1000 aa,直接飙到 32 GB。所以,我建议你如果手头只有 16 GB 显存,先减 recycle 次数,比如改成 3,或者调小 max_template_date 来减少模板数量。
实用技巧:用
nvidia-smi 监控显存,如果显存余量 < 2 GB,立刻终止任务,避免系统挂死。
4.2 系统内存 —— 预处理阶段的“隐形消耗”
很多人只盯着 GPU 显存,忽略系统内存,结果处理大型蛋白数据库时直接 OOM kill。AlphaFold 在数据准备阶段会把 MSA 查询结果、模板结构、特征向量全部加载到系统内存中。我建议的最低系统内存是 64 GB,实际生产环境我部署的机器都是 128 GB 以上。
为什么会吃这么多?因为:
- Jackhmmer / HMMsearch——对大量序列库(如 Uniclust30、BFD)进行搜索,每个子进程吃 2–8 GB 内存,并行 4–8 个进程就能吃掉 32–64 GB。
- Template 搜索——PDB70 / PDB100 数据库在内存中的索引文件就占十几 GB。
- 特征拼接——最后把所有信息打包成 npy 文件时,临时数组也会占用大量内存。
小经验:我曾在 32 GB 内存的机器上尝试运行,结果数据预处理阶段系统开始疯狂 swap,硬盘 IO 跑满,拖了三个小时还没进入 GPU 推理。后来加到 128 GB,整个过程耗时缩短到 40 分钟。内存不足的代价是时间成本,自己权衡。
4.3 存储空间规划 —— 数据库是吃硬盘的怪兽
AlphaFold 不是装个软件就完事,它必须下载大量数据库。存储空间分三块:
| 数据类别 | 大小(压缩后) | 占用(解压后) | 说明 |
|---|---|---|---|
| 模型参数 | 约 2 GB | 约 2 GB | AlphaFold 官方发布的四个模型权重 |
| 遗传数据库(BFD、Uniclust30、UniRef90 等) | 约 300–400 GB | 约 900 GB–1.2 TB | 其中 BFD 压缩包 150 GB,解压后 500 GB |
| 模板数据库(PDB70 / PDB100) | 约 20 GB | 约 60 GB | 包含结构模板的 mmCIF 文件 |
| 运行临时文件 | — | 每个作业 1–10 GB | 包括中间 MSA、特征 npy、输出结构 |
严重警告:我曾经为了省硬盘空间,只下载了精简版数据库,结果跑一半报错说找不到某个 hmm 文件。官方推荐你完整下载所有数据库,否则遇到特定序列时搜索会失败。存储总需求至少 2 TB,建议用 SSD + HDD 组合,数据库放 HDD,工作目录放 SSD。
推荐存储方案
- SSD(500 GB–1 TB)——用于存放模型参数、运行临时文件、输出结构。速度快,减少 IO 瓶颈。
- HDD(2 TB+)——用于存放各类数据库,尤其是 BFD 这种大文件,顺序读为主,HDD 足够。
- 网络存储(NFS / NAS)——多机部署时,可以把数据库放在共享存储上,每台工作节点只挂载读取。但注意网络延迟,建议万兆网络。
4.4 硬件资源依赖关系一览
下面这张图可以帮你理解整个流程中硬件资源是如何被调用的——
4.5 避坑指南 —— 我亲身经历的几个教训
- 共享显存不是万能药:有人试图用
CUDA_VISIBLE_DEVICES把多个小显存 GPU 合并成一个大显存,但 AlphaFold 的模型并行度有限,实际效果极差。我见过一个团队用 4 块 8GB 卡跑 1000 aa,结果显存碎片化频繁报错。老老实实买大显存卡。 - 内存别只盯着容量:我踩过一次坑,128 GB 内存但频率只有 2133 MHz,结果预处理时数据搬运慢得离谱。优先选 DDR4 3200 或 DDR5,带宽很关键。
- 数据库磁盘预留 20% 余量:解压数据库时临时文件暴增,我有一次硬盘只剩 50 GB,解压到一半报 “No space left on device”,回滚都很麻烦。预留 20% 空闲空间是铁律。
- 不要用 WSL2 做 GPU 推理:虽然 NVIDIA 在 WSL2 上提供了 CUDA 支持,但内存管理和共享显存经常出问题。我个人生产环境一律用原生 Linux,少折腾。
4.6 规划参考 —— 三种典型配置方案
| 用途 | GPU | 显存 | 系统内存 | 存储 | 估算成本 |
|---|---|---|---|---|---|
| 个人学习 / 小分子(< 500 aa) | RTX 3090 / 4090 | 24–48 GB | 64 GB | 500 GB SSD + 2 TB HDD | 约 2–3 万 |
| 课题组 / 中等规模(< 1000 aa) | NVIDIA A5000 / V100 | 32–40 GB | 128 GB | 1 TB NVMe + 4 TB HDD | 约 5–8 万 |
| 生产环境 / 批量高通量 | 2–4 × A100 80GB | 80 GB × N | 256 GB – 512 GB | 全 NVMe RAID 或者分布式存储 | ≥ 20 万 |
给预算有限的人一句话:如果你只是偶尔跑几个蛋白,租用云 GPU 实例(比如 AWS p3.2xlarge 或阿里云 gn6v)按需付费,比买卡划算。我自己早期就是这么干的,等跑通流程再决定是否自建。