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 TiNVIDIA A100 / V100 / RTX 4090必须支持 CUDA Compute Capability ≥ 7.0
显存16 GB32 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 GBAlphaFold 官方发布的四个模型权重
遗传数据库(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 硬件资源依赖关系一览

下面这张图可以帮你理解整个流程中硬件资源是如何被调用的——

AlphaFold 硬件资源依赖关系 输入蛋白序列 数据预处理 系统内存主力区 Jackhmmer / HMMsearch / 模板搜索 特征提取 + 打包 模型推理 Evoformer + Structure Module GPU 显存核心消耗区 显存 ≥ 16GB,推荐 ≥ 32GB 输出结构 存储:模型参数 / 数据库 / 中间文件

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 / 409024–48 GB64 GB500 GB SSD + 2 TB HDD约 2–3 万
课题组 / 中等规模(< 1000 aa)NVIDIA A5000 / V10032–40 GB128 GB1 TB NVMe + 4 TB HDD约 5–8 万
生产环境 / 批量高通量2–4 × A100 80GB80 GB × N256 GB – 512 GB全 NVMe RAID 或者分布式存储≥ 20 万
给预算有限的人一句话:如果你只是偶尔跑几个蛋白,租用云 GPU 实例(比如 AWS p3.2xlarge 或阿里云 gn6v)按需付费,比买卡划算。我自己早期就是这么干的,等跑通流程再决定是否自建。