

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# `kubectl` を使用したジョブの実行
<a name="sagemaker-hyperpod-eks-run-jobs-kubectl"></a>

**注記**  
トレーニングジョブの自動再開には、Kubeflow トレーニングオペレーターリリースバージョン `1.7.0`、`1.8.0`、または `1.8.1` が必要です。

Helm チャートを使用してクラスターに Kubeflow Training Operator をインストールする必要がある点に注意してください。詳細については、「[Helm を使用して Amazon EKS クラスターにパッケージをインストールする](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md)」を参照してください。次のコマンドを実行して、Kubeflow Training Operator コントロールプレーンが正しく設定されていることを確認します。

```
kubectl get pods -n kubeflow
```

これにより、次のような出力が返されます。

```
NAME                                             READY   STATUS    RESTARTS   AGE
training-operator-658c68d697-46zmn               1/1     Running   0          90s
```

**トレーニングジョブを送信するには**

トレーニングジョブを実行するには、ジョブ設定ファイルを準備し、次のように [https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) コマンドを実行します。

```
kubectl apply -f /path/to/training_job.yaml
```

**トレーニングジョブを記述するには**

EKS クラスターに送信されたジョブの詳細を取得するには、次のコマンドを使用します。ジョブの送信時間、完了時間、ジョブステータス、設定の詳細などのジョブ情報を返します。

```
kubectl get -o yaml training-job -n kubeflow
```

**トレーニングジョブを停止して EKS リソースを削除するには**

トレーニングジョブを停止するには、kubectl delete を使用します。以下は、設定ファイル `pytorch_job_simple.yaml` から作成されたトレーニングジョブを停止する例です。

```
kubectl delete -f /path/to/training_job.yaml 
```

以下のような出力が返されます。

```
pytorchjob.kubeflow.org "training-job" deleted
```

**ジョブの自動再開を有効にするには**

SageMaker HyperPod では、Kubernetes ジョブのジョブ自動再開機能がサポートされており、Kubeflow Training Operator コントロールプレーンと統合されます。

クラスター内に、SageMaker HyperPod ヘルスチェックに合格した十分な数のノードがあることを確認します。ノードのテイント `sagemaker.amazonaws.com/node-health-status` を `Schedulable` に設定する必要があります。ジョブ YAML ファイルにノードセレクタを含め、次のように適切な設定のノードを選択することをお勧めします。

```
sagemaker.amazonaws.com/node-health-status: Schedulable
```

次のコードスニペットは、ジョブ自動再開機能を有効にするために Kubeflow PyTorch ジョブ YAML 設定を変更する方法の例です。2 つの注釈を追加し、次のように `restartPolicy` を `OnFailure` に設定する必要があります。

```
apiVersion: "kubeflow.org/v1"
kind: PyTorchJob 
metadata:
    name: pytorch-simple
    namespace: kubeflow
    annotations: { // config for job auto resume
      sagemaker.amazonaws.com/enable-job-auto-resume: "true"
      sagemaker.amazonaws.com/job-max-retry-count: "2"
    }
spec:
  pytorchReplicaSpecs:
  ......
  Worker:
      replicas: 10
      restartPolicy: OnFailure
      template:
          spec:
              nodeSelector:
                  sagemaker.amazonaws.com/node-health-status: Schedulable
```

**ジョブ自動再開ステータスを確認するには**

次のコマンドを実行してジョブ自動再開のステータスを取得します。

```
kubectl describe pytorchjob -n kubeflow <job-name>
```

障害パターンによっては、次のように Kubeflow トレーニングジョブ再起動の 2 つのパターンが表示される場合があります。

**パターン 1**:

```
Start Time:    2024-07-11T05:53:10Z
Events:
  Type     Reason                   Age                    From                   Message
  ----     ------                   ----                   ----                   -------
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-0
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-1
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m59s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Master replica(s) failed.
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-0
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-1
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m58s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Worker replica(s) failed.
```

**パターン 2**: 

```
Events:
  Type    Reason                   Age    From                   Message
  ----    ------                   ----   ----                   -------
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-master-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-master-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-master-0
```