

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

# 使用 Slurm 手動取代或重新啟動節點
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance"></a>

本節討論何時應手動重新啟動或取代節點，並說明如何執行兩者。

## 手動重新啟動或取代節點的時機
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-when"></a>

HyperPod 自動繼續功能會監控 Slurm 節點的狀態是否變成 `fail` 或 `down`。您可以執行 `sinfo` 來檢查 Slurm 節點的狀態。

如果節點仍然卡住或沒有回應，且自動恢復程序無法復原，您可以手動啟動復原。重新啟動和取代節點之間的選擇取決於問題的性質。遇到暫時性或軟體相關問題時，請考慮重新啟動，例如系統停止回應、記憶體流失、GPU 驅動程式問題、核心更新或掛載程序。不過，如果您遇到持續性或硬體相關問題，例如 GPUs 失敗、記憶體或聯網故障、重複運作狀態檢查失敗，或在多次重新開機嘗試後仍沒有回應的節點，則節點取代是更適當的解決方案。

## 手動重新啟動或取代節點的方法
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-ways"></a>

SageMaker HyperPod 提供兩種手動節點復原的方法。偏好的方法是使用 SageMaker HyperPod 重新啟動和取代 APIs，它提供更快速、更透明的復原程序，適用於所有協調器。或者，您可以使用傳統的 Slurm 命令，例如 `scontrol update`，雖然此舊版方法需要直接存取 Slurm 的控制器節點。這兩種方法都會啟用相同的 SageMaker HyperPod 復原程序。

## 使用重新啟動 API 手動重新啟動節點
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-reboot-api"></a>

 您可以使用 **BatchRebootClusterNodes** 手動重新啟動 SageMaker HyperPod 叢集中的故障節點。

 以下是使用 在叢集的兩個執行個體上執行重新啟動操作的範例 AWS Command Line Interface：

```
 aws sagemaker batch-reboot-cluster-nodes \
                --cluster-name arn:aws:sagemaker:ap-northeast-1:123456789:cluster/test-cluster \
                --node-ids i-0123456789abcdef0 i-0fedcba9876543210
```

## 使用取代 API 手動取代節點
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-replace-api"></a>

 您可以使用 **BatchReplaceClusterNodes** 手動取代 SageMaker HyperPod 叢集中的故障節點。

 以下是使用 在叢集的兩個執行個體上執行取代操作的範例 AWS Command Line Interface：

```
 aws sagemaker batch-replace-cluster-nodes \
                --cluster-name arn:aws:sagemaker:ap-northeast-1:123456789:cluster/test-cluster \
                --node-ids i-0123456789abcdef0 i-0fedcba9876543210
```

## 使用 Slurm 手動重新啟動節點
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-reboot"></a>

您也可以使用 scontrol Slurm 命令來觸發節點復原。這些命令會直接與 Slurm 控制平面互動，並叫用相同的基礎 SageMaker HyperPod 復原機制。

在下列命令中，將 <ip-ipv4> 取代為您要重新啟動之故障執行個體的 Slurm 節點名稱 （主機名稱）。

```
scontrol update node={{<ip-ipv4>}} state={{fail}} reason="Action:Reboot"
```

這會將節點標記為具有指定原因的失敗。SageMaker HyperPod 偵測到此情況並重新啟動執行個體。避免在操作期間變更節點狀態或重新啟動 Slurm 控制器。

## 使用 Slurm 手動取代節點
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-replace"></a>

您可以使用 scontrol 更新命令來取代節點，如下所示。

在下列命令中，將 `{{<ip-ipv4>}}`取代為您要取代之故障執行個體的 Slurm 節點名稱 （主機名稱）。

```
scontrol update node={{<ip-ipv4>}} state={{fail}} reason="Action:Replace"
```

執行此命令後，節點將進入 `fail` 狀態，等待目前執行中的任務完成，以運作狀態良好的執行個體取代，並使用相同的主機名稱復原。此程序需要一些時間，取決於可用區域中的可用執行個體，以及執行生命週期指令碼所需的時間。在更新和取代過程中，避免再次手動變更節點狀態或重新啟動 Slurm 控制器；這樣做可能會導致取代失敗。如果節點長時間未復原也未變成 `idle` 狀態，請聯絡 [AWS Support](https://console.aws.amazon.com/support/)。

## 手動強制變更節點
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-force"></a>

如果故障節點持續卡在 `fail` 狀態，您可以嘗試的最後手段是手動強制將節點狀態變更為 `down`。這需要管理員權限 (sudo 許可)。

**警告**  
在執行下列命令之前，請謹慎進行，因為它會強制刪除所有任務，而且您可能會失去所有未儲存的工作。

```
scontrol update node={{<ip-ipv4>}} state={{down}} reason="Action:Replace"
```