亚马逊AWS官方博客

Amazon SageMaker HyperPod 引入对 Amazon EKS 的支持



今天,我们很高兴地宣布,专为基础模型(FM)开发打造的高韧性基础架构 Amazon SageMaker HyperPod 引入了对 Amazon Elastic Kubernetes Service(EKS)的支持。这项新功能使客户能够使用 EKS 来编排 HyperPod 集群,同时享受到 Kubernetes 的强大功能与 Amazon SageMaker HyperPod 专为训练大型模型而设计的韧性环境。Amazon SageMaker HyperPod 有助于高效扩展到一千多个人工智能(AI)加速器上,将训练时间减少多达 40%。

现在,Amazon SageMaker HyperPod 将支持客户使用基于 Kubernetes 的界面来管理集群。这一集成允许客户在 Slurm 和 Amazon EKS 之间无缝切换以优化各种工作负载,包括训练、微调、实验和推理。附加组件 CloudWatch Observability EKS 能够实现全面监控,在统一面板上集中提供有关 CPU、网络、硬盘和其他低级节点指标的洞察。这种增强的可观测性覆盖了整个集群的资源利用情况、节点级指标、容器组(pod)级性能和具体容器的利用率数据,有助于高效完成故障排除和优化。

Amazon SageMaker HyperPod2023 re:Invent 全球大会上推出,如今已成为 AI 初创企业和希望高效训练及部署大规模模型的企业的首选解决方案。它与 SageMaker 的分布式训练库兼容,后者提供模型并行数据并行软件优化,有助于减少高达 20% 的训练时间。SageMaker HyperPod 可自动检测并修复或替换故障实例,使数据科学家能够连续数周或数月不中断地训练模型。这样一来,数据科学家就能够专注于模型开发,而无需分心管理基础架构。

Kubernetes 具有很好的可扩展性和丰富的开源工具,广泛应用于机器学习(ML)工作负载,此次 Amazon EKS 与 Amazon SageMaker HyperPod 的集成便是为了充分发挥 Kubernetes 的优势。组织在构建应用时,包括构建供生成式人工智能场景使用的应用时,通常会用 Kubernetes 进行标准化,因为它支持在不同环境中重复使用功能,同时满足合规和治理标准。在今天这份公告之后,客户将能够扩展到一千多个 AI 加速器上,提高资源利用率。这种灵活性将有助开发人员获得更好的体验、实现容器化的应用管理以及对 FM 训练和推理工作负载进行动态扩展。

在 Amazon SageMaker HyperPod 中引入 Amazon EKS 支持将带来深度运行状况检查、自动节点恢复和任务自动恢复功能,韧性更强,从而可确保对大规模和/或长时间运行的任务进行不间断的训练。专为 Kubernetes 环境设计的可选 HyperPod CLI 可以简化任务管理,不过客户也可以使用自己的 CLI 工具。与 Amazon CloudWatch Container Insights 的集成可带来更高的可观测性,帮助深入了解集群的性能、运行状况和利用率。此外,数据科学家可使用 Kubeflow 等工具来实现 ML 工作流的自动化。该集成还包括由 Amazon SageMaker 托管的 MLflow,为实验跟踪和模型管理提供了强大的解决方案。

总体而言,Amazon SageMaker HyperPod 集群由云管理员使用 HyperPod cluster API 创建并由 HyperPod 服务完全托管,消除了构建和优化 ML 基础架构所涉及的无差别繁重工作。Amazon EKS 用于编排这些 HyperPod 节点(方式类似于使用 Slurm 编排 HyperPod 节点),为客户提供管理员熟悉的、基于 Kubernetes 的体验。

接下来我们看看如何开始使用 Amazon SageMaker HyperPod 中的 Amazon EKS 支持
首先,我要准备场景、检查先决条件是否满足,并按照 Amazon SageMaker HyperPod EKS 讲习会上的操作,使用单个 AWS CloudFormation 堆栈创建配置了 VPC 和存储资源的 Amazon EKS 集群。

我可以使用 AWS 管理控制台AWS 命令行界面(AWS CLI)来创建和管理 Amazon SageMaker HyperPod 集群。我使用了 AWS CLI,在 JSON 文件中指定了集群配置。我选择前面创建的 Amazon EKS 集群作为 SageMaker HyperPod 集群的编排工具。然后,我要创建集群 Worker 节点,给它命名为“worker-group-1”,并为它设置私有 Subnet,同时将 NodeRecovery 设为 Automatic 以启用自动节点恢复。对于 OnStartDeepHealthChecks,我要添加 InstanceStressInstanceConnectivity 来启用深度运行状况检查。

cat > eli-cluster-config.json << EOL
{
    "ClusterName": "example-hp-cluster",
    "Orchestrator": {
        "Eks": {
            "ClusterArn": "${EKS_CLUSTER_ARN}"
        }
    },
    "InstanceGroups": [
        {
            "InstanceGroupName": "worker-group-1",
            "InstanceType": "ml.p5.48xlarge",
            "InstanceCount": 32,
            "LifeCycleConfig": {
                "SourceS3Uri": "s3://${BUCKET_NAME}",
                "OnCreate": "on_create.sh"
            },
            "ExecutionRole": "${EXECUTION_ROLE}",
            "ThreadsPerCore": 1,
            "OnStartDeepHealthChecks": [
                "InstanceStress",
                "InstanceConnectivity"
            ],
        },
  ....
    ],
    "VpcConfig": {
        "SecurityGroupIds": [
            "$SECURITY_GROUP"
        ],
        "Subnets": [
            "$SUBNET_ID"
        ]
    },
    "ResilienceConfig": {
        "NodeRecovery": "Automatic"
    }
}
EOL

您可以将 InstanceStorageConfigs 添加到配置中,并在 HyperPod 节点上挂载额外的 Amazon EBS 卷

为了使用 SageMaker HyperPod API 创建集群,我运行了以下 AWS CLI 命令:

aws sagemaker create-cluster \ 
--cli-input-json file://eli-cluster-config.json

AWS 命令返回新 HyperPod 集群的 ARN。

{
"ClusterArn": "arn:aws:sagemaker:us-east-2:ACCOUNT-ID:cluster/wccy5z4n4m49"
}

然后,我要在 SageMaker 控制台中验证 HyperPod 集群的状态,直到它的状态变为 InService

或者,您也可以使用 AWS CLI 运行 describe-cluster 命令来查看集群状态:

aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster

集群准备就绪后,现在我可以访问 SageMaker HyperPod 集群节点了。对于大多数操作,我可以使用 kubectl 命令来管理开发环境中的资源和任务,充分利用 Kubernetes 编排的强大功能,同时享受 SageMaker HyperPod 托管基础架构带来的优势。在这种情况下,为了实现高级故障排除或直接访问节点,我要按照访问 SageMaker HyperPod 集群节点页面中的说明,使用 AWS Systems Manager(SSM)登录各个节点。

为了在 EKS 编排的 SageMaker HyperPod 集群上运行任务,我要按照通过 Amazon EKS 在 SageMaker HyperPod 集群上运行任务页面中概述的步骤进行操作。你可以使用 HyperPod CLI 和原生 kubectl 命令来查找可用的 HyperPod 集群并提交训练任务(容器组)。要管理 ML 实验和训练的运行,您可以使用 Kubeflow Training OperatorKueueAmazon SageMaker 托管的 MLflow

最后,在 SageMaker 控制台中,我可以查看最近添加的 EKS 集群的状态Kubernetes 版本,全面了解我的 SageMaker HyperPod 环境。

我还可以使用 Amazon CloudWatch Container 监控集群性能和运行状况指标。

注意事项
关于 Amazon SageMaker HyperPod 对 Amazon EKS 的支持,下面是一些您应该知道的信息:

韧性环境:此集成带来了深度运行状况检查、自动节点恢复和任务自动恢复功能,可提供韧性更强的训练环境。SageMaker HyperPod 支持自动检测、诊断和从故障中恢复,让您能够数周或数月不中断地训练基础模型。这可将训练时间减少多达 40%。

增强的 GPU 可观测性Amazon CloudWatch Container Insights 可为您的容器化应用和微服务提供详细的指标和日志。这有助您全面监控集群性能和运行状况。

对数据科学家友好的工具:此次发布中包含用于任务管理的自定义 HyperPod CLI、用于分布式训练的 Kubeflow Training Operator、用于调度的 Kueue 以及用于实验跟踪的 SageMaker 托管 MLflow 的集成。它还可以与 SageMaker 的分布式训练库配合使用,后者提供模型并行和数据并行优化,可大大减少训练时间。这些库与任务自动恢复功能结合使用时,将能不中断地对大型模型进行高效训练。

灵活的资源利用:此集成改善了开发人员的体验,并提高了对 FM 工作负载的可扩展性。数据科学家将可以在多项训练和推理任务中高效共享计算性能。您可以使用现有的 Amazon EKS 集群,也可以创建新集群并将其附加到 HyperPod 计算资源上,利用自有工具执行任务提交、排队和监控。

要开始在 Amazon EKS 上使用 Amazon SageMaker HyperPod,您可以探索 SageMaker HyperPod EKS 讲习会、aws-do-hyperpod 项目awsome-distributed-training 项目等资源。此版本在 Amazon SageMaker HyperPod 可用的 AWS 区域普遍可用,欧洲(伦敦)除外。有关定价信息,请访问 Amazon SageMaker 定价页面

这篇博文是集体努力的成果。在此我要感谢 Manoj Ravi、Adhesh Garg、Tomonori Shimomura、Alex Iankoulski、Anoop Saha 和整个团队在汇编和完善本文提供的信息方面做出的重大贡献。他们的集体专业知识对撰写这篇全面的文章至关重要。

– Eli


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。