本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建集 SageMaker HyperPod 群
了解如何使用创建由 Amazon EKS 编排的 SageMaker HyperPod 集群。 AWS CLI
-
在创建集 SageMaker HyperPod 群之前:
-
确保现有 Amazon EKS 集群已启动并运行。有关如何设置 Amazon EKS 集群的详细说明,请参阅 Amazon EKS 用户指南中的创建 Amazon EKS 集群。
-
按照 使用 Helm 在 Amazon EKS 集群上安装软件包 中的说明安装 Helm 图表。如果您创建了 Amazon Nova SageMaker HyperPod 集群,则需要一个单独的 Helm 图表。
-
-
准备生命周期配置脚本然后上传到 Amazon S3 存储桶,如
s3://。amzn-s3-demo-bucket/Lifecycle-scripts/base-config/要快速入门,请
on_create.sh从 AWS ome 分布式训练 GitHub 存储库下载示例脚本,然后将其上传到 S3 存储桶。您还可以包括其他设置说明、一系列安装脚本或要在 HyperPod 集群配置阶段执行的命令。 重要
如果您创建的 的 IAM 角色适用于 SageMaker HyperPod 只附加托管的
AmazonSageMakerClusterInstanceRolePolicy,则集群可访问具有特定前缀sagemaker-的 Amazon S3 存储桶。如果您创建受限实例组,则无需下载并运行生命周期脚本。相反,您需要运行
install_rig_dependencies.sh。运行
install_rig_dependencies.sh脚本的先决条件包括:-
AWS 节点 (CNI) 和 CoreDNS 都应启用。这些是标准的 EKS 附加组件,不由标准 SageMaker HyperPod Helm 管理,但可以在下 Add-ons方的 EKS 控制台中轻松启用。
-
在运行此脚本之前,应安装标准 SageMaker HyperPod Helm 图表。
install_rig_dependencies.sh脚本将执行以下操作。-
aws-node(CNI):已创建新的rig-aws-nodeDaemonset;已修补现有aws-node以避开 RIG 节点。 -
coredns:已转换为 RIG 的 Daemonset 以支持多 RIG 使用并防止重载。 -
training-operators:已更新,添加了 RIG Worker 污点容忍度,并设置了 nodeAffinity 以优先选择非 RIG 实例。
-
Elastic Fabric Adapter(EFA):已更新,添加了 RIG Worker 污点容忍度,并为每个区域使用正确的容器映像。
-
-
准备一个 JSON 格式的 CreateClusterAPI 请求文件。对于
ExecutionRole,请提供使用托管的AmazonSageMakerClusterInstanceRolePolicy从 的 IAM 角色适用于 SageMaker HyperPod 部分创建的 IAM 角色的 ARN。注意
确保您的 SageMaker HyperPod 集群与您的 Amazon EKS 集群部署在同一个虚拟私有云 (VPC) 中。 SageMaker HyperPod 集群配置中指定的子网和安全组必须允许与 Amazon EKS 集群的 API 服务器终端节点进行网络连接和通信。
// create_cluster.json{ "ClusterName":"string", "InstanceGroups": [{ "InstanceGroupName":"string", "InstanceType":"string", "InstanceCount":number, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/", "OnCreate":"on_create.sh"}, "ExecutionRole":"string", "ThreadsPerCore":number, "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"] }], "RestrictedInstanceGroups": [ { "EnvironmentConfig": { "FSxLustreConfig": { "PerUnitStorageThroughput":number, "SizeInGiB":number} }, "ExecutionRole":"string", "InstanceCount":number, "InstanceGroupName":"string", "InstanceStorageConfigs": [ { ... } ], "InstanceType":"string", "OnStartDeepHealthChecks": ["string"], "OverrideVpcConfig": { "SecurityGroupIds": ["string"], "Subnets": ["string"] }, "ScheduledUpdateConfig": { "DeploymentConfig": { "AutoRollbackConfiguration": [ { "AlarmName":"string"} ], "RollingUpdatePolicy": { "MaximumBatchSize": { "Type":"string", "Value":number}, "RollbackMaximumBatchSize": { "Type":"string", "Value":number} }, "WaitIntervalInSeconds":number}, "ScheduleExpression":"string"}, "ThreadsPerCore":number, "TrainingPlanArn":"string"} ], "VpcConfig": { "SecurityGroupIds": ["string"], "Subnets": ["string"] }, "Tags": [{ "Key":"string", "Value":"string"}], "Orchestrator": { "Eks": { "ClusterArn":"string", "KubernetesConfig": { "Labels": {"nvidia.com/mig.config": "all-3g.40gb"} } } }, "NodeRecovery": "Automatic" }灵活的实例组
您可以使用
InstanceRequirements参数为一个实例组指定多个实例类型,而不是指定单个InstanceType实例类型。注意以下几点:-
InstanceType并且InstanceRequirements是相互排斥的。必须指定其中一个,但不能同时指定两个。 -
InstanceRequirements.InstanceTypes是决定置备优先级的有序列表。 SageMaker HyperPod尝试配置列表中的第一个实例类型,如果容量不可用,则回退到后续类型。您最多可以指定 20 个实例类型,并且列表中不得包含重复的实例类型。 -
灵活的实例组需要持续的节点配置模式。
以下示例显示了使用以下内容的实例组
InstanceRequirements:{ "InstanceGroupName": "flexible-ig", "InstanceRequirements": { "InstanceTypes": ["ml.p5.48xlarge", "ml.p4d.24xlarge", "ml.g6.48xlarge"] }, "InstanceCount": 10, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster" }配置为创建与 EKS SageMaker HyperPod 集群关联的新集群时,请注意以下几点。
-
在
InstanceGroups参数下最多可配置 20 个实例组。 -
对于
Orchestator.Eks.ClusterArn,请指定要用作编排工具的 EKS 集群的 ARN。 -
对于
OnStartDeepHealthChecks,添加InstanceStress和InstanceConnectivity,以启用 深度运行状况检查。 -
对于
NodeRecovery,Automatic请指定启用自动节点恢复。 SageMaker HyperPod 当运行状况监控代理发现问题时,替换或重启实例(节点)。 -
对于
Tags参数,您可以添加用于将 SageMaker HyperPod 集群作为 AWS 资源进行管理的自定义标签。在其他支持标记的 AWS 服务中添加标签的方式与在集群中添加标签的方式相同。要了解有关标记 AWS 资源的更多信息,请参阅《标记 AWS 资源用户指南》。 -
对于
VpcConfig参数,请指定 EKS 集群中使用的 VPC 的信息。子网必须是专用的。 -
对于
Orchestrator.Eks.KubernetesConfig.Labels,您可以选择指定要应用于节点的 Kubernetes 标签。要使用 GPU (MIG) 启用 Multi-Instance GPU 分区,请添加带有所需的 MIG 配置文件的nvidia.com/mig.config标签。例如,"nvidia.com/mig.config": "all-3g.40gb"将所有 GPU 配置为 3g.40GB 的分区配置文件。有关 GPU 分区和可用配置文件的更多信息,请参阅在亚马逊中使用 GPU 分区 SageMaker HyperPod。
-
-
运行 create-cluster 命令如下。
重要
在运行带
--cli-input-json参数的create-cluster命令时,必须在 JSON 文件的完整路径前添加file://前缀。必须使用此前缀来确保将输入 AWS CLI 识别为文件路径。省略file://前缀会导致解析参数错误。aws sagemaker create-cluster \ --cli-input-jsonfile://complete/path/to/create_cluster.json这将返回新集群的 ARN。
重要
您可以使用 update-cluster 操作来移除受限实例组(RIG)。当 RIG 缩减至 0 时,适用于 Lustre 的 FSx 文件系统将不会被删除。要完全移除适用于 Lustre 的 FSx 文件系统,必须完全移除 RIG。
移除 RIG 将不会删除存储在服务托管的 Amazon S3 存储桶中的任何构件。但在移除之前,您应确保适用于 Lustre 的 FSx 文件系统中的所有构件已完全同步到 Amazon S3。我们建议在作业完成后等待至少 30 分钟,以确保适用于 Lustre 的 FSx 文件系统中的所有构件完全同步到服务托管的 Amazon S3 存储桶。
重要
使用已载入 On-Demand 容量预留 (ODCR) 时,您必须通过在匹配的可用区 ID 中设置子网,将您的实例组映射到
OverrideVpcConfig与 ODCR 相同的可用区 ID (AZ ID)。关键:在部署之前验证
OverrideVpcConfig配置,以免产生重复的 ODCR 和 On-Demand 容量费用。