使用 AWS CLI - Amazon SageMaker

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

使用 AWS CLI

以下主题提供了如何以JSON格式写入 SageMaker HyperPod API请求文件并使用 AWS CLI 命令运行请求文件的指导。

创建新集群

  1. 准备生命周期配置脚本并将其上传到 S3 存储桶,例如s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/。以下步骤 2 假设在指定的 S3 存储桶on_create.sh中有一个名为的入口点脚本。

    重要

    请务必将 S3 路径设置为开头s3://sagemaker-IAM的角色 SageMaker HyperPodAmazonSageMakerClusterInstanceRolePolicy连接托管,允许访问带有特定前缀sagemaker-的 S3 存储桶。

  2. 准备JSON格式的CreateClusterAPI请求文件。您应将实例组配置为与您在文件中设计的 Slurm 集群相匹配,该provisioning_params.json文件将在集群创建期间作为运行一组生命周期脚本的一部分使用。要了解更多信息,请参阅 使用生命周期脚本自定义 SageMaker HyperPod集群。以下模板有两个实例组,可以满足 Slurm 集群的最低要求:一个控制器(头)节点和一个计算(工作节点)。对于ExecutionRole,请ARN提供您使用该部分AmazonSageMakerClusterInstanceRolePolicy中的托管IAM角色创建的角色IAM的角色 SageMaker HyperPod

    // create_cluster.json { "ClusterName": "your-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<amzn-s3-demo-bucket>/<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://sagemaker-<amzn-s3-demo-bucket>/<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

  3. 按如下方式运行创建集群命令。

    aws sagemaker create-cluster \ --cli-input-json file://complete/path/to/create_cluster.json

    这应该会ARN返回新集群的。

描述集群

运行 d escribe-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-id i-111222333444555aa

列出集群

运行 list-clust ers 列出您账户中的所有集群。

aws sagemaker list-clusters

您还可以添加其他标志来向下筛选集群列表。要详细了解此命令在低级别运行的内容以及用于过滤的其他标志,请参阅ListClustersAPI参考资料。

更新集群配置

运行 update-cluster 以更新集群的配置。

  1. 按JSON格式创建UpdateCluster请求文件。确保指定正确的集群名称和实例组名称以进行更新。您可以更改实例类型、实例数量、生命周期配置入口点脚本和脚本路径。

    1. 对于ClusterName,请指定要更新的集群的名称。

    2. 对于 InstanceGroupName

      1. 要更新现有实例组,请指定要更新的实例组的名称。

      2. 要添加新的实例组,请指定集群中不存在的新名称。

    3. 对于 InstanceType

      1. 要更新现有实例组,您必须与最初为该组指定的实例类型相匹配。

      2. 要添加新的实例组,请指定要用来配置该组的实例类型。

    4. 对于 InstanceCount

      1. 要更新现有实例组,请指定一个大于当前实例数的整数。目前,您只能增加实例的数量。

      2. 要添加新的实例组,请指定一个大于或等于 1 的整数。

    5. 对于LifeCycleConfig,您可以根据需要更改SourceS3UriOnCreat值来更新实例组。

    6. 对于 ExecutionRole

      1. 要更新现有实例组,请继续使用您在创建集群时附加的相同IAM角色。

      2. 要添加新的实例组,请指定要附加的IAM角色。

    7. 对于 TreadsPerCore

      1. 要更新现有实例组,请继续使用您在创建集群时指定的值。

      2. 要添加新的实例组,您可以从每个实例类型的允许选项中选择任意值。有关更多信息,请搜索实例类型,并查看《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-<amzn-s3-demo-bucket>/<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 { ... } ] }
  2. 运行以下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。要了解 future 的安全补丁 SageMaker HyperPod DLAMI更新,请跟亚马逊 SageMaker HyperPod 发行说明进。

提示

如果安全补丁失败,您可以按照中的说明运行来检索失败消息描述集群DescribeClusterAPI

注意

你只能以API编程方式运行它。 SageMaker HyperPod 控制台 UI 中未实现修补功能。

使用提供的备份脚本 SageMaker HyperPod

SageMaker HyperPod 提供了一个脚本,用于在 Awsome Distributed T 1.architectures/5.sagemaker-hyperpod/patching-backup.shraining GitHub 存储库中备份和恢复数据。该脚本提供以下两个函数。

在修补之前将数据备份到 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