本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon CLI
以下主题提供了如何以 JSON 格式编写 SageMaker HyperPod API 请求文件并使用 Amazon CLI 命令运行这些文件的指导。
创建新集群
-
准备生命周期配置脚本并将其上传到 S3 存储桶,例如
s3://sagemaker-<your-s3-bucket>/<lifecycle-script-directory>/src/
。以下步骤 2 假设在指定的 S3 存储桶on_create.sh
中有一个名为的入口点脚本。重要
请务必将 S3 路径设置为开头
s3://sagemaker-
。IAM 角色适用于 SageMaker HyperPod已AmazonSageMakerClusterInstanceRolePolicy
连接托管,允许访问带有特定前缀sagemaker-
的 S3 存储桶。 -
准备一个 JSON 格式的 CreateClusterAPI 请求文件。以下请求示例基于步骤 1.2 中定义的组所需的节点。
provisioning_params.json
Slurm 的最低要求是一个控制器和一个工作组。对于ExecutionRole
,请提供您使用部分中的托管AmazonSageMakerClusterInstanceRolePolicy
创建的 IAM 角色的 ARN。IAM 角色适用于 SageMaker HyperPod// create_cluster.json { // Required "ClusterName": "
your-hyperpod-cluster
", // Required "InstanceGroups": [ { "InstanceGroupName": "controller-group
", "InstanceType": "ml.m5.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<your-s3-bucket>/<lifecycle-script-directory>/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
", "ThreadsPerCore": 1 }, { "InstanceGroupName": "worker-group-1
", "InstanceType": "ml.p4d.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<your-s3-bucket>/<lifecycle-script-directory>/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
", "ThreadsPerCore": 1 } ], // Optional "Tags": [ { "Key": "string
", "Value": "string
" } ], // Optional "VpcConfig": { "SecurityGroupIds": [ "string
" ], "Subnets": [ "string
" ] } }根据您通过生命周期脚本设计集群结构的方式,您可以在
InstanceGroups
请求参数下添加和配置多个实例组。对于
Tags
请求参数,您可以添加用于将 SageMaker HyperPod 集群作为 Amazon 资源进行管理的自定义标签。您可以像在其他支持标记的 Amazon 服务中添加标签一样向集群添加标签。要了解有关为 Amazon 资源添加标签的更多信息,请参阅《标记 Amazon 资源用户指南》。在
VpcConfig
请求参数中,指定要使用的 VPC 的信息。有关更多信息,请参阅 (可选) SageMaker HyperPod 使用您的亚马逊 VPC 进行设置。 -
运行以下命令提交
CreateCluster
API 请求。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
以更新集群的配置。
-
创建 JSON 格式的
UpdateCluster
请求文件。确保指定正确的集群名称和实例组名称以进行更新。您可以更改实例类型、实例数量、生命周期配置入口点脚本和脚本路径。-
对于
ClusterName
,请指定要更新的集群的名称。 -
对于
InstanceGroupName
-
要更新现有实例组,请指定要更新的实例组的名称。
-
要添加新的实例组,请指定集群中不存在的新名称。
-
-
对于
InstanceType
-
要更新现有实例组,您必须与最初为该组指定的实例类型相匹配。
-
要添加新的实例组,请指定要用来配置该组的实例类型。
-
-
对于
InstanceCount
-
要更新现有实例组,请指定一个大于当前实例数的整数。目前,您只能增加实例的数量。
-
要添加新的实例组,请指定一个大于或等于 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://sagemaker-<your-s3-bucket>/<lifecycle-script-directory>/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
", "ThreadsPerCore": 1 }, // 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 FSx for Lustre。有关更多信息,请参阅 使用提供的备份脚本 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。 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>
删除集群
运行delete-cluster
以删除集群。您可以指定集群的名称或 ARN。
aws sagemaker delete-cluster --cluster-name
your-hyperpod-cluster