

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

# HyperPod タスクガバナンス AWS CLI コマンドの例
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-cli"></a>

HyperPod は、Kubectl または HyperPod カスタム CLI を介して EKS で使用できます。これらのコマンドは 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 クラスターにジョブを送信します。1 つのチームにのみアクセスできる場合、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` は「トレーニング」という名前の優先クラスを参照します。ポリシーの概念の詳細については、「[ポリシー](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md)」を参照してください。

優先クラスが指定されていない場合、ジョブは優先度の低いジョブとして扱われ、タスクランキング値は 0 です。

優先クラスが指定されていても、**[クラスターポリシー]** で定義されている優先クラスの 1 つに対応していない場合、送信は失敗し、エラーメッセージは定義された優先クラスのセットを提供します。

以下のコマンドを使用し、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`と です。