使用 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、EFS 和 EBS。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 联动可高效处理大规模数据输入输出。