云生信学生物信息学

Nature 新算法 GPN-Star:200M 参数只用 8 张 A100?真正省算力的是先别训练

作者:发布于 2026-10-28约 9 分钟阅读
GPN-Star基因组语言模型资源规划:200M参数、8张A100训练数天与42GB压缩全基因组比对

2026 年 9 月发表于 Nature 的 GPN-Star,把多物种全基因组比对和系统发育树直接放进基因组语言模型,用于评估编码与非编码变异的功能约束。论文最大的三个模型有 2 亿参数,在 8 张 NVIDIA A100 上训练数天。相比论文列出的 Nucleotide Transformer(128 张 A100、约一个月)和 Evo 2(超过 2000 张 H100、数月),资源规模明显更小。

但这不意味着拿到一个 VCF 就该租 8 张卡重新训练。GPN-Star 已发布人类和多个模式物种模型,还提供预计算分数。项目真正需要的,往往是先判断“查公开分数、做本地推理,还是训练新物种模型”,再配置 GPU、内存和存储。

GPN-Star 基因组语言模型算力与任务路径海报
GPN-Star 资源规划:先区分公开分数、本地推理与定制训练,再配置 WGA、GPU、CPU 和存储。

同一个 GPN-Star,算力差距可以跨三个档

官方文档给出人类 hg38 的 100 物种脊椎动物、447 物种哺乳动物和 243 物种灵长类模型,均为 200M 参数;鼠、鸡、果蝇模型为 85M,线虫和拟南芥为 25M。模型大小只是第一层,真正决定任务量的是是否需要读取整套多物种比对、变异数量和是否重新训练。

任务路径 需要的主要资源 适合场景 关键边界
查询预计算分数 CPU、网络和 Parquet 读取 hg38 常见 SNV 已在公开分数中 必须匹配组装版本、染色体命名、ref/alt
本地 VEP 推理 GPU、匹配模型的 WGA、批量输出盘 新变异集、需原始 logits 或 embedding 输出默认是未校准 LLR,校准另做
多 GPU 全量推理 多卡节点、足够 CPU worker 与高速盘 数百万变异、全基因组窗口 batch 与 worker 都是“每进程”参数
从头训练 论文最大模型用 8×A100 数天 新物种、新 WGA 或研究模型本身 还需准备比对、树、训练集和验证集

“先别训练”不是保守,而是把算力花在研究问题上。如果只是为 hg38 变异补充功能约束分数,官方预计算表可以按染色体远程筛选,只读取需要的 Parquet row group,不下载模型,也不加载全基因组比对。

scores = (
    pl.scan_parquet("hf://datasets/songlab/gpn-star-scores/data/"
                    "gpn-star-hg38-m447-200m/llr/llr_chr22.parquet")
      .filter(pl.col("pos").is_in(positions))
      .collect(engine="streaming")
)

公开示例用 chrom、pos、ref、alt 四列连接分数;pos 是一基坐标。对少量已覆盖变异,这条路径通常比搭建 GPU 环境更快,也更容易复现。

远程查分仍要做工程控制。应固定分数集与数据集 revision,按染色体分批查询,并检查 join 后缺失值数量;缺失不等于“模型判断为中性”,可能是坐标、组装或等位基因方向不一致。结果交付时至少保留原始四列键、分数集名称、校准字段、查询日期和脚本。

预计算分数也不是所有任务的答案。若需要新组装、结构变异、非 SNV、特定窗口 embedding,或者想获得 checkpoint 的原始输出,就要进入本地推理或其他方法。先用输入类型排除不适用路径,比直接问“需要几张 GPU”更重要。

本地推理的隐藏成本是 WGA,不只是模型

GPN-Star 推理必须使用与 checkpoint 匹配的全基因组多序列比对,目标组装、物种集合、物种顺序和进化尺度都不能随意替换。官方公开的 V100 alignment 压缩包约 42 GB,解压后的 Zarr 还需要额外空间;CLI 不会自动下载这套大型数据。

磁盘规划不能只留 42 GB。下载压缩包、解压后的 Zarr、Hugging Face 模型缓存、输入 Parquet、批次 checkpoint 和最终输出可能同时存在。更稳的做法是在高速盘上分别建立只读 WGA、模型缓存和任务工作目录,下载后校验官方 SHA-256,再通过固定路径或只读软链接供多个任务复用。这样既避免多人重复下载,也减少误删公共比对库的风险。

染色体名称也必须匹配。文档示例中的存储使用 6,如果输入写成 chr6,不能静默删前缀继续跑。参考等位基因必须与本地 genome 或 MSA 对应位置一致,否则推理会停止。很多“模型报错”实际是组装版本、坐标或数据目录契约不一致。

准备完成后,可用维护中的 CLI 批量打分:

gpn star vep \
  --input-path variants.parquet \
  --msa-path /data/multiz100way \
  --window-size 512 \
  --model-path songlab/gpn-star-hg38-v100-200m \
  --output-path scores.parquet \
  --per-device-eval-batch-size 64 \
  --bf16-full-eval

VEP 输入仅支持双等位 SNV,window-size 要为偶数。显存不够时,应先降低每卡 batch;不要同时改窗口、模型和精度,否则很难判断是资源问题还是结果定义变化。正式任务前用几十到几百个变异做 smoke test,核对行数、坐标、等位基因和分数方向。

多卡能提速,也最容易把 CPU 和磁盘拖垮

官方支持通过 torchrun 做多 GPU 推理。需要特别注意,per-device-eval-batch-size 是每个进程的 batch,4 卡时名义全局 batch 是单卡设置的 4 倍;dataloader-num-workers 同样按进程计算,4 个 rank 各设 4 个 worker,会产生 16 个 DataLoader worker,再加 4 个 rank 进程。

因此,GPU 数量、CPU 核、内存、Zarr 随机读取和输出 Parquet 要同时压测。GPU 利用率低而 CPU iowait 高时,继续加卡通常没有意义;先把 WGA 放到本地 NVMe、增加合理 worker,再看吞吐。长任务应启用批次 checkpoint,官方实现支持与进程数量无关的可恢复批次,避免某个分片失败后从零开始。

资源测试建议分三轮:先用单卡和小 batch 验证正确性,再逐步增大 batch 找到显存峰值,最后增加 GPU 数并观察吞吐是否近似增长。每轮记录显存、主内存、GPU 利用率、读取带宽和每千个变异耗时。若四卡只比单卡快一倍,通常应先查 CPU worker、共享盘和数据预处理,而不是继续扩到八卡。torchrun 会在多进程时把未设置的 OMP_NUM_THREADS 默认为 1,以避免 CPU 过度订阅;除非 profiling 证明 CPU 计算受限,不要盲目提高。

训练更需要区分“复现论文”和“解决项目”。论文的 8×A100 数天对应最大 200M 模型,不能直接当作所有物种的固定工期。新物种还要构建可靠 WGA、系统发育树、训练/验证划分和下游基准;如果比对质量不足,增加 GPU 并不会修复输入信息。

小型模式物种 checkpoint 只有 25M 或 85M 参数,也不代表训练成本只按参数量线性下降。物种数、窗口长度、有效比对比例、样本生成和验证频率都会影响吞吐。立项前应先用官方训练 recipe 跑 smoke test,再按真实数据测得的 step time、显存和 checkpoint 体积估算全程,而不是直接套论文天数。

分数是优先级证据,不是致病结论

CLI 输出的是正反链平均的原始 alternate-minus-reference log-likelihood ratio,负值表示替代等位基因在模型下更不可能;论文使用的突变率校准是独立下游步骤。不能把原始 LLR 与校准分数混在同一阈值里,也不能只看绝对值就宣布变异致病。

GPN-Star 学到的是进化约束。候选解释仍要结合人群频率、功能注释、组织背景、遗传模式和实验或临床证据。对新物种,至少要用已知致病、致死或频率分层变异做外部验证,再决定是否用于大规模候选排序。

如果你的任务卡在预计算分数能否覆盖、本地 WGA 目录、单卡/多卡 batch、42 GB 压缩比对的存储,或是否值得训练新物种模型,可以准备参考组装、物种、变异数量、目标输出、现有 GPU 与期望时间。云生信可先判断适合直接查分、部署推理环境还是定制训练,再确认租用环境自行运行、部署交接或委托分析的范围。

联系云生信,咨询 GPN-Star 基因组 AI 算力与分析方案

参考资料

把知识用于当前任务

先确定合适的计算资源

根据数据规模和分析任务,快速测算 CPU、内存、存储与 GPU 配置。

测算服务器配置仍有疑问,联系客服 ↗