

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# `kubectl`를 사용하여 작업 실행
<a name="sagemaker-hyperpod-eks-run-jobs-kubectl"></a>

**참고**  
훈련 작업 자동 재개에는 Kubeflow Training Operator 릴리스 버전 `1.7.0`, `1.8.0` 또는 `1.8.1`이 필요합니다.

참고로 Helm 차트를 사용하여 클러스터에 Kubeflow 훈련 연산자를 설치해야 합니다. 자세한 내용은 [헬름을 사용하여 Amazon EKS 클러스터에 패키지 설치](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md) 섹션을 참조하세요. 다음 명령을 실행하여 Kubeflow 훈련 운영자 제어 영역이 제대로 설정되었는지 확인합니다.

```
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 삭제를 사용합니다. 다음은 구성 파일 `pytorch_job_simple.yaml`에서 생성된 훈련 작업을 중지하는 예입니다.

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

이는 다음 출력을 반환해야 합니다.

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

**작업 자동 재개를 활성화하려면**

SageMaker HyperPod는 Kubernetes 작업에 대한 작업 자동 재개 기능을 지원하며 Kubeflow 훈련 운영자 제어 영역과 통합됩니다.

클러스터에 SageMaker HyperPod 상태 확인을 통과한 노드가 충분한지 확인합니다. 노드에는 테인트 `sagemaker.amazonaws.com/node-health-status`이 `Schedulable`로 설정되어 있어야 합니다. 작업 YAML 파일에 노드 선택기를 포함하여 다음과 같이 적절한 구성을 가진 노드를 선택하는 것이 좋습니다.

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

다음 코드 조각은 Kubeflow PyTorch 작업 YAML 구성을 수정하여 작업 자동 재개 기능을 활성화하는 방법의 예입니다. 두 개의 주석을 추가하고 다음과 같이 `OnFailure`를 `restartPolicy`로 설정해야 합니다.

```
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 훈련 작업 재시작의 두 가지 패턴이 표시될 수 있습니다.

**패턴 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
```