HyperPod タスクガバナンス AWS CLI コマンドの例 - Amazon SageMaker AI

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

HyperPod タスクガバナンス AWS CLI コマンドの例

HyperPod は、Kubectl または HyperPod カスタム CLI を介して EKS で使用できます。これらのコマンドは Studio または から使用できます AWS CLI。以下に、HyperPod コマンドを使用してクラスターの詳細を表示する方法に関する SageMaker HyperPod AWS CLI タスクガバナンスの例を示します。インストール方法などの詳細については、「HyperPod CLI Github リポジトリ」を参照してください。

クラスターアクセラレーターデバイスのクォータ情報を取得する

以下のコマンド例は、クラスタアクセラレータのデバイスクォータに関する情報を取得します。

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

この例の名前空間 hyperpod-ns-test-team は、コンピューティング割り当ての作成時に指定されたチーム名 test-team に基づいて Kubernetes に作成されます。詳細については、「ポリシーを編集する」を参照してください。

レスポンスの例:

[ { "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 マネージドキューと名前空間にジョブを送信する

次のコマンド例では、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 は「トレーニング」という名前の優先クラスを参照します。ポリシーの概念の詳細については、「ポリシー」を参照してください。

優先クラスが指定されていない場合、ジョブは優先度の低いジョブとして扱われ、タスクランキング値は 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

ジョブの一覧表示

次のコマンドは、ジョブとその詳細を一覧表示します。

hyperpod list-jobs

レスポンスの例:

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

ジョブの詳細情報を取得する

次のコマンドは、ジョブの詳細を提供します。名前空間が指定されていない場合、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“ }

ジョブの停止と停止解除

送信されたジョブの一部をスケジューラから削除する場合には、HyperPod AWS CLI はオーケストレーションからジョブを一時的に削除する suspend コマンドを提供しています。unsuspend コマンドによってジョブが手動で停止解除されない限り、停止されたジョブはスケジュールされなくなります。

ジョブを一時的に停止するには:

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

ジョブをキューに戻すには:

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

ジョブのデバッグ

HyperPod AWS CLI には、ジョブ送信の問題をデバッグするための他のコマンドも用意されています。例えば、HyperPod AWS CLI Github リポジトリget-logslist-podsと です。