本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
以下主题提供了如何以 JSON 格式编写 SageMaker HyperPod API 请求文件并使用 AWS CLI 命令运行这些文件的指导。
创建新集群
-
准备生命周期配置脚本并将其上传到 S3 存储桶,如
s3://sagemaker-
。下面的步骤 2 假设在指定的 S3 存储桶中有一个名为amzn-s3-demo-bucket
/lifecycle-script-directory/src/
on_create.sh
的入口点脚本。重要
确保设置的 S3 路径以
s3://sagemaker-
开头。的 IAM 角色适用于 SageMaker HyperPod 附带托管的AmazonSageMakerClusterInstanceRolePolicy
,允许访问带有特定前缀sagemaker-
的 S3 存储桶。 -
准备一个 JSON 格式的 CreateClusterAPI 请求文件。您应配置实例组,使其与您在
provisioning_params.json
文件中设计的 Slurm 集群相匹配,该文件将在创建集群时使用,是运行一组生命周期脚本的一部分。要了解更多信息,请参阅 使用生命周期脚本自定义 SageMaker HyperPod集群。下面的模板有两个实例组,以满足 Slurm 集群的最低要求:一个控制器(主)节点和一个计算(Worker)节点。对于ExecutionRole
,请提供使用托管的AmazonSageMakerClusterInstanceRolePolicy
从 的 IAM 角色适用于 SageMaker HyperPod 部分创建的 IAM 角色的 ARN。// create_cluster.json
{ "ClusterName": "your-hyperpod-cluster
", "InstanceGroups": [ { "InstanceGroupName": "controller-group
", "InstanceType": "ml.m5.xlarge
", "InstanceCount":1
, "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
",// Optional: Configure an additional storage per instance group.
"InstanceStorageConfigs": [ {// Attach an additional EBS volume to each instance within the instance group.
// The default mount path for the additional EBS volume is /opt/sagemaker.
"EbsVolumeConfig":{// Specify an integer between 1 and 16384 in gigabytes (GB).
"VolumeSizeInGB":integer
, } } ] }, { "InstanceGroupName": "worker-group-1
", "InstanceType": "ml.p4d.xlarge
", "InstanceCount":1
, "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
" } ], // Optional "Tags": [ { "Key": "string
", "Value": "string
" } ], // Optional "VpcConfig": { "SecurityGroupIds": [ "string
" ], "Subnets": [ "string
" ] } }根据生命周期脚本设计集群结构的方式,在
InstanceGroups
参数下最多可配置 20 个实例组。对于
Tags
请求参数,您可以添加用于将 SageMaker HyperPod 集群作为 AWS 资源进行管理的自定义标签。您可以像在其他支持标记的 AWS 服务中添加标签一样向集群添加标签。要详细了解如何为 AWS 资源添加标签,请参阅《标记 AWS 资源用户指南》。对于
VpcConfig
请求参数,请指定要使用的 VPC 信息。有关更多信息,请参阅 SageMaker HyperPod使用自定义 Amazon VPC 进行设置。 -
运行 create-cluster 命令如下。
aws sagemaker create-cluster \ --cli-input-json
file://complete/path/to/create_cluster.json
这将返回新集群的 ARN。
描述集群
运行 describe-cluster 查看集群状态。您可以指定集群的名称或 ARN。
aws sagemaker describe-cluster --cluster-name
your-hyperpod-cluster
集群状态变为 InService
后,进入下一步。使用此 API,您还可以从运行其他 HyperPod API 操作中检索失败消息。
列出集群节点的详细信息
运行list-cluster-nodes以检查群集节点的密钥信息。
aws sagemaker list-cluster-nodes --cluster-name
your-hyperpod-cluster
这将返回一个响应,InstanceId
是您需要用来登录(使用 aws ssm
)的内容。
描述集群节点的详细信息
运行describe-cluster-node以检索群集节点的详细信息。您可以从 list-cluster-nodes输出中获取群集节点 ID。您可以指定集群的名称或 ARN。
aws sagemaker describe-cluster-node \ --cluster-name
your-hyperpod-cluster
\ --node-idi-111222333444555aa
列出集群
运行 list-clusters 列出账户中的所有集群。
aws sagemaker list-clusters
您还可以添加其他标签来筛选集群列表。要详细了解此命令在低级别运行的内容以及用于过滤的其他标志,请参阅 ListClustersAPI 参考。
更新集群配置
运行 update-cluster 更新集群配置。
注意
您可以使用 UpdateCluster
API 缩小集群规模或从 SageMaker HyperPod 集群中移除整个实例组。有关如何缩减或删除实例组的更多说明,请参阅缩小集群。
-
创建 JSON 格式的
UpdateCluster
请求文件。确保指定正确的集群名称和实例组名称进行更新。您可以更改实例类型、实例数量、生命周期配置入口点脚本以及脚本的路径。-
对于
ClusterName
,指定要更新的集群名称。 -
对于
InstanceGroupName
-
要更新现有实例组,请指定要更新的实例组名称。
-
要添加新的实例组,请指定一个集群中不存在的新名称。
-
-
对于
InstanceType
-
要更新现有实例组,必须将最初指定的实例类型与组匹配。
-
要添加新实例组,请指定要配置该组的实例类型。
-
-
对于
InstanceCount
-
要更新现有实例组,请指定与所需实例数量相对应的整数。您可以提供更高或更低的值(向下至 0)来向上或向下扩展实例组。
-
要添加新的实例组,请指定一个大于或等于 1 的整数。
-
-
对于
LifeCycleConfig
,您可以同时更改SourceS3Uri
和OnCreat
值,以更新实例组。 -
对于
ExecutionRole
-
要更新现有实例组,请继续使用创建集群时附加的相同 IAM 角色。
-
要添加新的实例组,请指定要附加的 IAM 角色。
-
-
对于
TreadsPerCore
-
更新现有实例组时,请继续使用创建集群时指定的相同值。
-
添加新实例组时,您可以从每个实例类型允许的选项中选择任意值。有关更多信息,请搜索实例类型并参阅《Amazon EC2 用户指南》中参考表中每种实例类型的 CPU 核心数和每 CPU 内核的线程数。
-
下面的代码片段是您可以使用的 JSON 请求文件模板。有关此 API 的请求语法和参数的更多信息,请参阅 UpdateClusterAPI 参考。
// update_cluster.json { // Required "ClusterName": "
name-of-cluster-to-update
", // Required "InstanceGroups": [ { "InstanceGroupName": "name-of-instance-group-to-update
", "InstanceType": "ml.m5.xlarge
", "InstanceCount":1
, "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
",// Optional: Configure an additional storage per instance group.
"InstanceStorageConfigs": [ {// Attach an additional EBS volume to each instance within the instance group.
// The default mount path for the additional EBS volume is /opt/sagemaker.
"EbsVolumeConfig":{// Specify an integer between 1 and 16384 in gigabytes (GB).
"VolumeSizeInGB":integer
, } } ] }, // add more blocks of instance groups as needed { ... } ] } -
-
运行以下
update-cluster
命令提交请求。aws sagemaker update-cluster \ --cli-input-json
file://complete/path/to/update_cluster.json
更新集群的 SageMaker HyperPod 平台软件
运行update-cluster-software以使用 SageMaker HyperPod 服务提供的软件和安全补丁更新现有集群。对于 --cluster-name
,请指定要更新的集群名称或 ARN。
重要
请注意,在运行此 API 之前必须备份您的工作。打补丁过程会用更新的 AMI 替换根卷,这意味着存储在实例根卷中的先前数据将丢失。请务必将实例根卷中的数据备份到 Amazon S3 或 Amazon for Lustre。 FSx 有关更多信息,请参阅 使用提供的备份脚本 SageMaker HyperPod。
aws sagemaker update-cluster-software --cluster-name
your-hyperpod-cluster
此命令调用 UpdateClusterSoftwareAPI。API 调用后,将集群实例 SageMaker HyperPod 更新为使用最新版本,SageMaker HyperPod DLAMI并在集群创建或更新期间指定的 S3 存储桶中运行您的生命周期脚本。 SageMaker HyperPod 服务团队定期推出新SageMaker HyperPod DLAMI产品,以增强安全性和改善用户体验。我们建议您随时更新到最新的 SageMaker HyperPod DLAMI。如需了解 SageMaker HyperPod Future DLAMI 的安全补丁更新,请跟进。Amazon SageMaker HyperPod 发行说明
提示
如果安全补丁失败,您可以按照 描述集群 中的指示运行 DescribeCluster
API,获取失败信息。API。
注意
您只能以编程方式运行此 API。 SageMaker HyperPod 控制台 UI 中未实现修补功能。
使用提供的备份脚本 SageMaker HyperPod
SageMaker HyperPod 提供了一个脚本,用于在 Awsome Distributed T 1.architectures/5.sagemaker-hyperpod/patching-backup.sh
要在打补丁之前将数据备份到 S3 存储桶
sudo bash patching-backup.sh --create
<s3-buckup-bucket-path>
运行该命令后,脚本会检查 squeue
是否有排队作业,如果队列中没有作业则停止 Slurm,备份 mariadb
,并将定义在 LOCAL_ITEMS
下的本地项目复制到磁盘上。您可以向 LOCAL_ITEMS
添加更多文件和目录。
# Define files and directories to back up.
LOCAL_ITEMS=(
"/var/spool/slurmd"
"/var/spool/slurmctld"
"/etc/systemd/system/slurmctld.service"
"/home/ubuntu/backup_slurm_acct_db.sql"
# ... Add more items as needed
)
此外,您还可以在所提供的脚本中添加自定义代码,为您的使用场景备份任何应用程序。
要在打补丁后从 S3 存储桶恢复数据
sudo bash patching-backup.sh --restore
<s3-buckup-bucket-path>
缩小集群
您可以缩减 SageMaker HyperPod 集群中的实例数量或删除实例组,以优化资源分配或降低成本。
您可以使用 UpdateCluster
API 操作将实例组中的实例随机终止到指定数量,或者使用 BatchDeleteClusterNodes
API 操作终止特定实例,从而缩小规模。您也可以使用 UpdateCluster
API 完全移除整个实例组。有关如何使用这些方法缩小规模的更多信息,请参阅缩小集 SageMaker HyperPod 群。
注意
您无法删除配置为 Slurm 控制器节点的实例。尝试删除 Slurm 控制器节点会导致验证错误和错误代码。NODE_ID_IN_USE
删除集群
运行 delete-cluster 删除集群。您可以指定集群的名称或 ARN。
aws sagemaker delete-cluster --cluster-name
your-hyperpod-cluster