View a markdown version of this page

深度运行状况检查 - 亚马逊 SageMaker AI

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

深度运行状况检查

SageMaker HyperPod 对 Slurm-orchestrated集群实例执行深度运行状况检查,以确保底层硬件和基础设施的可靠性和稳定性。在创建实例或将实例添加到集群(启动时)时,可以自动运行深度运行状况检查,也可以使用 StartClusterHealthCheckAPI 随时手动触发深度运行状况检查(按需)。这种主动方法有助于识别和缓解整个集群生命周期中的潜在问题。

在深度运行状况检查期间,受影响的节点会被置于 Slurm 维护预留中,以防止在其上调度作业。所有检查通过后,节点将从预留中释放并可用于工作负载。

重要

要使用深度运行状况检查,必须更新到最新的 AMI 版本。运行UpdateClusterSoftware以更新到最新版本的 AMI。如果您在较旧的 AMI 版本上运行,则深度运行状况检查可能无法按预期运行。

深度健康检查类型

SageMaker HyperPod 支持 Slurm 集群的两类深度运行状况检查:

  • InstanceStress— 运行实例级测试,包括硬件压力测试(CPU、内存、磁盘、 GPU/PCI 验证)、DCGM GPU 诊断和 EFA 环回连接。这可以验证单个节点硬件的运行状况。

  • InstanceConnectivity— 在多个节点上运行集群级 NCCL(NVIDIA 集体通信库)测试,以验证节点间 GPU 通信性能。只有具有多节点 GPU 通信功能的实例才支持此检查。

由以下人员完成的深度运行状况检查清单 SageMaker HyperPod

SageMaker HyperPod 运行以下深度运行状况检查。

Instance-level 深度运行状况检查 (InstanceStress)

类别 实用程序名称 实例类型兼容性 说明
Accelerator GPU/NVLink count GPU 验证 GPU/NVLink 计数。
Accelerator 第 4 级 DCGM 诊断 GPU 通过运行第 4 级 DCGM(NVIDIA 数据中心 GPU 管理器)诊断程序(包括额外的内存测试),评测 NVIDIA GPU 的运行状况和功能。典型持续时间:大约 45-90 分钟,具体取决于 GPU 数量。
Network EFA GPU 在连接的 EFA 设备上运行 EFA 环回带宽和延迟测试。典型持续时间:约 2-5 分钟。

Cluster-level 深度运行状况检查 (InstanceConnectivity)

类别 实用程序名称 实例类型兼容性 说明
Accelerator NCCL 测试 GPU 在多个节点上运行 NCCL all_reduce 性能测试,以验证节点间 GPU 通信带宽。典型持续时间:约 5-15 分钟,具体取决于节点数量。

On-start 深度健康检查

On-start 在首次配置实例时(集群创建期间或通过UpdateCluster添加新实例时),深度运行状况检查会自动运行。这样可以确保每个节点在接受工作负载之前都通过硬件验证。

启用启动时的深度运行状况检查

要启用启动时的深度运行状况检查,请在创建或更新集群时在实例组配置中指定OnStartDeepHealthChecks参数。

示例:创建具有启动时深度运行状况检查的集群

aws sagemaker create-cluster \ --cluster-name my-slurm-cluster \ --instance-groups '[ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket/lifecycle-scripts/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/my-role", "ThreadsPerCore": 1 }, { "InstanceGroupName": "worker-group", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 4, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket/lifecycle-scripts/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/my-role", "ThreadsPerCore": 1, "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"] } ]' \ --vpc-config '{"SecurityGroupIds":["sg-12345678"],"Subnets":["subnet-12345678"]}'

启动时的深度运行状况检查期间会发生什么

启用启动时深度运行状况检查后,将发生以下过程:

  1. 节点配置:启动新实例并执行生命周期脚本。

  2. 节点隔离: HyperPod 集群代理将新节点放在 Slurm 维护预留中 (hyperpod-deep-health-check),并将其添加到分区中hyperpod-system-maintenance。节点标有 Slurm 功能。SageMakerDeepHealthCheck:InProgress这样可以防止在测试期间在这些节点上调度作业。

  3. 测试执行:作为InstanceStress检查的一部分,在每个节点上运行以下测试:

    • HARDWARDE_CHEC K:运行stress-ng进行 CPU、内存和磁盘压力测试,然后进行 GPU 和 PCI 设备计数验证。典型持续时间:约 1-2 分钟。

    • DCGM:在第 4 级运行 NVIDIA DCGM 诊断程序,包括 GPU 内存测试。典型持续时间:大约 45-90 分钟,具体取决于 GPU 数量。

    • EFA:运行 EFA 环回带宽和延迟测试。典型持续时间:约 2-5 分钟。

    如果InstanceConnectivity同时启用,则会执行以下附加测试:

    • NCCL:在多个节点上运行 NCCL all_reduce 性能测试,以验证节点间 GPU 通信带宽。典型持续时间:约 5-15 分钟,具体取决于节点数量。

  4. 结果处理

    • 通过:将节点从维护预留中移除,深度运行状况检查功能被清除,并且该节点可用于其分配的分区中的作业。

    • 失败:节点保持隔离。 SageMaker HyperPod 自动替换故障节点并对替换节点进行深度运行状况检查。

集群会过渡到控制器节点至少运行InService一次。工作节点在测试期间显示DeepHealthCheckInProgress状态,并在通过Running后过渡到。

监控启动时的深度运行状况检查

您可以使用 Amazon AI AP SageMaker I 或 Slurm 命令监控启动时深度运行状况检查的状态。

使用检查节点状态 AWS Command Line Interface

aws sagemaker list-cluster-nodes \ --cluster-name my-slurm-cluster

正在接受深度运行状况检查的节点显示InstanceStatus.StatusDeepHealthCheckInProgress

通过控制器节点上的 SSM 检查 Slurm 状态

# View node states sinfo -a -N -l # View maintenance reservation scontrol show reservations # View running DHC jobs squeue -a

接受深度运行状况检查的节点显示在hyperpod-deep-health-check预留和hyperpod-system-maintenance分区中。

向启用启动时深度运行状况检查的集群添加节点

当您向上扩展已OnStartDeepHealthChecks配置的集群时,新节点在接受工作负载之前会自动进行深度运行状况检查。现有节点和正在运行的作业不受影响。

aws sagemaker update-cluster \ --cluster-name my-slurm-cluster \ --instance-groups '[ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket/lifecycle-scripts/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/my-role", "ThreadsPerCore": 1 }, { "InstanceGroupName": "worker-group", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 8, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket/lifecycle-scripts/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/my-role", "ThreadsPerCore": 1, "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"] } ]'

运行深度运行状况检查时,新节点在维护预留中处于隔离状态。需要新节点提供额外容量的任务要等到这些节点通过深度运行状况检查并变为可用。现有可用节点可以满足的任务不受影响。

On-demand 深度健康检查

On-demand 深度运行状况检查允许您随时使用 StartClusterHealthCheckAPI 在现有集群节点上触发硬件验证。这对于定期进行运行状况验证或在出现疑似硬件问题之后非常有用。

注意

On-demand NodeProvisioningMode设置为的集群不支持深度运行状况检查Continuous

从控制台按需运行深度运行状况检查

您可以直接从 SageMaker AI 控制台对 HyperPod 集群实例进行深度运行状况检查。

从控制台按需运行深度运行状况检查
  1. 在 SageMaker AI 控制台打开 A SageMaker I 控制台

  2. 在导航窗格中 HyperPod,选择集群

  3. 选择您的集群名称以打开集群详细信息页面。

  4. 在 Inst an ces 表中,选择一个或多个要对其进行深度运行状况检查的实例。

    注意

    支持的实例系列包括 g5、p4 和 p5。 Non-accelerated 实例会自动跳过。

  5. 选择 “操作”,然后选择 “运行深度运行状况检查”。

  6. 选择压力检查、连接检查或两者兼而有之:

    • 压力检查-在负载下验证加速器硬件(对应于InstanceStress)。

    • 连接检查-验证节点间网络通信(对应于InstanceConnectivity)。

  7. 选择 “运行运行状况检查”。

成功横幅确认检查已启动。在检查期间,实例不可用于工作负载,这可能需要一个多小时。在 Instances 表中监控实例状态 — 它显示运行时正在进行的深度运行状况检查。发现问题并启用自动恢复后, SageMaker HyperPod会自动重启或替换故障实例。

使用触发按需深度运行状况检查 AWS Command Line Interface

您可以指定要运行哪些实例组和哪些检查。每个集群一次只能激活一个按需深度运行状况检查请求。

aws sagemaker start-cluster-health-check \ --cluster-name my-slurm-cluster \ --deep-health-check-configurations '[ { "InstanceGroupName": "worker-group", "DeepHealthChecks": ["InstanceStress", "InstanceConnectivity"] } ]'

正在运行的工作负载时的行为

在运行作业的节点上触发按需深度运行状况检查时:

  • 正在运行的作业不会中断或终止。

  • 深度运行状况检查已排队,等待当前任务完成。如果正在运行的作业未在 10 分钟内完成,则该节点将从深度运行状况检查中跳过。

  • 将节点置于维护预留中,以防止在测试期间安排新作业。

深度运行状况检查日志

以下是 SageMaker HyperPod 深度运行状况检查的示例日志。

Cluster-level logs

集群级别的深度运行状况检查日志存储在您的 CloudWatch 日志组中,网址为。/aws/sagemaker/Clusters/<cluster_name>/<cluster_id>

日志流记录在 DeepHealthCheckResults/<log_stream_id> 中。

Instance-level logs

在每个节点上,深度运行状况检查日志存储在/var/log/aws/clusters/sagemaker-deep-health-check.log

您可以通过 SSM 访问日志:

aws ssm start-session \ --target "sagemaker-cluster:<cluster_id>_<instance_group>-<instance_id>"

然后查看日志:

cat /var/log/aws/clusters/sagemaker-deep-health-check.log

硬件检查输出示例

2026-03-29T18:03:14Z info Executing Hardware stress check with command: stress-ng 2026-03-29T18:04:20Z info stress-ng success 2026-03-29T18:04:20Z info GpuPci Count check success

DCGM 输出示例

2026-03-29T18:35:02Z info DCGM diagnostic health summary: dcgmCheckLevel: 4 dcgmVersion: 3.3.7 gpuDriverVersion: 535.183.01 gpuDeviceIds: [2237] replacementRequired: false rebootRequired: false

EFA 输出示例

2026-03-29T18:36:28Z info EFA Loopback check passed for device: rdmap0s29 MaxBw: 58.59, AvgBw: 32.42, MaxTypicalLat: 30.87, AvgLat: 21.63

深度运行状况检查失败输出示例

{ "level": "error", "ts": "2026-03-29T19:15:22Z", "msg": "Encountered FaultyInstance. Replace the Instance. Region: us-west-2, InstanceType: ml.g5.8xlarge. ERROR: Bandwidth has less than threshold: Expected minimum threshold: 80, NCCL Test output Bw: 30" }

Auto-resume 深度运行状况检查时的行为

如果不启用深度运行状况检查,则在自动恢复期间替换节点时,替换节点会立即添加到集群中,并且可以立即在集群上安排自动恢复的作业。

启用深度运行状况检查后,替换节点必须通过所有配置的深度运行状况检查才能可用。但是,自动恢复的作业不必等待替换节点,可以将其安排在群集中的任何其他可用节点上。只有在没有其他节点可用时,作业才会等待。

其他注意事项

  • 深度运行状况检查需要最新的 AMI 版本。在启用深度运行状况检查之前,请运行UpdateClusterSoftware以更新您的集群。

  • On-demand NodeProvisioningMode设置为的集群不支持深度运行状况检查Continuous

  • 深度运行状况检查仅在工作节点上运行。控制器和登录节点不受深度运行状况检查的约束。

  • 每个集群一次只能激活一个按需深度运行状况检查请求。

  • 如果按需检查触发节点重启或替换,则替换节点只有在实例组上启用后OnStartDeepHealthChecks才会运行深度运行状况检查。否则,该节点将在不重新运行深度运行状况检查的情况下重新加入。