持续配置以在 Amazon EKS 上增强集群操作 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

持续配置以在 Amazon EKS 上增强集群操作

使用 Amazon EKS 编排创建的 Amazon SageMaker HyperPod 集群现在支持持续配置,这是一项新功能,可提高运行大规模 AI/ML 工作负载的灵活性和效率。持续配置使您可以快速开始训练、无缝扩展、在不中断操作的情况下执行维护,并对集群操作进行精细的可见性。

注意

使用 EKS 编排创建的 HyperPod 集群可以进行持续配置。使用 Slurm 编排创建的集群使用不同的扩展模型。

工作方式

持续配置通过事件驱动的架构运行,该架构可独立管理每个实例。创建 HyperPod 集群时,您需要为每个实例组指定所需的实例数量。持续配置系统:

  • 接受请求:记录每个实例组的目标实例数量

  • 启动预配:开始启动实例以满足目标数量

    跟踪进度:监控每次实例启动尝试并记录状态

  • 处理失败:自动重试失败的启动

默认情况下,连续配置处于禁用状态。要使用此功能,请将设置--node-provisioning-modeContinuous

启用持续配置后,您可以同时启动多个扩展操作,而无需等待之前的操作完成。这使您可以同时扩展同一个集群中的不同实例组,并向同一个实例组提交多个扩展请求。

持续配置还允许您访问DescribeClusterEventListClusterEvent查看详细的事件监控和操作可见性。

使用量计量

HyperPod 具有持续预配功能的集群使用实例级计量来提供反映实际资源使用情况的准确账单。这种计量方法不同于传统的集群级计费,它独立跟踪每个实例。

实例级计费

通过持续配置,计费将在单个实例级别开始和停止,而不是等待集群级别的状态变化。这种方法具有以下好处:

  • 精确的计费精度:从生命周期脚本开始执行时开始计费。如果生命周期脚本失败,则将重试实例配置,并按生命周期脚本运行时间向您收费。

  • 独立计量:每个实例的账单生命周期均单独管理,防止出现级联计费错误

  • 实时账单更新:计费从实例开始执行其生命周期脚本时开始,在实例进入终止状态时停止

账单生命周期

HyperPod 集群中的每个实例都遵循以下账单生命周期:

  • 计费开始:当实例成功启动并开始执行其生命周期配置脚本时

  • 继续计费:在实例的整个运行生命周期内

  • 计费停止:当实例进入终止状态时,无论终止原因如何

注意

启动失败的实例不会开始计费。如果由于容量不足或其他问题导致实例启动失败,则您无需为失败的尝试付费。账单在实例级别计算,费用在集群的 Amazon 资源名称 (ARN) 下汇总和报告。

创建启用了持续配置的集群

注意

您必须将现有 Amazon EKS 集群配置为 VPC 网络并安装所需的 Helm 图表。此外,请准备生命周期配置脚本并将其上传到您的执行角色可以访问的 Amazon S3 存储桶。

以下 Amazon CLI 操作创建了一个具有一个实例组并启用了持续配置的 HyperPod 集群。

aws sagemaker-dev create-cluster \ --cluster-name $HP_CLUSTER_NAME \ --orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \ --vpc-config '{ "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET'"] }' \ --instance-groups '{ "InstanceGroupName": "ig-1", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 2, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "TrainingPlanArn": "" }' \ --node-provisioning-mode Continuous // Expected Output: { "ClusterArn": "arn:aws:sagemaker:us-west-2:<account-id>:cluster/<cluster-id>" }

创建集群后,您可以使用ListClusterNodesDescribeClusterNode来查找有关集群中节点的更多信息。

调用这些操作将返回一个具有以下值之一的ClusterInstanceStatusDetails对象:

  • 正在运行:节点运行状况良好,已在集群协调器 (EKS) 中注册。

  • 失败:节点配置失败,但系统将自动尝试使用新 EC2 实例进行配置。

  • 待处理:正在配置或重启节点。

  • ShuttingDown:节点终止正在进行中。如果终止遇到问题,该节点将变为 “故障” 状态,或者成功地从集群中移除。

  • SystemUpdating:该节点正在进行 AMI 修补,可以手动触发,也可以作为修补 cronjob 的一部分触发。

  • DeepHealthCheckInProgress: 正在进行深度运行状况检查 (DHCs)。这可能需要几分钟到几个小时不等,具体取决于测试的性质。替换坏节点,健康节点切换到正在运行。

  • NotFound:用于BatchAddClusterNodes响应,表示在等性重播期间节点已被删除。