如何在云上运行Cactus基因组比对:AWS Toil自动扩缩容与SLURM集群部署完整指南

📅 2026/8/25 8:21:24
如何在云上运行Cactus基因组比对:AWS Toil自动扩缩容与SLURM集群部署完整指南
如何在云上运行Cactus基因组比对AWS Toil自动扩缩容与SLURM集群部署完整指南【免费下载链接】cactusOfficial home of genome aligner based upon notion of Cactus graphs项目地址: https://gitcode.com/gh_mirrors/cact/cactusCactus基于 Cactus 图的无参考全基因组比对器与泛基因组构建工具套件支持两种大规模计算部署方式借助Toil工作流引擎在AWS上启动自动扩缩容的临时计算集群或在本地SLURM高性能计算集群上调度作业。本文面向新手带你从零完成这两种部署并用实例数量估算表和关键参数清单帮你的基因组比对任务省钱又提速 。为什么 Cactus 适合跑在云端或集群上Cactus 的渐进式比对Progressive Cactus会随物种数与基因组大小指数级消耗算力Minigraph-Cactus 泛基因组管线同样如此。下图展示了 Cactus 增量添加基因组时如何把对齐问题切分为可并行调度到各计算节点上的子问题——这正是它能天然映射到云上自动扩缩容与 SLURM 作业队列的原因两种部署方式的核心差异对比维度AWS Toil 自动扩缩容SLURM 集群资源来源临时拉起 EC2 实例用完即销毁使用机构现有计算节点共享文件系统❌ 不需要作业存储在 S3aws:region:jobStore✅ 必须jobstore 与输出需所有节点可见成本特征按量付费Spot 实例更便宜固定成本适合常态化任务适用场景一次性大规模任务、无自有集群长期科研计算、数据不能出内网一、AWS 云部署Toil 自动扩缩容六步走Cactus 通过 Toil项目锁定版本见 toil-requirement.txt当前为toil[aws]9.5.0实现 AWS 集群的自动扩缩容。完整说明见 doc/running-in-aws.md官方也用它跑过 HPRC 人类泛基因组这类百基因组级任务。第 1 步云账号基础准备密钥对、访问密钥与实例限额密钥对Keypair创建一对 AWS SSH 密钥用于登录自动拉起的实例访问密钥在~/.aws/credentials配置AWS_ACCESS_KEY_ID与AWS_SECRET_ACCESS_KEY实例限额新账号默认只能开少量小实例。务必提前检查并申请调高 EC2 限额注意Spot 与按需限额是分开的建议按估算值上调一些留出调整余量。第 2 步估算最大 worker 实例数省钱关键集群会自动伸缩但你必须设置上限防止扩太猛。官方给出的粗估公式向上取整基因组规模Spot 市场c4.8xlarge按需r3/r5.8xlarge 级N 个哺乳动物基因组约 2–4 Gb(N/2) × 20台N/2台N 个鸟类基因组约 1–2 Gb(N/2) × 10台N/4台N 个线虫级基因组约 100–300 MbN/2台N/10台小于 100 Mb单机即可完成不建议用自动扩缩容集群—第 3 步启动 leader 节点并上传数据在本地机器装好带 Toil 的 Cactus 预编译二进制版安装流程见 BIN-INSTALL.md把 AWS 密钥加入ssh-agent后启动 leadertoil launch-cluster -z us-west-2b clusterName --keyPairName yourKeyPairName --leaderNodeType t2.medium输入 FASTA 有两条路直接在 seqfile 里写http://或s3://URL推荐或用 rsync 把数据同步到 leadertoil rsync-cluster -z us-west-2b my-cactus-cluster -avP seqFile.txt input1.fa input2.fa :/第 4 步在 leader 上安装 Cactus两个关键改动用toil ssh-cluster -z us-west-2b clusterName登录 leader 后重新安装 Cactus但必须做两处改动保证 Cactus 复用 leader 预装的 Toil创建 virtualenv 时加--system-site-packages不要执行python3 -m pip install -U -r ./toil-requirement.txt避免重复安装 Toil。第 5 步提交自动扩缩容比对任务关键参数是自动扩缩容参数--nodeTypes、--minNodes、--maxNodes以及AWS 作业存储aws:region:jobStoreNamejobStoreName 须全局唯一集群没有共享文件系统不能用目录型 jobstore。--nodeTypes的语法是实例类型:Spot 最高出价不带价格即为按需实例。例如 10 个鸡基因组级别的任务cactus --nodeTypes c4.8xlarge:0.6,r3.8xlarge --minNodes 0,0 --maxNodes 20,2 \ --provisioner aws --batchSystem mesos \ --metrics aws:us-west-2:jobstoreName seqFile.txt output.hal泛基因组管线的真实写法HPRC 图构建则使用了更高内存实例并开启默认抢占cactus-pangenome ${MYJOBSTORE} hprc-mc.seqfile --outDir ${MYBUCKET} --outName hprc-mc \ --gbz --giraffe --vcf --chrom-vg --maxCores 64 --indexCores 64 --mapCores 8 --alignCores 16 \ --batchSystem mesos --provisioner aws --defaultPreemptable \ --nodeType r5.8xlarge:1.25,r5.16xlarge --nodeStorage 500任务运行时间较长请在tmux或screen中执行防止断连中断。第 6 步故障续跑与集群销毁任务失败或手动取消后加--restart从断点续跑任务完成后务必销毁 leader否则它会持续计费toil destroy-cluster -z us-west-2b yourClusterName。二、SLURM 集群部署头节点一条命令提交自 v2.6.1 起Cactus 原生支持 SLURM见 doc/progressive.md 的 Running on a cluster 章节。在头节点执行 cactus 命令并加--batchSystem slurm即可作业会被自动拆分提交给调度器。集群环境硬性要求共享文件系统jobstore 与输出目录必须对全部计算节点可见头节点需本地安装 Cactus Python 包cactus --batchSystem slurm不能从 Cactus 官方 Docker 容器内部运行容器里没有 sbatch 等集群命令。正确姿势是在头节点用 virtualenv 安装 Cactus再用--binariesMode docker或 singularity让底层二进制走容器本地临时目录用--workDir指定计算节点上的本地物理盘作 scratch远快于共享盘。SLURM 关键参数清单参数说明--batchSystem slurm必须启用 SLURM 调度--consCores每个 cactus-consolidated 作业核数64 通常是好起点不能超过节点可用核数--doubleMem true强烈推荐作业因超内存被杀时自动加倍内存重试--batchLogsDir强烈推荐SLURM 附加日志的 scratch 目录--maxMemory可选。新版 Cactus 启动时会用sinfo查询集群并自动把每个作业内存请求钳制到最大节点规格一般无需手动设置也可用它压低上限--slurmTime每个作业的时限需给一个适用于全部作业的值如--slurmTime 200:00:00--slurmPartition/--slurmGPUPartitionCPU / GPU 作业分区Cactus 会按--slurmTime自动推断可手动覆盖--slurmArgs透传其他 sbatch 参数如--slurmArgs --nice5000降低调度优先级--workDir计算节点本地 scratch 目录推荐的最小命令UCSC 官方示例cactus ./js ./examples/evolverMammals.txt evolverMammals.hal \ --batchSystem slurm --batchLogsDir batch-logs --consCores 64 \ --maxMemory 1.4Ti --doubleMem true --slurmTime 200:00:00大任务建议用cactus-prepare --script先把整个流程导出为分步 bash 脚本便于检查与分段重跑。GPU 加速KegAlign 与 SLURM 的组合拳比对最耗时的 lastzblast阶段可换用 GPU 加速版 KegAlign显著缩短运行时。集群上最省心的组合是头节点装 Cactus --binariesMode docker --gpu N让 KegAlign 在 GPU 节点容器内执行若自动内存估计不准再用--lastzMemory覆盖。云与集群部署效果长什么样无论走哪条路线跑完都能得到可交互分析的泛基因组图。下面两张图分别是 Cactus 构建的 GRCh38 多态位点泛基因组MHC 区域与酵母泛基因组单染色体可视化输出常见坑速查AWS jobstore 用错用了目录型 jobstore 会因无共享文件系统而失败必须用aws:region:name形式leader 忘了销毁任务结束 ≠ 账单结束记得toil destroy-clusterSLURM 下从容器内跑报找不到 sbatch类错误改到头节点 virtualenv 里运行内存作业卡 pending新版已自动钳制若仍卡住可用--maxMemory压上限或检查--slurmPartition是否选到了小内存分区非 SLURM 集群LSF、GridEngine、Torque 等Toil 理论上支持--batchSystem gridEngine等但官方未充分测试遇到问题优先求助社区。相关资料位置AWS 部署完整说明doc/running-in-aws.md集群与云端运行章节doc/progressive.md泛基因组管线含 HPRC 云/集群实例doc/pangenome.mdToil 版本依赖toil-requirement.txt二进制安装说明BIN-INSTALL.md小结没有自有 HPC 资源时选AWS Toil 自动扩缩容六步走流程、Spot 实例压成本、用完即销毁有 SLURM 集群时--batchSystem slurm一条命令即可把 Cactus 比对拆到整个集群上跑配合--doubleMem与本地--workDir基本装好就能跑。先用examples/evolverMammals.txt小例子验证环境再上生产数据是最稳的上线路径。【免费下载链接】cactusOfficial home of genome aligner based upon notion of Cactus graphs项目地址: https://gitcode.com/gh_mirrors/cact/cactus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考