在 Amazon SageMaker HyperPod 中引入 Amazon EKS 支持 机器学习


引入 Amazon EKS 支持的 Amazon SageMaker HyperPod

作者 Watanabe Keita Arun Kumar Lokanatha Alex Iankoulski Manoj Ravi Tomonori Shimomura日期 2024 年 9 月 11 日分类 Amazon 弹性 Kubernetes 服务 Amazon SageMaker HyperPod 人工智能

关键要点

Amazon SageMaker HyperPod 现在支持 Amazon Elastic Kubernetes Service (EKS) 的集成,提供了专为模型训练设计的高可用性基础设施。加入 SageMaker HyperPod 管理的计算资源到 EKS 集群不仅可提升模型训练的弹性,还能有效管理 ML 工作负载。支持的三大弹性特性包括深度健康检查、自动节点恢复和作业自动恢复功能,旨在显著提高训练过程的稳定性。

我们非常高兴地宣布 Amazon Elastic Kubernetes ServiceAmazon EKS在 Amazon SageMaker HyperPod 的支持,这是一种以韧性为核心设计的专用基础设施。这一功能使得能够无缝地将 SageMaker HyperPod 管理的计算资源添加到 EKS 集群中,运用自动化节点和作业弹性特性进行基础模型FM开发。

通常情况下,基础模型会在由大量加速器组成的大规模计算集群上进行训练。在这些情况下,硬件故障会构成显著挑战,因为成千上万的加速器中,任何一个的故障都可能会中断整个训练过程。例如,Meta Llama 3 在 16K NVIDIA H100 Tensor Core GPUs 上的 405B 预训练过程中经历了419次意外中断,其中78归因于确认或怀疑的硬件问题,其中587的中断与 GPU 相关,包括 NVLink 故障和 HBM3 内存故障。

自其诞生以来,SageMaker HyperPod 的设计始终聚焦于以管理的弹性特性来减轻此类硬件故障,帮助像汤森路透Thomson Reuters、Perplexity AI 和 Hugging Face 等 FM 构建者扩展其 FM 训练和推断工作在 Slurm 集群上。有了 HyperPod 中的 EKS 支持,您现在可以通过管理 HyperPod 计算和 EKS 集群上的管理 Kubernetes 控制平面来在 Kubernetes 集群中受益于这些弹性特性。

AI 初创公司如 Observea 和 Articul8,以及企业如汤森路透,利用这一新特性来管理其 ML 模型开发生命周期:

“通过使用 SageMaker HyperPod,我们的客户和内部团队再也不需要担心操作和配置 Kubernetes 控制平面,而 SageMaker HyperPod 提供网络性能和优化配置来支持复杂的 HPC 工作负载。凭借 SageMaker HyperPod 中的 Amazon EKS 支持,我们可以减少 30 以上的基础设施管理和运营成本。” Observea

“作为一家以 Kubernetes 为基础的公司,我们很高兴能够欢迎 SageMaker HyperPod 的 Amazon EKS 支持推出。这是一个改变游戏规则的功能,它与我们现有的训练管道无缝集成,使我们更容易管理和操作我们的大规模 Kubernetes 集群。此外,这也帮助我们的最终客户,因为我们现在能够将这一功能封装并商品化到我们的 GenAI 平台,使我们的客户能够以更加流畅的方式运行自己的训练和微调工作负载。” Articul8 AI

本文旨在向 Kubernetes 集群管理员和 ML 科学家提供一个概述,介绍 SageMaker HyperPod 在 EKS 集群上促进大规模模型训练的关键特性。

整个文章分为以下三个部分:

Amazon EKS 支持的 SageMaker HyperPod 概述 本节提供 Amazon EKS 支持的 SageMaker HyperPod 的高级概述,介绍 HyperPod 计算在 EKS 集群上提供的三大弹性特性,同时阐明 HyperPod 是如何为管理员和科学家提供顺畅的开发体验的。HyperPod 集群设置和节点弹性特性 本节提供将 HyperPod 管理的计算与 EKS 集群集成作为 Kubernetes 工作节点的详细指南,强调其内置的弹性特性如何确保基础设施的稳定性。本节特别对管理员有帮助。带有作业自动恢复功能的训练作业弹性 本节展示科学家如何利用原生 Kubernetes CLI (kubectl) 或新发布的 HyperPod CLI 进行分布式训练作业的提交和管理,并启用自动作业恢复。

Amazon EKS 支持的 SageMaker HyperPod 概述

本节提供 Amazon EKS 支持的 SageMaker HyperPod 的高级概述,介绍 HyperPod 计算在 EKS 集群上提供的三大关键弹性特性,并讨论 SageMaker HyperPod 如何为管理员和科学家提供顺畅的用户体验。

架构概述

HyperPod 中的 Amazon EKS 支持提供了 EKS 集群与 HyperPod 计算之间的 1 对 1 映射关系EKS 集群作为 Kubernetes 控制平面。在此架构中,拥有三种虚拟私有云VPC,承载不同类型的资源:

VPC 名称描述Amazon EKS VPC一个由 AWS 托管的 VPC,承载 EKS 控制平面。此 VPC 不会出现在客户账户中。HyperPod VPC一个由 AWS 托管的 VPC,承载 HyperPod 计算。此 VPC 同样不会出现在客户账户中。SageMaker 用户 VPC一个用户管理的 VPC,承载诸如 Amazon FSx for Lustre 等资源,这些资源可选地与 Amazon Simple Storage Service S3相关联。

跨账户的弹性网络接口ENI也能在 HyperPod 计算实例与客户账户上的其他 AWS 服务如 Amazon Elastic Container Registry 和 Amazon CloudWatch之间架起通信桥梁。

以下图示说明了 Amazon EKS 支持 HyperPod 的高层次架构:

HyperPod 管理的弹性特性

Amazon EKS 支持 HyperPod 提供以下三项功能,以确保集群的健康状况并在意外中断的情况下继续进行训练作业:

深度健康检查 这是针对 GPU 和 AWS Trainium 实例的特定压力测试的管理健康检查,这些检查可以在集群创建、更新或节点替换期间运行。自动节点恢复 HyperPod 执行轻量级的受管理健康检查,结合自动节点替换功能,持续监控并检测潜在问题,包括内存耗尽、磁盘故障、GPU 异常等,监控代理会据此进行节点替换或重启操作。作业自动恢复 SageMaker HyperPod 提供作业的自动恢复功能,确保在中断或故障发生时能够恢复和继续训练作业。这个扩展确保作业在节点被替换后等待并重启。

用户体验

除了上述的管理弹性特性外,SageMaker HyperPod 在管理员和科学家之间提供流畅的用户体验,这对于管理大型集群和运行大规模训练作业至关重要:

管理员体验 SageMaker HyperPod 提供 API 和控制台体验以创建和管理 EKS 集群中的节点组,同时提供 SSH 访问集群节点的能力。管理者还可以使用生命周期脚本在集群节点上安装额外的依赖和执行集群软件的更新。科学家体验 SageMaker HyperPod 除了使科学家能够利用 Amazon EKS 作为协调者外,还为他们提供轻松训练模型的额外能力。借助 HyperPod CLI,科学家能够通过提供 yaml 文件来提交训练作业,同时管理作业而无需使用 kubectl。

HyperPod 计算设置与节点弹性特性

本节提供详细指南,介绍如何将 HyperPod 管理的计算集成到您的 EKS 集群作为 Kubernetes 工作节点,并讨论其内置的弹性特性如何提供基础设施稳定性。

前提条件

在 HyperPod 计算部署之前,您需要满足以下要求:

EKS 集群 可以将 HyperPod 计算与满足所需条件的现有 EKS 集群关联。或者,您可以使用准备好的 AWS CloudFormation 模板部署现成的 EKS 集群。自定义资源 运行多节点分布式训练需要各种资源和多个组件,需在 EKS 集群上预先部署。您还需要为健康监控代理和深度健康检查部署额外资源。

HyperPod 计算设置

完成上述资源的成功部署后,您可以创建 HyperPod 计算。下面是示例 JSON 文件配置:

在 Amazon SageMaker HyperPod 中引入 Amazon EKS 支持 机器学习

json{ ClusterName mlcluster Orchestrator { Eks { ClusterArn {EKSCLUSTERARN} } } InstanceGroups [ { InstanceGroupName workergroup1 InstanceType mlp548xlarge InstanceCount 4 LifeCycleConfig { SourceS3Uri s3//{BUCKETNAME} OnCreate oncreatesh } ExecutionRole {EXECUTIONROLE} ThreadsPerCore 1 OnStartDeepHealthChecks [ InstanceStress InstanceConnectivity ] } ] VpcConfig { SecurityGroupIds [ SECURITYGROUP ] Subnets [ SUBNETID ] } NodeRecovery Automatic}您可以使用以下 AWS 命令创建 HyperPod 计算需版本 21747 或更高:

bashaws sagemaker createcluster cliinputjson file//clusterconfigjson

您可通过以下命令验证集群状态:

bashaws sagemaker listclusters output table

节点弹性特性

通过运行 kubectl get nodes 命令,您可以获取节点的详细状态,并查看 sagemakeramazonawscom/nodehealthstatus 标签显示各节点的生命周期状态。使用 CloudWatch,您可以访问有关节点深度健康检查的日志。

完整的弹性相关 Kubernetes 标签列表 请参见 AWS 文档。

HyperPod 还可以定期运行常规健康检查。要查看 HyperPod 健康监控代理检测到的健康事件,可以查看 CloudWatch 日志。

作业自动恢复功能的训练作业弹性

除了基础设施弹性特性外,您还可以使用 Kubeflow Training Operator 为 PyTorch 提供作业自动恢复能力,从而确保在中断或故障情况下继续训练作业。启用自动恢复后,SageMaker HyperPod 至多尝试恢复中断的训练作业两次,并将其调度到健康节点。最终的训练状态可以通过描述 PyTorchJob 来验证。

鲸鱼加速器官网版

要提交作业到 HyperPod CLI,您可以按如下方式请求作业自动恢复:

bashhyperpod startjob configfile /configyaml autoresume true maxretry 2

清理

要删除您的 SageMaker HyperPod 计算,可以使用 SageMaker 控制台或 AWS CLI 命令:

bashaws sagemaker deletecluster clustername ltclusternamegt

集群的删除可能需要几分钟。您可以确认成功删除,从 SageMaker 控制台检查确认集群列表中不包含该集群。

结论

通过 Amazon EKS 对 SageMaker HyperPod 的支持,已经在 Kubernetes 上标准化基础模型开发工作流程的客户可以在 SageMaker HyperPod 中部署 HyperPod,并使用熟悉的 Kubernetes 界面管理其集群资源。训练基础模型时,SageMaker HyperPod 会自动监控集群健康,在出现 GPU 故障等基础设施问题时,自动修复问题并从上一个保存的检查点重新启动训练过程,而无需人工干预。

想要了解有关集群管理和基础模型训练的全面教程,请访问 Amazon EKS 支持的 Amazon SageMaker HyperPod 实践工坊。有关基础设施部署和其他分布式训练测试用例的更多信息,请参考 awsomedistributedtraining 项目。

关于作者

Keita Watanabe 是 Amazon Web Services 的高级 GenAI 解决方案架构师,协助开发基于开源项目如 Slurm 和 Kubernetes的机器学习解决方案。此前 Keita 曾在电商行业担任研究科学家,开发图像检索系统用于产品搜索。

Alex Iankoulski 是 AWS 的首席解决方案架构师,专注于帮助客户协调和扩展 ML 和 AI 工作负载。他还共同创立了开源的 do framework,致力于应用容器技术加速创新步伐。

Tomonori Shimomura 是 SageMaker 团队的高级解决方案架构师,提供深度技术咨询,优化产品性能。

Arun Kumar Lokanatha 是 SageMaker 团队的高级 ML 解决方案架构师,专注于培训大型语言模型工作负载。

Manoj Ravi 是 SageMaker 团队的高级产品经理,致力于构建下一代 AI 产品,简化基础模型开发。