

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

# 深度运行状况检查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks"></a>

SageMaker HyperPod 对 Slurm-orchestrated集群实例执行*深度运行状况检查*，以确保底层硬件和基础设施的可靠性和稳定性。在创建实例或将实例添加到集群（*启动*时）时，可以自动运行深度运行状况检查，也可以使用 [StartClusterHealthCheck](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartClusterHealthCheck.html)API 随时手动触发深度运行状况检查（*按需*）。这种主动方法有助于识别和缓解整个集群生命周期中的潜在问题。

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

**重要**  
要使用深度运行状况检查，必须更新到最新的 AMI 版本。运行[UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)以更新到最新版本的 AMI。如果您在较旧的 AMI 版本上运行，则深度运行状况检查可能无法按预期运行。

## 深度健康检查类型
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-types"></a>

SageMaker HyperPod 支持 Slurm 集群的两类深度运行状况检查：
+ **InstanceStress**— 运行实例级测试，包括硬件压力测试（CPU、内存、磁盘、 GPU/PCI 验证）、DCGM GPU 诊断和 EFA 环回连接。这可以验证单个节点硬件的运行状况。
+ **InstanceConnectivity**— 在多个节点上运行集群级 NCCL（NVIDIA 集体通信库）测试，以验证节点间 GPU 通信性能。只有具有多节点 GPU 通信功能的实例才支持此检查。

## 由以下人员完成的深度运行状况检查清单 SageMaker HyperPod
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-list"></a>

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

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


| 类别 | 实用程序名称 | 实例类型兼容性 | 说明 | 
| --- | --- | --- | --- | 
| Accelerator | GPU/NVLink count | GPU | 验证 GPU/NVLink 计数。 | 
| Accelerator | 第 4 级 [DCGM 诊断](https://docs.nvidia.com/datacenter/dcgm/latest/user-guide/dcgm-diagnostics.html) | 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 深度健康检查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-start"></a>

On-start 在首次配置实例时（集群创建期间或通过[UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)添加新实例时），深度运行状况检查会自动运行。这样可以确保每个节点在接受工作负载之前都通过硬件验证。

### 启用启动时的深度运行状况检查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-start-enabling"></a>

要启用启动时的深度运行状况检查，请在创建或更新集群时在实例组配置中指定`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}}"]}'
```

### 启动时的深度运行状况检查期间会发生什么
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-start-process"></a>

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

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

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

1. **测试执行**：作为`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 分钟，具体取决于节点数量。

1. **结果处理**：
   + **通过：将**节点从维护预留中移除，深度运行状况检查功能被清除，并且该节点可用于其分配的分区中的作业。
   + **失败**：节点保持隔离。 SageMaker HyperPod 自动替换故障节点并对替换节点进行深度运行状况检查。

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

### 监控启动时的深度运行状况检查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-start-monitoring"></a>

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

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

```
aws sagemaker list-cluster-nodes \
  --cluster-name {{my-slurm-cluster}}
```

正在接受深度运行状况检查的节点显示`InstanceStatus.Status`为`DeepHealthCheckInProgress`。

**通过控制器节点上的 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`分区中。

### 向启用启动时深度运行状况检查的集群添加节点
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-start-add-nodes"></a>

当您向上扩展已`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 深度健康检查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-demand"></a>

On-demand 深度运行状况检查允许您随时使用 [StartClusterHealthCheck](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartClusterHealthCheck.html)API 在现有集群节点上触发硬件验证。这对于定期进行运行状况验证或在出现疑似硬件问题之后非常有用。

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

### 从控制台按需运行深度运行状况检查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-demand-console"></a>

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

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

1. 在 SageMaker AI 控制台打开 A [SageMaker I 控制台](https://console.aws.amazon.com/sagemaker)。

1. 在导航窗格中 **HyperPod**，选择**集群**。

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

1. 在 Inst **an** ces 表中，选择一个或多个要对其进行深度运行状况检查的实例。
**注意**  
支持的实例系列包括 g5、p4 和 p5。 Non-accelerated 实例会自动跳过。

1. 选择 “**操作**”，然后选择 “**运行深度运行状况检查**”。

1. 选择**压力检查、**连接检查****或两者兼而有之：
   + **压力检查**-在负载下验证加速器硬件（对应于`InstanceStress`）。
   + **连接检查**-验证节点间网络通信（对应于`InstanceConnectivity`）。

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

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

### 使用触发按需深度运行状况检查 AWS Command Line Interface
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-demand-triggering"></a>

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

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

### 正在运行的工作负载时的行为
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-demand-behavior"></a>

在运行作业的节点上触发按需深度运行状况检查时：
+ 正在运行的作业**不会**中断或终止。
+ 深度运行状况检查已排队，等待当前任务完成。如果正在运行的作业未在 10 分钟内完成，则该节点将从深度运行状况检查中跳过。
+ 将节点置于维护预留中，以防止在测试期间安排新作业。

## 深度运行状况检查日志
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-logs"></a>

以下是 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 深度运行状况检查时的行为
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-auto-resume"></a>

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

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

## 其他注意事项
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-limitations"></a>
+ 深度运行状况检查需要最新的 AMI 版本。在启用深度运行状况检查之前，请运行[UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)以更新您的集群。
+ On-demand `NodeProvisioningMode`设置为的集群不支持深度运行状况检查`Continuous`。
+ 深度运行状况检查仅在工作节点上运行。控制器和登录节点不受深度运行状况检查的约束。
+ 每个集群一次只能激活一个按需深度运行状况检查请求。
+ 如果按需检查触发节点重启或替换，则替换节点只有在实例组上启用后`OnStartDeepHealthChecks`才会运行深度运行状况检查。否则，该节点将在不重新运行深度运行状况检查的情况下重新加入。