本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SageMaker HyperPod 参考文献
在以下主题 SageMaker HyperPod 中查找有关使用的更多信息和参考资料。
主题
SageMaker HyperPod 定价
以下主题提供有关 SageMaker HyperPod 定价的信息。要了解有关使用 SageMaker HyperPod 实例的每小时价格的更多详细信息,另请参阅 Amazon SageMaker 定价
容量请求
您可以通过 SageMaker AI 分配按需计算容量或预留计算容量以供使用 SageMaker HyperPod。按需创建集群会从 SageMaker AI 按需容量池中分配可用容量。或者,您也可以提交增加配额的请求单,申请预留容量以确保访问权限。 SageMaker AI 会对入站容量请求进行优先级排序,您会收到容量分配的预计时间。
服务计费
当您在上配置计算容量时 SageMaker HyperPod,您需要为容量分配的持续时间付费。 SageMaker HyperPod 账单会显示在您的周年账单中,其中包含容量分配类型(按需、预留)、实例类型和使用实例所花费的时间。
要提交增加配额的请求单,请参阅 SageMaker HyperPod 配额。
SageMaker HyperPod APIs
以下列表是通过 Amazon CLI 或向 SageMaker AI 提交 JSON 格式的操作请求的完整列表 适用于 Python (Boto3) 的 Amazon SDK。 SageMaker HyperPod APIs
SageMaker HyperPod Slurm 配置
HyperPod 支持两种在集群上配置 Slurm 的方法。选择最适合您需求的方法。
| 方法 | 描述 | 推荐用于 |
| API 驱动的配置 | 直接在 CreateCluster 和 UpdateCluster API 请求中定义 Slurm 配置 | 新集群;简化管理 |
| 传统配置 | 使用存储在 Amazon S3 中的单独provisioning_parameters.json文件 |
现有集群;向后兼容 |
API 驱动的 Slurm 配置(推荐)
使用 API 驱动的配置,您可以直接在和 API 请求中定义 Slurm 节点类型、分区分配和文件系统挂载。 CreateCluster UpdateCluster 此方法可提供:
-
单一事实来源 — API 请求中的所有配置
-
没有 S3 文件管理 — 无需创建或维护
provisioning_parameters.json -
内置验证 — API 会在创建集群之前验证 Slurm 拓扑
-
漂移检测-检测未经授权的更改
slurm.conf -
Per-instance-group 存储 — 为不同的 FSx 实例组配置不同的文件系统
-
FSx 支持 OpenZFS — 除了 Lustre 之外,还要装载 OpenZFS 文件系统 FSx
SlurmConfig (每个实例组)
SlurmConfig添加到每个实例组以定义 Slurm 节点类型和分区分配。
"SlurmConfig": { "NodeType": "Controller | Login | Compute", "PartitionNames": ["string"] }
参数:
-
NodeType– 必需。此实例组的 Slurm 节点类型。有效值:-
Controller— Slurm 控制器(头部)节点。运行slurmctld守护程序。只有一个实例组必须具有这种节点类型。 -
Login— 用于用户访问的登录节点。可选。最多一个实例组可以有这种节点类型。 -
Compute— 执行作业的工作节点。可以有多个具有此节点类型的实例组。
重要
NodeType是不可变的。一旦在集群创建期间进行设置,就无法更改。要使用不同的节点类型,请创建一个新的实例组。 -
-
PartitionNames:此操作设有条件。Slurm 分区名称的数组。对于Compute节点类型是必需的;对于Controller或Login节点类型不允许。目前支持每个实例组使用单个分区名称。注意
除指定分区外,所有节点都会自动添加到通用
dev分区中。
示例:
{ "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 8, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-bucket/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole" }
Orchestrator.Slurm(集群级别)
Orchestrator.Slurm添加到群集配置中以指定如何 HyperPod 管理slurm.conf文件。
"Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed | Overwrite | Merge" } }
参数:
-
SlurmConfigStrategy— 提供时Orchestrator.Slurm为必填项。控制如何 HyperPod 管理控制器节点上的slurm.conf文件。有效值:-
Managed(默认)— HyperPod 完全控制中的分区节点映射。slurm.conf已启用漂移检测:如果电流slurm.conf与预期配置不同, UpdateCluster 则会失败并显示错误。如果您想 HyperPod 成为 Slurm 配置的单一事实来源,请使用此策略。 -
Overwrite— HyperPod 强制应用 API 配置,覆盖对的任何手动更改。slurm.conf偏移检测已禁用。使用此策略可以从偏移中恢复或将集群重置为已知状态。 -
Merge— HyperPod 保留手动slurm.conf更改并将其与 API 配置合并。偏移检测已禁用。如果您需要手动更改 Slurm 配置,这些更改应在更新后持续存在,请使用此策略。
-
注意
Orchestrator.Slurm如果请求中省略,则默认行为为Managed策略。
提示
您可以SlurmConfigStrategy随时使用进行更改 UpdateCluster。不存在对特定策略的锁定。
示例:
{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [...], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }
SlurmConfigStrategy 比较
| Strategy | 漂移检测 | 手动更改 | 使用场景 |
Managed |
启用-如果检测到偏差,则阻止更新 | 阻止 | HyperPod 管理 |
Overwrite |
已禁用 | 已覆盖 | 从漂移中恢复;重置为已知状态 |
Merge |
已禁用 | 已保存 | 具有自定义slurm.conf需求的高级用户 |
FSx 通过 InstanceStorageConfigs
使用 API 驱动的配置,您可以使用为每个实例组配置 FSx 文件系统。InstanceStorageConfigs这允许不同的实例组挂载不同的文件系统。
先决条件:
-
您的集群必须使用自定义 VPC(通过
VpcConfig)。 FSx 文件系统位于您的 VPC 中,平台管理的 VPC 无法访问它们。 -
必须至少有一个
SlurmConfig带的实例组NodeType: Controller。
FsxLustreConfig
FSx 为实例组配置 Lustre 文件系统挂载。
"InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "string", "MountPath": "string", "MountName": "string" } } ]
参数:
-
DnsName– 必需。 FSx 适用于 Lustre 文件系统的 DNS 名称。示例:fs-0abc123def456789.fsx.us-west-2.amazonaws.com -
MountPath:可选。实例上的本地挂载路径。默认值:/fsx -
MountName– 必需。 FSx 适用于 Lustre 文件系统的挂载名称。您可以在Amazon FSx 控制台中或通过运行来找到它aws fsx describe-file-systems。
FsxOpenZfsConfig
FSx 为实例组配置 OpenZFS 文件系统挂载。
"InstanceStorageConfigs": [ { "FsxOpenZfsConfig": { "DnsName": "string", "MountPath": "string" } } ]
参数:
-
DnsName– 必需。 FSx 适用于 OpenZFS 文件系统的 DNS 名称。示例:fs-0xyz987654321.fsx.us-west-2.amazonaws.com -
MountPath:可选。实例上的本地挂载路径。默认值:/home
注意
每个实例组最多可以有一个FsxLustreConfig和一个FsxOpenZfsConfig。
多个文件系统的示例:
{ "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 4, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } }, { "FsxOpenZfsConfig": { "DnsName": "fs-0xyz987654321.fsx.us-west-2.amazonaws.com", "MountPath": "/shared" } }, { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-bucket/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole" }
重要
FSx 配置更改仅在节点配置期间生效。现有节点保留其原始 FSx 配置。要将新 FSx 配置应用于所有节点,请将实例组缩小到 0,然后向上扩展。
完整的 API 驱动配置示例
以下示例显示了使用 API 驱动的 Slurm 配置的完整 CreateCluster 请求:
{ "ClusterName": "ml-training-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 }, { "InstanceGroupName": "login", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 }, { "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 8, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2, "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"] }, { "InstanceGroupName": "cpu-compute", "InstanceType": "ml.c5.18xlarge", "InstanceCount": 4, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["cpu-preprocessing"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a", "subnet-0abc123def456789b"] }, "Tags": [ { "Key": "Project", "Value": "ML-Training" } ] }
要了解有关使用 API 驱动配置的更多信息,请参阅。使用生命周期脚本自定义 SageMaker HyperPod 集群
旧配置:配置_parameters.json
注意
该provisioning_parameters.json方法是开启配置 Slurm 的传统方法。 HyperPod对于新集群,我们建议使用上述 API 驱动的配置方法。为了向后兼容,仍然完全支持传统方法。
使用传统方法,您可以创建一个名provisioning_parameters.json为的 Slurm 配置文件,并将其作为生命周期脚本的一部分上传到 Amazon S3。 HyperPod 在创建集群时读取此文件以配置 Slurm 节点。
用于配置_parameters.json 的配置表单
以下代码是 Slurm 配置表单,你应该准备好在集群上正确设置 Slurm 节点。 HyperPod 在创建集群时,您应填写此表格并将其作为生命周期脚本集的一部分上传。要了解在整个 HyperPod 集群创建过程中应如何准备此表单,请参阅使用生命周期脚本自定义 SageMaker HyperPod 集群。
// Save as provisioning_parameters.json. { "version": "1.0.0", "workload_manager": "slurm", "controller_group": "string", "login_group": "string", "worker_groups": [ { "instance_group_name": "string", "partition_name": "string" } ], "fsx_dns_name": "string", "fsx_mountname": "string" }
参数:
-
version– 必需。这是 HyperPod 配置参数表单的版本。保持1.0.0。 -
workload_manager– 必需。这是为了指定要在 HyperPod 集群上配置哪个工作负载管理器。保持slurm。 -
controller_group– 必需。这是为了指定要分配给 Slurm 控制器(头)节点的 HyperPod 集群实例组的名称。 -
login_group:可选。这是为了指定要分配给 Slurm 登录节点的 HyperPod 集群实例组的名称。 -
worker_groups– 必需。这用于在集群上设置 Slurm 工作节点(计算)。 HyperPod-
instance_group_name– 必需。这是为了指定要分配给 Slurm worker(计算)节点的 HyperPod 实例组的名称。 -
partition_name– 必需。用于为节点指定分区名称。
-
-
fsx_dns_name:可选。如果您想在 HyperPod 集群上设置 Slurm 节点以与 Amazon 通信 FSx,请指定 FSx DNS 名称。 -
fsx_mountname:可选。如果您想在 HyperPod 集群上设置 Slurm 节点以与 Amazon 通信 FSx,请指定 FSx 挂载名称。
比较:API 驱动的配置与传统配置
| 功能 | API 驱动(推荐) | Legacy(配置参数.json) |
| 配置位置 | CreateCluster API 请求 | S3 文件 |
| FSx 为了光泽 | 是 — 按实例组计算 | 是 — 仅限集群范围 |
| FSx 适用于 OpenZFS | 是 — 按实例组计算 | 否 — 不支持 |
| 内置验证 | 是 | 否 |
| 偏差检测 | 是-(托管策略) | 否 |
| S3 文件管理 | 非必需 | 必需 |
| 生命周期脚本的复杂性 | 简化了 | 需要完整的 SLURM 设置 |
SageMaker HyperPod DLAMI
SageMaker HyperPod 基于以下条件运行 DLAMI:
-
基于 Amazon Linux 2 的 AMI,用于与 Amazon EKS 编排。
SageMaker HyperPod DLAMI 与其他软件包捆绑在一起,用于支持 Slurm、Kubernetes、依赖项 SageMaker HyperPod 和集群软件包等开源工具,以支持集群运行状况检查和自动恢复等弹性功能。要跟进 HyperPod 服务团队分发的 HyperPod 软件更新 DLAMIs,请参阅亚马逊 SageMaker HyperPod 发行说明。
SageMaker HyperPod API 权限参考
重要
允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。之所以需要为资源添加标签的权限,是因为 Studio 和 Studio Classic 会自动为创建的任何资源添加标签。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记,则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息,请参阅 提供标记 A SageMaker I 资源的权限。
Amazon 亚马逊 A SageMaker I 的托管策略授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。
当您设置访问控制以允许运行 SageMaker HyperPod API 操作并编写可附加到 IAM 用户以供云管理员使用的权限策略时,请使用下表作为参考。
| 亚马逊 SageMaker API 操作 | 所需权限 (API 操作) | 资源 |
| CreateCluster | sagemaker:CreateCluster |
arn:aws:sagemaker: |
| DeleteCluster | sagemaker:DeleteCluster |
arn:aws:sagemaker: |
| DescribeCluster | sagemaker:DescribeCluster |
arn:aws:sagemaker: |
| DescribeClusterNode | sagemaker:DescribeClusterNode |
arn:aws:sagemaker: |
| ListClusterNodes | sagemaker:ListClusterNodes |
arn:aws:sagemaker: |
| ListClusters | sagemaker:ListClusters |
arn:aws:sagemaker: |
| UpdateCluster | sagemaker:UpdateCluster |
arn:aws:sagemaker: |
| UpdateClusterSoftware | sagemaker:UpdateClusterSoftware |
arn:aws:sagemaker: |
有关权限和资源类型的完整列表 SageMaker APIs,请参阅《Amazon 服务授权参考》中的 Amazon A SageMaker I 的操作、资源和条件密钥。
SageMaker HyperPod 中的命令 Amazon CLI
以下是用于 SageMaker HyperPod 运行核心 HyperPod API 操作的 Amazon CLI 命令。
SageMaker HyperPod 中的 Python 模块 适用于 Python (Boto3) 的 Amazon SDK
以下是 SageMaker AI 运行核心 HyperPod API 操作的 适用于 Python (Boto3) 的 Amazon SDK 客户端方法。