使用 AWS ParallelCluster 构建 HPC 环境 - Slurm 集群的自动构建与扩展

基于 CloudFormation 自动构建 HPC 集群,使用 Slurm 调度器管理作业。同时介绍通过 Spot 实例优化成本。

ParallelCluster 概述

ParallelCluster 是 AWS 提供的开源 HPC 集群管理工具。通过 YAML 配置文件定义集群构成(实例类型、节点数、存储、网络),使用 pcluster create-cluster 命令作为 CloudFormation 堆栈自动构建。标准配置 Slurm 作业调度器,可直接使用现有 Slurm 脚本和工作流。适用于计算流体力学(CFD)、分子动力学、基因组分析、气象模拟、金融风险计算等大规模并行计算工作负载。版本 3 引入了 Multi-Queue 模式,可在单个集群中定义多个队列,每个队列分配不同的实例类型和存储配置。配置变更可通过 pcluster update-cluster 应用到现有集群而无需销毁重建,在运行中即可反映节点添加和存储变更。

自动扩展与成本优化

ParallelCluster 的自动扩展与 Slurm 作业队列联动。提交作业时计算节点自动启动,作业完成后空闲超过指定时间(默认 10 分钟)节点自动终止。无作业时计算节点数降为零,仅产生头节点费用。使用 Spot 实例可大幅降低 HPC 工作负载成本。通过 Allocation Strategy: capacity-optimized 指定多种实例类型,可提高 Spot 可用性并降低中断率。对于支持检查点的应用,可配置 Spot 中断时自动重新排队作业。推荐头节点使用按需实例运行,仅计算节点使用 Spot。ScaledownIdletime 参数可调整空闲计时器;在频繁提交短作业的环境中,增大该值可减少节点启动/终止开销。

EFA 与共享存储

EFA(Elastic Fabric Adapter)是面向 HPC 工作负载的高速网络接口,可大幅降低节点间通信延迟。对于基于 MPI(Message Passing Interface)的并行计算中节点间数据交换成为瓶颈的工作负载非常有效。只需在 ParallelCluster 配置中启用 EFA,计算节点即自动配置 EFA。使用 EFA 需要将节点放置在放置组内,ParallelCluster 通过 Placement 配置段自动创建集群放置组。共享存储支持 FSx for Lustre、EFSEBS。FSx for Lustre 最适合大规模数据集的并行读取,与 S3 集成可自动将 S3 数据导入 Lustre 文件系统并将计算结果导出到 S3。EFS 适用于多集群间数据共享或节点数变动较大的环境,但延迟高于 FSx for Lustre。 关于 HPC 的深入学习,技术书籍 (Amazon)也可供参考。

设计最佳实践与常见陷阱

ParallelCluster 生产运行中需注意的要点:头节点选型方面,数百节点规模的集群会增加 Slurm 控制器的内存消耗,应选择 c5.xlarge 或更大规格而非 t3.small。头节点停止会导致整个集群不可用,需配置 EBS 快照定期备份。网络设计方面,将计算节点放置在私有子网中,通过 NAT 网关或 VPC 端点访问 S3 和 CloudWatch。使用 S3 VPC 端点(网关型)可避免 NAT 网关的数据传输费用,在大规模数据输入输出时产生显著成本差异。使用自定义 AMI 时,应基于包含 ParallelCluster 所需软件包(Slurm、Munge、supervisord)的官方 AMI 进行定制,并使用 pcluster build-image 命令构建以避免兼容性问题。支持的操作系统包括 Amazon Linux 2、Ubuntu 20.04/22.04。

与 AWS Batch 的比较与选择

AWS 提供 ParallelCluster 和 AWS Batch 两种 HPC/批处理服务,最优选择取决于工作负载特性。ParallelCluster 使用 Slurm 作为调度器,最适合从本地 HPC 环境迁移且不修改作业脚本的场景。需要 EFA 低延迟节点间通信的紧耦合并行计算(CFD、分子动力学等)只能选择 ParallelCluster。相比之下,AWS Batch 是完全托管服务,无需集群管理,使用基于容器的作业定义打包工作负载。对于大量独立任务并行执行的高吞吐量计算(基因组序列比对、图像处理流水线),AWS Batch 的基础设施管理负担更低。ParallelCluster 的优势在于用户可精细控制集群配置,适合需要指定特定实例放置和存储配置的科研计算场景。

总结

ParallelCluster 是在 AWS 上自动构建基于 Slurm 的 HPC 集群的工具。通过自动扩展实现按作业的资源管理,通过 Spot 实例降低成本,通过 EFA 提供高速节点间通信。最适合从本地 HPC 集群迁移或应对突发计算需求。Multi-Queue 模式可将不同工作负载整合到单个集群,FSx for Lustre 与 S3 联动可高效处理大规模数据输入输出。