

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 深層運作狀態檢查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks"></a>

SageMaker HyperPod 會對 Slurm 協調叢集執行個體執行*深度運作狀態檢查*，以確保基礎硬體和基礎設施的可靠性和穩定性。建立執行個體或將執行個體新增至叢集時 *（啟動*時），可以自動執行深層運作狀態檢查，或者您可以隨時使用 [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 Collective Communications Library) 測試，以驗證節點間 GPU 通訊效能。只有具有多節點 GPU 通訊功能的執行個體才支援此檢查。

## SageMaker HyperPod 執行的深層運作狀態檢查清單
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-list"></a>

SageMaker HyperPod 會執行下列深層運作狀態檢查。

**執行個體層級深層運作狀態檢查 (InstanceStress)**


| Category | 公用程式名稱 | 執行個體類型相容性 | 說明 | 
| --- | --- | --- | --- | 
| 加速器 | GPU/NVLink 計數 | GPU | 驗證 GPU/NVLink 計數。 | 
| 加速器 | [DCGM 診斷](https://docs.nvidia.com/datacenter/dcgm/latest/user-guide/dcgm-diagnostics.html)層級 4 | GPU | 在層級 4 執行 DCGM (NVIDIA Data Center GPU Manager) 診斷來評估 NVIDIA GPU 的運作狀態和功能，包括額外的記憶體測試。一般持續時間：約 45-90 分鐘，取決於 GPU 計數。 | 
| 網路 | EFA | GPU | 在連接的 EFA 裝置上執行 EFA 迴路頻寬和延遲測試。一般持續時間：\~2-5 分鐘。 | 

**叢集層級深層運作狀態檢查 (InstanceConnectivity)**


| Category | 公用程式名稱 | 執行個體類型相容性 | 說明 | 
| --- | --- | --- | --- | 
| 加速器 | NCCL 測試 | GPU | 跨多個節點執行 NCCL all\_reduce效能測試，以驗證節點間 GPU 通訊頻寬。一般持續時間：\~5-15 分鐘，取決於節點計數。 | 

## 啟動時的深度運作狀態檢查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-start"></a>

當第一次佈建執行個體時，即會在叢集建立期間或透過 [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`檢查的一部分：
   + **HARDWARE\_CHECK**：執行 CPU、記憶體和磁碟壓力測試，接著`stress-ng`進行 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 SageMaker AI API 或 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"]
    }
  ]'
```

執行深層運作狀態檢查時，新的節點會在維護保留中隔離。需要新節點額外容量的任務會等待這些節點通過深度運作狀態檢查並可供使用。現有可用節點可滿足的任務不會受到影響。

## 隨需深層運作狀態檢查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-demand"></a>

隨需深層運作狀態檢查可讓您隨時使用 [StartClusterHealthCheck](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartClusterHealthCheck.html) API 觸發現有叢集節點的硬體驗證。這對於定期運作狀態驗證或在可疑的硬體問題之後非常有用。

**注意**  
將 `NodeProvisioningMode`設為 的叢集不支援隨需深層運作狀態檢查`Continuous`。

### 從主控台執行隨需深層運作狀態檢查
<a name="sagemaker-hyperpod-resiliency-slurm-deep-health-checks-on-demand-console"></a>

您可以直接從 SageMaker AI 主控台在 HyperPod 叢集執行個體上執行深度運作狀態檢查。

**從主控台執行隨需深層運作狀態檢查**

1. 在 SageMaker AI 主控台開啟 [SageMaker AI 主控台](https://console.aws.amazon.com/sagemaker)。

1. 在導覽窗格中的 **HyperPod** 下，選擇**叢集**。

1. 選擇叢集的名稱以開啟叢集詳細資訊頁面。

1. 在**執行個體**資料表中，選取要執行深度運作狀態檢查的一或多個執行個體。
**注意**  
支援的執行個體系列包括 g5、p4 和 p5。非加速執行個體會自動略過。

1. 選擇**動作**，然後選擇**執行深層運作狀態檢查**。

1. 選取**壓力檢查**、**連線檢查**或兩者：
   + **壓力檢查** — 驗證負載下的加速器硬體 （對應至 `InstanceStress`)。
   + **連線檢查** — 驗證節點間網路通訊 （對應至 `InstanceConnectivity`)。

1. 選擇**執行運作狀態檢查**。

成功橫幅會確認檢查已啟動。執行個體在檢查期間不適用於工作負載，這可能需要一小時的時間。在執行個體資料表中監控**執行個體**狀態 — 它顯示執行時**正在進行的深層運作狀態檢查**。發現問題並啟用自動復原時，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 深層運作狀態檢查的範例日誌。

**叢集層級日誌**

叢集層級的深度運作狀態檢查日誌會存放在 的 CloudWatch 日誌群組中`/aws/sagemaker/Clusters/<cluster_name>/<cluster_id>`。

日誌串流會記錄在 `DeepHealthCheckResults/<log_stream_id>`。

**執行個體層級日誌**

在每個節點上，深度運作狀態檢查日誌會存放在 `/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
```

**範例 HARDWARE\_CHECK 輸出**

```
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"
}
```

## 使用深度運作狀態檢查自動恢復行為
<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) 來更新您的叢集。
+ 將 `NodeProvisioningMode`設為 的叢集不支援隨需深層運作狀態檢查`Continuous`。
+ 深度運作狀態檢查僅在工作者節點上執行。控制器和登入節點不需要進行深層運作狀態檢查。
+ 每個叢集一次只能啟用一個隨需深層運作狀態檢查請求。
+ 如果隨需檢查觸發節點重新啟動或取代，取代節點只會在執行個體群組上`OnStartDeepHealthChecks`啟用 的情況下執行深度運作狀態檢查。否則，節點會重新加入，而不重新執行深層運作狀態檢查。