内容提要
SageMaker HyperPod是一种基于Slurm的高性能弹性计算集群,可实现跨机器跨GPU的大规模并行训练。本文介绍了HyperPod集群的启动、配置、连接、管理和分布式训练方法,包括配置和启动集群、登录节点、配置远程调试环境、挂载共享存储和使用PyTorch DDP、Accelerate和DeepSpeed等框架进行分布式训练的示例。
延伸解读
HyperPod 的 IaaS 定位与适用场景
HyperPod 提供原生 IaaS 服务器,可像 EC2 一样自由操控和部署模型框架,而非托管训练作业。它预配置 SageMaker 分布式训练库,支持将负载拆分到数千 GPU,并定期保存检查点,硬件故障时自动检测、修复或更换实例并从检查点恢复。因此它适合需要长期无中断、跨机器跨 GPU 的大规模并行训练场景。
启动前的 VPC 与 IAM 准备要点
启动 HyperPod 集群需先设置 VPC 和 IAM 权限。VPC 必须包含私有子网和公有子网,私有子网通过 NAT 经 IGW 访问外网,以便训练任务下载公网数据;同时需为 S3 和 DDB 建立对应子网的终端节点,用于存储集群节点元数据。IAM 权限需覆盖 SageMaker、CloudWatch、S3、SSM 及 EC2 网络接口等操作,可附加到已有角色如笔记本实例的 ExecutionRole。
节点分组与队列配置的对应关系
HyperPod 集群至少需要两个节点分组:一个 controller 分组作为管理主节点,一个 worker 分组作为训练算力节点。节点资源通过 cluster-config.json 配置,指定实例类型、数量、生命周期脚本位置等。队列配置则通过 node provision 文件设置,其中 controller_group 和 worker_groups 的名称必须与节点资源配置中的分组名一致,workload_manager 默认为 Slurm。
分布式训练框架的接入方式差异
HyperPod 支持多种分布式训练框架。PyTorch DDP 可通过 torch.distributed.launch 直接拉起单机多卡任务;Accelerate 利用 Slurm 环境变量如 SLURM_NODEID 区分节点,为不同节点指定不同 yaml 配置;DeepSpeed 则借助节点间 SSH 免密互信,使用 --hostfile 方式在一台计算节点上自动拉起多机集群,无需逐节点指定 master 或 node rank。
Q&A
SageMaker HyperPod 集群的主要功能是什么?
SageMaker HyperPod 集群是一种基于 Slurm 的高性能弹性计算集群,支持跨机器跨 GPU 的大规模并行训练,显著缩短训练时间。
如何启动 SageMaker HyperPod 集群?
启动 HyperPod 集群需要设置 VPC 和 IAM 权限,并通过配置 JSON 文件指定集群的资源设置。
HyperPod 集群支持哪些分布式训练框架?
HyperPod 集群支持多种分布式训练框架,如 PyTorch DDP、Accelerate 和 DeepSpeed。
如何登录 SageMaker HyperPod 集群的节点?
可以通过 SSM 客户端或 SSH 客户端登录 HyperPod 集群的节点。
HyperPod 集群的远程调试功能如何使用?
可以通过在 IDE 中连接到 HyperPod 节点,进行快速的定位和断点调试,需配置 SSH 隧道。
HyperPod 集群如何处理训练期间的硬件故障?
HyperPod 集群会自动检测故障,修复或更换有故障的实例,并从上次保存的检查点恢复训练。