4.4. JobSet Operator を使用したワークロードの管理
OpenShift Container Platform の JobSet Operator を使用すると、高性能コンピューティング (HPC) や AI トレーニングなどの大規模で協調的なワークロードを管理および実行できます。マルチテンプレートジョブのサポートや安定したネットワーク接続といった機能は、迅速な復旧とリソースの効率的な利用に役立ちます。
4.4.1. ジョブセットのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
JobSet Operator を使用すると、JobSet をデプロイして、大規模で協調的なワークロードを管理および実行できます。
前提条件
- JobSet Operator をインストールしました。
- NVIDIA 製 GPU を搭載したクラスターが利用可能です。
手順
次のコマンドを実行して新しいプロジェクトを作成します。
$ oc new-project <my_namespace>jobset.yamlという名前のファイルを作成します。apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: pytorch spec: replicatedJobs: - name: workers template: spec: parallelism: <pods_running_number> completions: <pods_finish_number> backoffLimit: 0 template: spec: imagePullSecrets: - name: my-registry-secret initContainers: - name: prepare image: docker.io/alpine/git:v2.52.0 args: ['clone', 'https://github.com/pytorch/examples'] volumeMounts: - name: workdir mountPath: /git containers: - name: pytorch image: docker.io/pytorch/pytorch:2.10.0-cuda13.0-cudnn9-runtime resources: limits: nvidia.com/gpu: "1" requests: nvidia.com/gpu: "1" ports: - containerPort: 4321 env: - name: MASTER_ADDR value: "pytorch-workers-0-0.pytorch" - name: MASTER_PORT value: "4321" - name: RANK valueFrom: fieldRef: fieldPath: metadata.annotations['batch.kubernetes.io/job-completion-index'] - name: PYTHONUNBUFFERED value: "0" command: - /bin/sh - -c - | cd examples/distributed/ddp-tutorial-series torchrun --nproc_per_node=1 --nnodes=3 --rdzv_id=100 --rdzv_backend=c10d --rdzv_endpoint=$MASTER_ADDR:$MASTER_PORT multinode.py 1000 100 volumeMounts: - name: workdir mountPath: /workspace volumes: - name: workdir emptyDir: {}各項目の説明:
<pods_running_number>- 同時に実行される Pod の数を指定します。
<pods_finish_number>- ジョブが完了したとみなされるために、正常に完了する必要のある Pod の総数を指定します。
以下のコマンドを実行して、JobSet の設定を適用してください。
$ oc apply -f jobset.yaml
検証
以下のコマンドを実行して、Pod が起動したことを確認してください。
$ oc get pods -n <my_namespace>出力例
NAME READY STATUS RESTARTS AGE pytorch-workers-0-0-2lzwt 1/1 Running 0 2m17s pytorch-workers-0-1-g2lrv 1/1 Running 0 2m17s pytorch-workers-0-2-dpljq 1/1 Running 0 2m17s