直接回答:三代(长读长)基因组组装这条路线不吃显卡,第一配置项是内存,第二是存储,CPU 核数决定”多久跑完”。 这一点有官方实测数据直接支撑——Flye 官方 benchmark 表里,同一款软件的内存跨度是 2GB(大肠杆菌)到 662GB(羊肠道宏基因组),hifiasm 官方表里是 68GB(玉米)到 699GB(红杉)。内存不是”配多少合适”的问题,而是”配少了根本跑不完”的问题。
这个方向我们见过两个典型的误配:
- 按”深度学习任务”配成多卡 GPU 服务器——组装、纠错、比对全是 CPU + 内存 + IO 型工作,一张卡也用不上;
- 内存按”基因组大小 × 固定系数”估——这是官方数据明确否定的做法:hifiasm 官方表里 草莓(0.8Gb 基因组)需要 91GB 内存,而玉米(2.2Gb 基因组)只需要 68GB。同样的”预估系数”在这里直接失效。
三句话先记住:
- 内存看”数据量与测序类型”,不看”基因组大小”——同是人类,HiFi 30x 约 141GB、ONT 120x 约 450GB(Flye 官方表);
- 测序类型决定档位:HiFi(高准确度长读)在内存与耗时上都明显更友好,ONT 超长读更吃资源;
- 存储要按”多套中间产物”算:纠错后的读段文件、overlap 文件、组装图、多版 FASTA,都是 GB–TB 级,且不能中途删。
一、五类工具一张表:硬件画像
| 工具 | 在流程里的位置 | GPU | CPU | 内存 | 存储 | 最该注意的 |
|---|---|---|---|---|---|---|
| Flye(含 metaFlye) | 三代读段从头组装(细菌—人类—宏基因组) | 不需要 | 高(官方 CPU time 最高 4,000 小时) | 极高 ★ 第一变量(官方 2GB–662GB) | 极高(输入数据 + 组装图 + 抛光产物) | 宏基因组模式内存由输入数据量决定 |
| hifiasm | HiFi 数据的从头组装(组装质量口碑最好之一) | 不需要 | 高(并行效率好,但不是第一瓶颈) | 极高 ★ 第一变量(官方 68GB–699GB) | 极高(.ec.bin + 两个 overlap 文件 + 多套 FASTA/GFA) |
不能用基因组大小×系数估内存 |
| NextDenovo | 长读纠错 + 组装(内置 minimap2 做重叠) | 不需要 | 高(核数按官方公式切分) | 极高(按输入总碱位数算) | 高(可用参数压缩中间结果) | 官方点名瓶颈是 minimap2 与 IO → 建议上 SSD |
| Canu | 老牌长读组装(纠错/修剪/组装三阶段) | 不需要 | 高 | 高 | 高(断点续跑依赖中间目录,别乱清) | ⚠️ 官方已宣布停止维护,新项目不建议作为主选 |
| minimap2 | 长读比对 / 纠错 / 组装的地基工具 | 不需要 | 高 ★(-t 线程直接提速) |
中—高(默认一批至多载入 8G 碱基建索引) | 中(索引 + 输出 + 临时文件) | 内存不够用 --split-prefix(更慢、要临时盘) |
一句话概括:“GPU”这一列全是”不需要”。这类任务里真正的钱花在 内存容量、本地盘容量与速度上。
二、Flye:官方 benchmark 表就是最好的”配置对照表”
Flye 官方 README 有一张逐数据集的 benchmark 表(含官方实测 RAM),这是本方向最值得直接引用的资料:
| 基因组 | 数据 | 组装大小 | CPU 时间 | 官方 RAM |
|---|---|---|---|---|
| E.coli | PB 50x | 4.6 Mb | 2 h | 2 GB |
| C.elegans | PB 40x | 107 Mb | 100 h | 31 GB |
| A.thaliana | PB 75x | 120 Mb | 100 h | 59 GB |
| D.melanogaster | ONT 30x | 136 Mb | 130 h | 33 GB |
| D.melanogaster | PB 120x | 141 Mb | 150 h | 70 GB |
| Human CHM13 | PB HiFi 30x | 3.0 Gb | 780 h | 141 GB |
| Human NA12878 | ONT 35x | 2.8 Gb | 3100 h | 394 GB |
| Human CHM13 | ONT 120x | 2.9 Gb | 4000 h | 450 GB |
| Sheep gut HiFi(宏基因组) | 输入 255 GB | 4.2 Gb | 3500 h | 662 GB |
| Zymo Even(宏基因组) | 输入 14 GB | 65 Mb | 60 h | 129 GB |
表注(官方原文):CHM13 T2T、CHM1、HG002 三组使用了
--asm-coverage 50;表中 NG50 为 contigs 口径。
从这张表读出三条采购规则(我们的解读,不是官方表述):
- 同物种、不同测序类型,内存差约 3 倍——人类 CHM13:HiFi 30x → 141GB vs ONT 120x → 450GB。预算允许时,HiFi 数据在内存与耗时上都更友好(覆盖度更低也能拼出更好的 NG50)。
- 覆盖度是内存的独立放大器——同一物种 ONT 35x(394GB)vs ONT 120x(450GB)。提高覆盖度不仅增加数据量,也抬高内存,所以不能只按”原始数据文件大小”估内存。
- ★ 宏基因组组装的内存由”输入数据量”决定,与物种基因组大小无关——羊肠道 HiFi 输入 255GB → 峰值 662GB,而组装产物只有 4.2Gb。客户常说”微生物基因组很小”,但这类任务的内存看的是测序数据量。
三、hifiasm:官方 RAM 表 + 三条”不能这么估”的红线
hifiasm 的官方 README 同样给了逐数据集实测表(v0.12,primary assemblies):
| 数据集 | 基因组大小 | 覆盖度 | 官方参数 | 墙钟时间 | 官方 RAM | N50 |
|---|---|---|---|---|---|---|
| Maize(B73) | 2.2 Gb | ×22 | -t48 -l0 |
5.1 h | 68 GB | 36.7 Mb |
| Mouse(C57/BL6J) | 2.6 Gb | ×25 | -t48 -l0 |
4.8 h | 76 GB | 21.1 Mb |
| Strawberry | 0.8 Gb | ×36 | -t48 -D10 |
3.7 h | 91 GB | 17.8 Mb |
| Human(CHM13) | 3.1 Gb | ×32 | -t48 -l0 |
8.2 h | 114 GB | 88.9 Mb |
| Human(HG002) | 3.1 Gb | ×36 | -t48 |
7.7 h | 137 GB | 98.7 Mb |
| Frog | 9.5 Gb | ×29 | -t48 |
69.0 h | 463 GB | 9.3 Mb |
| Redwood(红杉) | 35.6 Gb | ×28 | -t80 |
65.5 h | 699 GB | 5.4 Mb |
请特别注意两行的对比:草莓 0.8Gb 需要 91GB,玉米 2.2Gb 只需要 68GB。这就是为什么下面这三条红线必须写进方案,避免客户按”经验系数”报错配置:
| ⛔ 不能这么做 | 为什么(官方数据) |
|---|---|
| 用”基因组大小 × 固定系数”推算内存 | 官方表里内存与基因组大小非单调(草莓 0.8Gb 需 91GB > 玉米 2.2Gb 需 68GB),受覆盖度、杂合度与参数(-l0/-D10)影响 |
| 把”人类约 114GB”当成通用值 | 那是 3.1Gb 二倍体 + ×32 覆盖 + -t48 -l0 的组合结果;换物种、换覆盖度就不成立 |
| 把官方表的 RAM 当成”峰值保证” | 官方口径是该次运行的观测值;客户数据的杂合度/重复序列比例不同会导致差异 → 交付前必须用客户真实数据实测 |
另外两条可以直接答复客户的性能特征:
- hifiasm 的并行效率很好:官方表里 CPU time 172.9–3890.3 小时、而
-t48时墙钟只要 4.8–8.2 小时——核数的意义是”把很长的总计算量压进一夜”,而不是决定能否跑完; - 官方口径是”在单机上跑”(*”on a single machine”*),属于典型单机大内存任务。官方未给磁盘占用数值 → 存储按”原始长读数据 × 2–3 倍(含
.ec.bin、overlap 文件、GFA/FASTA 多套产物)+ 归档”预留(我们的工程口径,非官方)。
四、NextDenovo:官方直接给了”内存怎么分”的公式
NextDenovo 是少见的官方把资源配置公式写在 FAQ 里的软件(原文:*”How to optimize parallel computing parameters?”*):
*”Each
parallel_jobssubtask (includingminimap2_options_rawandminimap2_options_cns) requires 32~64 gb RAM depending on the max read length.”*
*”each
pa_correctionsubtask (includingcorrection_options) requires ~TOTAL_INPUT_BASES/4 bytes RAM.”*
翻译成配置语言:内存按”输入总碱基数”分配(校正子任务约需”总碱基数 ÷ 4 字节”),不是按基因组大小分配。官方基准配置文件里的实际数值更能说明问题:
| 数据集 | 基因组 | 官方 cfg 关键行 | 折算内存 |
|---|---|---|---|
| 人 CHM13(120X ONT) | 3.1 Gb | sort_options = -m 150g -t 30 |
排序一步就要 150GB |
| 拟南芥 F1(192X CLR) | 120 Mb | sort_options = -m 50g -t 35 |
50GB |
| 官方默认模板 | 1 Gb | sort_options = -m 20g -t 15 |
20GB |
这个”120Mb 的拟南芥也要 50GB”的例子,是反驳”基因组小就不用大内存”最有力的一条官方数据。
NextDenovo 还有三条官方点名的运维口径,非常适合写进交付说明:
| 官方原文 | 含义 |
|---|---|
| *”Currently, the bottlenecks of NextDenovo are minimap2 and IO.”* | 瓶颈是比对和磁盘 IO,不是内存带宽也不是显卡 |
*”Use usetempdir will reduce IO wait, especially if usetempdir is on a SSD driver.”* |
官方唯一直接点名的硬件:临时目录放 SSD |
| *”No need to make any changes, simply run the same command again.”* | 断点续跑:长任务被中断,重跑同一条命令即可继续 |
另外,内存紧张时官方给了 -dbuf(*”reduce ~TOTAL_INPUT_BASES/4 bytes of memory usage”*,代价是速度),提速可用 -fast(*”0.5-1 times faster mode with a little lower accuracy”*)。这是我们推荐”先调参数、后加硬件”的底气来源——省内存和提速的开关官方都给了。
五、minimap2:很多长读流程的地基,内存口径是”一批 8G 碱基”
minimap2 是纠错、比对、组装流程里到处都在用的地基工具。它的官方 man page 给出了一个明确的批量口径:
*”Load at most NUM target bases into RAM for indexing [8G]. If there are more than NUM bases in target.fa, minimap2 needs to read query.fa multiple times to map it against each batch of target sequences.**”*
→ 默认一次把至多 8G(80 亿)碱基的目标序列载入内存建索引。人类基因组(约 3.1Gb)落在默认单批次内,所以多数动植物项目用默认档即可。
内存不够时官方给了三条路(都写明了代价):
| 手段 | 官方说法 | 代价 |
|---|---|---|
加大批次 -I8g |
*”This is preferred if your machine has enough memory.”* | 需要更多内存 |
--split-prefix |
*”uses less memory, but it is slower and requires temporary disk space.”* | 更慢 + 需要临时磁盘 |
--idx-no-seq |
*”It saves disk space and memory”* | 索引不能用于 -a/-c(不做碱基级比对) |
还有一条并发提醒:minimap2 是”一个进程一份索引”,多人同时跑时内存要按进程数累加——这是”单跑没事、三个人一起跑就 OOM”的典型原因。
六、Canu:能力还在,但官方已停止维护
Canu 是老牌长读组装工具,官方口径里也有优点:自动探测资源并自适应(*”auto-detect computational resources and scale itself to fit”*)、可用 maxMemory/maxThreads 限制、支持断点续跑、支持 LSF/PBS/Slurm/SGE 等集群调度、真核推荐覆盖度 30X–60X。
但必须对客户说明一条:官方已宣布停止维护(EOL)。所以我们的建议是:
- 新项目不要把它作为主选(用 Flye / hifiasm / NextDenovo 覆盖大多数场景);
- 如果课题组已有历史流程依赖 Canu,方案里要明确写”该工具官方已停止维护”,并预留后续迁移;
- 若继续用,注意官方提醒:*”For best results, do not change Canu parameters between restarts“*(续跑时不要改参数),且中间目录不要清理——续跑靠的就是那个目录。
七、内存与存储怎么估:先定”测序类型 + 覆盖度 + 数据量”
报配置前的三个必问项(按重要度排序):
| # | 问什么 | 为什么 | 怎么用 |
|---|---|---|---|
| 1 | 测序平台与读长类型:HiFi / ONT / CLR(旧 PacBio) | 同物种不同读型的内存差约 3 倍(Flye 官方:人类 HiFi 30x 141GB vs ONT 120x 450GB) | 直接决定内存档位 |
| 2 | 基因组大小与倍性:0.1Gb 级细菌真菌 / 1–3Gb 常见动植物 / 9Gb+ 两栖林木 | 官方表覆盖到 35.6Gb(红杉 → 699GB) | 9Gb 以上要按”数百 GB 级内存”规划,并核对主板单条容量与插槽数 |
| 3 | 覆盖度与总数据量(多少 GB / 多少个样本) | 覆盖度是内存的独立放大器;宏基因组/多组混样时内存按数据量走 | 不许用”基因组大小 × 系数”(官方数据已否定) |
存储按四份算(这是我们的工程口径,官方未给数值):
- 原始长读数据(不可删,是交付凭据);
- 中间产物:纠错后的读段(hifiasm 的
.ec.bin)、overlap 文件 —— 通常是原始数据的 1–3 倍; - 组装产物多套:不同参数/版本的 GFA 与 FASTA、抛光后结果;
- 归档:项目结束后的冷数据(建议单独一层)。
再乘一个”并发系数”:同一台机器上多个样本/多个人同时跑,内存要按峰值任务数累加,磁盘要按”同时在跑的项目数”累加。这条做不好,就是典型的”别人一跑,我这边的任务就被 kill”。
八、按规模分档(可直接对照预算看)
| 场景 | 内存 | CPU | 存储 | 备注 |
|---|---|---|---|---|
| 细菌/真菌基因组(≤0.1Gb),HiFi 或 ONT | 64–128GB | 16–32 核 | 4–8TB(含 NVMe 热区) | 官方表无此量级数据 → 以实测为准;这一档往往是”跑得动且不贵”的典型 |
| 0.8–3.1Gb 常见动植物(拟南芥/玉米/猪牛/人类级) | 128–256GB(官方表对应 68–137GB,留并发与系统余量) | 32–64 核(hiFiasm -t48 是官方常用档) |
8–16TB + 独立 work 盘 | 覆盖度 ×30 左右是最常见口径 |
| 9.5Gb 级(蛙、部分两栖/林木) | ≥512GB | 64 核以上 | 16TB 以上 | 对应官方 Frog 463GB |
| 超大基因组 / 大宏基因组(35Gb 级针叶、多倍体;或输入数百 GB 的 meta) | 768GB–1TB | 64–128 核 | 共享存储 + 分层归档 | 对应官方红杉 699GB、羊肠道 meta 662GB;先核对主板容量与插槽 |
三条判断口径:
- 先定”内存档位”,再选 CPU 核数与平台——本方向是”内存决定能不能跑完,核数决定跑多久”;
- 存储不要只按原始数据算——中间产物与多套组装产物往往比原始数据更大;
- 要 GPU 只有一个理由:课题组另有深度学习/结构预测类任务,与组装本身无关。
九、五句可以直接写进方案的结论
- 三代长读组装不上显卡——Flye / hifiasm / NextDenovo / minimap2 都是 CPU 多线程程序;
- 内存是第一变量,且必须”一单一估”:官方实测跨度 2GB(大肠杆菌)– 699GB(红杉)、宏基因组模式还有 662GB 的案例;
- 不能用”基因组大小 × 固定系数”估内存:官方表里草莓 0.8Gb 需 91GB、玉米 2.2Gb 只需 68GB,非单调;
- HiFi 比 ONT 更省内存(同物种约差 3 倍)——客户选测序策略时,这条直接影响服务器预算;
- 存储按”原始数据 + 中间产物 + 多套产物 + 归档”四层规划,并把临时目录放在 SSD/NVMe(NextDenovo 官方唯一点名的硬件)。
常见问题
三代测序组装要不要配显卡?
不需要。 Flye、hifiasm、NextDenovo、minimap2 的官方资料里都没有把 GPU 作为运行条件——它们靠 CPU 多线程 + 大内存 + 快速磁盘完成纠错、重叠检测与组装。只有当课题组同时还要跑深度学习类任务(如结构预测、序列大模型)时,显卡才有意义;如果预算有限而需求只有组装,把钱从显卡移到内存和 NVMe 上,收益大得多。
组装一个人类基因组,内存要配多少?
看测序类型。Flye 官方 benchmark:HiFi 30x → 141GB、ONT 120x → 450GB;hifiasm 官方表:人类 ×32/×36 → 114–137GB。所以常见口径是”内存 ≥512GB 级别可以把人类级大项目做得很从容,256GB 是 HiFi 路线的最低实用档”(这是我们的工程口径,官方表给的是单次运行观测值,不是峰值保证)。最终定档前必须用客户自己的数据实测一次。
客户说”我这是细菌基因组,是不是不用配大机器”?
多数情况下是的,但要注意两点:① 官方没有细菌量级的 benchmark,所以不能拿官方人类数据外推,应该用客户真实数据测一次峰值内存;② 如果是”宏基因组”而不是单一细菌基因组,结论完全不同——Flye 官方实测:输入 14GB 的数据就需要 129GB 内存,输入 255GB 就需要 662GB,因为这类任务的内存看输入数据量,不看物种基因组大小。详见宏基因组分析的服务器怎么配。
机器老是跑一半被 kill,是内存不够吗?
大概率是。判断和处理顺序:
- 看是否多个任务同时跑——minimap2/NextDenovo 这类工具”一个进程一份索引/一份缓冲”,内存会按并发数累加;
- 内存不足先用官方给的降内存开关,而不是立刻加硬件:NextDenovo 有
-dbuf,MEGAHIT 有--kmin-1pass,minimap2 有--split-prefix(代价是更慢、需要临时盘); - 长任务请开启/利用断点续跑(NextDenovo 官方:重跑同一条命令即可继续;Canu:不要改参数、不要清中间目录);
- 确认是”内存真不够”而不是”临时目录写满了磁盘“——这两者症状相似,后者更常见。可参考服务器 CPU 和显卡都跑满了还是很慢,再加一张卡有用吗。
为什么同样的物种,两台机器的内存差这么多还不够用?
因为内存不只看物种大小,还看:① 测序类型(HiFi vs ONT,约差 3 倍);② 覆盖度(同物种 ONT 35x 是 394GB、120x 是 450GB);③ 杂合度与重复序列比例;④ 参数(官方 hifiasm 表里 -l0、-D10 都出现在示例参数里)。所以”同物种照抄配置”是常见错误,正确做法是拿数据实测后回填。
Canu 现在还能用吗?
能用,但不要作为新项目的主选——官方已宣布停止维护。它仍有自适应资源、maxMemory/maxThreads 限制、断点续跑、集群调度等能力,历史项目继续跑没问题;但新项目建议用 Flye / hifiasm / NextDenovo,并注意若沿用 Canu 续跑,官方要求”重启之间不要改参数”、中间目录不能清理。
如果你们正在给课题组或实验室看机器,把 要跑的软件 / 模型、大概几个人用、预算范围 发我一句,我按这个给你一份带参数清单的配置思路——不推销最高配,只帮你把钱花在真正影响出结果的地方。
