

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

# HyperPod 태스크 거버넌스 AWS CLI 명령 예제
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-cli"></a>

Kubectl 또는 HyperPod 사용자 지정 CLI를 통해 EKS와 함께 HyperPod를 사용할 수 있습니다. Studio 또는를 통해 이러한 명령을 사용할 수 있습니다 AWS CLI. 다음은 HyperPod 명령을 사용하여 클러스터 세부 정보를 보는 방법에 대한 SageMaker HyperPod AWS CLI 태스크 거버넌스 예제입니다. 설치 방법을 비롯한 자세한 내용은 [HyperPod CLI Github 리포지토리](https://github.com/aws/sagemaker-hyperpod-cli)를 참조하세요.

**Topics**
+ [클러스터 액셀러레이터 디바이스 할당량 정보 가져오기](#hp-eks-cli-get-clusters)
+ [SageMaker AI 관리형 대기열 및 네임스페이스에 작업 제출](#hp-eks-cli-start-job)
+ [작업 나열](#hp-eks-cli-list-jobs)
+ [작업 세부 정보 가져오기](#hp-eks-cli-get-job)
+ [작업 일시 중지 및 일시 중지 해제](#hp-eks-cli-patch-job)
+ [작업 디버깅](#hp-eks-cli-other)

## 클러스터 액셀러레이터 디바이스 할당량 정보 가져오기
<a name="hp-eks-cli-get-clusters"></a>

다음 예시 명령은 클러스터 액셀러레이터 디바이스 할당량에 대한 정보를 가져옵니다.

```
hyperpod get-clusters -n hyperpod-ns-test-team
```

이 예시의 네임스페이스인 `hyperpod-ns-test-team`은 컴퓨팅 할당이 생성될 때 제공된 팀 이름인 `test-team`을 기반으로 Kubernetes에서 생성됩니다. 자세한 내용은 [정책 편집](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-edit.md) 단원을 참조하십시오.

응답 예제:

```
[
    {
        "Cluster": "hyperpod-eks-test-cluster-id",
        "InstanceType": "ml.g5.xlarge",
        "TotalNodes": 2,
        "AcceleratorDevicesAvailable": 1,
        "NodeHealthStatus=Schedulable": 2,
        "DeepHealthCheckStatus=Passed": "N/A",
        "Namespaces": {
            "hyperpod-ns-test-team": {
                "TotalAcceleratorDevices": 1,
                "AvailableAcceleratorDevices": 1
            }
        }
    }
]
```

## SageMaker AI 관리형 대기열 및 네임스페이스에 작업 제출
<a name="hp-eks-cli-start-job"></a>

다음 예시 명령은 HyperPod 클러스터에 작업을 제출합니다. 한 팀에만 액세스할 수 있는 경우이 경우 HyperPod AWS CLI 가 자동으로 대기열을 할당합니다. 그 외의 경우, 여러 대기열이 검색되면 선택할 수 있는 모든 실행 가능한 옵션이 표시됩니다.

```
hyperpod start-job --job-name hyperpod-cli-test --job-kind kubeflow/PyTorchJob --image docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-bc09cfd --entry-script /opt/pytorch-mnist/mnist.py --pull-policy IfNotPresent --instance-type ml.g5.xlarge --node-count 1 --tasks-per-node 1 --results-dir ./result --priority training-priority
```

우선순위 클래스는 태스크의 우선순위가 지정되고 유휴 컴퓨팅이 할당되는 방식을 정의하는 **클러스터 정책**에 정의됩니다. 데이터 과학자가 작업을 제출하면 `priority-class-name-priority` 형식의 우선순위 클래스 이름 중 하나를 사용합니다. 이 예시에서 `training-priority`는 'training'이라는 우선순위 클래스를 나타냅니다. 정책 개념에 대한 자세한 내용은 [정책](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md) 섹션을 참조하세요.

우선순위 클래스를 지정하지 않으면 작업은 우선순위가 낮은 작업으로 처리되며 작업 순위 값은 0입니다.

우선순위 클래스가 지정되었지만 **클러스터 정책**에 정의된 우선순위 클래스 중 하나에 해당하지 않는 경우 제출이 실패하고 오류 메시지가 정의된 우선순위 클래스 세트를 제공합니다.

다음 명령을 사용하여 YAML 구성 파일을 사용하여 작업을 제출할 수도 있습니다.

```
hyperpod start-job --config-file ./yaml-configuration-file-name.yaml
```

다음은 위에서 설명한 작업을 제출하는 것과 동일한 YAML 구성 파일의 예입니다.

```
defaults:
  - override hydra/job_logging: stdout
hydra:
  run:
    dir: .
  output_subdir: null
training_cfg:
  entry_script: /opt/pytorch-mnist/mnist.py
  script_args: []
  run:
    name: hyperpod-cli-test
    nodes: 1
    ntasks_per_node: 1
cluster:
  cluster_type: k8s
  instance_type: ml.g5.xlarge
  custom_labels:
    kueue.x-k8s.io/priority-class: training-priority
  cluster_config:
    label_selector:
      required:
        sagemaker.amazonaws.com/node-health-status:
          - Schedulable
      preferred:
        sagemaker.amazonaws.com/deep-health-check-status:
          - Passed
      weights:
        - 100
    pullPolicy: IfNotPresent
base_results_dir: ./result
container: docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-bc09cfd
env_vars:
  NCCL_DEBUG: INFO
```

또는 `kubectl`을 사용하여 작업을 제출하여 작업이 **대시보드** 탭에 표시되는지 확인할 수 있습니다. 다음은 예시 kubectl 명령입니다.

```
kubectl apply -f ./yaml-configuration-file-name.yaml
```

작업을 제출할 때 대기열 이름과 우선순위 클래스 레이블을 포함합니다. 예를 들어 대기열 이름 `hyperpod-ns-team-name-localqueue` 및 우선순위 클래스 `priority-class-name-priority`와 함께 다음 레이블을 포함해야 합니다.
+ `kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue` 
+ `kueue.x-k8s.io/priority-class: priority-class-name-priority`

다음 YAML 구성 코드 조각은 작업이 **대시보드** 탭에 표시되도록 원래 구성 파일에 레이블을 추가하는 방법을 보여줍니다.

```
metadata:
    name: job-name
    namespace: hyperpod-ns-team-name
    labels:
        kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
        kueue.x-k8s.io/priority-class: priority-class-name-priority
```

## 작업 나열
<a name="hp-eks-cli-list-jobs"></a>

다음 명령은 작업과 세부 정보를 나열합니다.

```
hyperpod list-jobs
```

응답 예제:

```
{
    "jobs": [
        {
            "Name": "hyperpod-cli-test",
            "Namespace": "hyperpod-ns-test-team",
            "CreationTime": "2024-11-18T21:21:15Z",
            "Priority": "training",
            "State": "Succeeded"
        }
    ]
}
```

## 작업 세부 정보 가져오기
<a name="hp-eks-cli-get-job"></a>

다음 명령은 작업의 세부 정보를 제공합니다. 네임스페이스를 지정하지 않으면 HyperPod AWS CLI 는 사용자가 액세스할 수 있는 SageMaker AI에서 관리하는 네임스페이스를 가져옵니다.

```
hyperpod get-job --job-name hyperpod-cli-test
```

응답 예제:

```
{
    "Name": "hyperpod-cli-test",
    "Namespace": "hyperpod-ns-test-team",
    "Label": {
        "app": "hyperpod-cli-test",
        "app.kubernetes.io/managed-by": "Helm",
        "kueue.x-k8s.io/priority-class": "training"
    },
    "CreationTimestamp": "2024-11-18T21:21:15Z",
    "Status": {
        "completionTime": "2024-11-18T21:25:24Z",
        "conditions": [
            {
                "lastTransitionTime": "2024-11-18T21:21:15Z",
                "lastUpdateTime": "2024-11-18T21:21:15Z",
                "message": "PyTorchJob hyperpod-cli-test is created.",
                "reason": "PyTorchJobCreated",
                "status": "True",
                "type": "Created"
            },
            {
                "lastTransitionTime": "2024-11-18T21:21:17Z",
                "lastUpdateTime": "2024-11-18T21:21:17Z",
                "message": "PyTorchJob hyperpod-ns-test-team/hyperpod-cli-test is running.",
                "reason": "PyTorchJobRunning",
                "status": "False",
                "type": "Running"
            },
            {
                "lastTransitionTime": "2024-11-18T21:25:24Z",
                "lastUpdateTime": "2024-11-18T21:25:24Z",
                "message": "PyTorchJob hyperpod-ns-test-team/hyperpod-cli-test successfully completed.",
                "reason": "PyTorchJobSucceeded",
                "status": "True",
                "type": "Succeeded"
            }
        ],
            "replicaStatuses": {
                "Worker": {
                    "selector": "training.kubeflow.org/job-name=hyperpod-cli-test,training.kubeflow.org/operator-name=pytorchjob-controller,training.kubeflow.org/replica-type=worker",
                    "succeeded": 1
                }
            },
        "startTime": "2024-11-18T21:21:15Z"
    },
    "ConsoleURL": "https://us-west-2.console.aws.amazon.com/sagemaker/home?region=us-west-2#/cluster-management/hyperpod-eks-test-cluster-id“
}
```

## 작업 일시 중지 및 일시 중지 해제
<a name="hp-eks-cli-patch-job"></a>

제출된 일부 작업을 스케줄러에서 제거하려면 HyperPod AWS CLI 는 오케스트레이션에서 작업을 일시적으로 제거하는 `suspend` 명령을 제공합니다. `unsuspend` 명령으로 작업이 수동으로 일시 중지되지 않는 한 일시 중지된 작업은 더 이상 예약되지 않습니다.

작업을 일시적으로 일시 중지하는 방법:

```
hyperpod patch-job suspend --job-name hyperpod-cli-test
```

대기열에 작업을 다시 추가하는 방법:

```
hyperpod patch-job unsuspend --job-name hyperpod-cli-test
```

## 작업 디버깅
<a name="hp-eks-cli-other"></a>

HyperPod AWS CLI 는 작업 제출 문제를 디버깅할 수 있는 다른 명령도 제공합니다. HyperPod AWS CLI Github `get-logs` 리포지토리의 `list-pods` 및를 예로 들 수 있습니다.