6.3. Dynamic Accelerator Slicer Operator を使用して GPU ワークロードをデプロイする
Dynamic Accelerator Slicer (DAS) Operator によって管理される GPU スライスを要求するワークロードをデプロイできます。Operator は GPU アクセラレーターを動的に分割し、利用可能な GPU スライスにワークロードをスケジュールします。
前提条件
- クラスター内に使用可能な MIG 対応 GPU ハードウェアがある。
-
NVIDIA GPU Operator がインストールされており、
ClusterPolicyが Ready 状態を示している。 - DAS Operator がインストール済みである。
手順
次のコマンドを実行して、namespace を作成します。
oc new-project cuda-workloadsNVIDIA MIG リソースを使用して GPU リソースを要求するデプロイメントを作成します。
apiVersion: apps/v1 kind: Deployment metadata: name: cuda-vectoradd spec: replicas: 2 selector: matchLabels: app: cuda-vectoradd template: metadata: labels: app: cuda-vectoradd spec: restartPolicy: Always containers: - name: cuda-vectoradd image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0-ubi8 resources: limits: nvidia.com/mig-1g.5gb: "1" command: - sh - -c - | env && /cuda-samples/vectorAdd && sleep 3600次のコマンドを実行して、デプロイメント設定を適用します。
$ oc apply -f cuda-vectoradd-deployment.yaml次のコマンドを実行して、デプロイメントが作成され、Pod がスケジュールされていることを確認します。
$ oc get deployment cuda-vectoradd出力例
NAME READY UP-TO-DATE AVAILABLE AGE cuda-vectoradd 2/2 2 2 2m次のコマンドを実行して、Pod のステータスを確認します。
$ oc get pods -l app=cuda-vectoradd出力例
NAME READY STATUS RESTARTS AGE cuda-vectoradd-6b8c7d4f9b-abc12 1/1 Running 0 2m cuda-vectoradd-6b8c7d4f9b-def34 1/1 Running 0 2m
検証
次のコマンドを実行して、デプロイメント Pod に対して
AllocationClaimリソースが作成されたことを確認します。$ oc get allocationclaims -n das-operator出力例
NAME AGE 13950288-57df-4ab5-82bc-6138f646633e-harpatil000034jma-qh5fm-worker-f-57md9-cuda-vectoradd-0 2m ce997b60-a0b8-4ea4-9107-cf59b425d049-harpatil000034jma-qh5fm-worker-f-fl4wg-cuda-vectoradd-0 2m次のコマンドを実行して Pod のリソース割り当ての 1 つをチェックし、GPU スライスが適切に割り当てられていることを確認します。
$ oc describe pod -l app=cuda-vectoradd次のコマンドを実行してログをチェックし、CUDA サンプルアプリケーションが正常に実行されたことを確認します。
$ oc logs -l app=cuda-vectoradd出力例
[Vector addition of 50000 elements] Copy input data from the host memory to the CUDA device CUDA kernel launch with 196 blocks of 256 threads Copy output data from the CUDA device to the host memory Test PASSED次のコマンドを実行して環境変数をチェックし、GPU デバイスがコンテナーに適切に公開されていることを確認します。
$ oc exec deployment/cuda-vectoradd -- env | grep -E "(NVIDIA_VISIBLE_DEVICES|CUDA_VISIBLE_DEVICES)"出力例
NVIDIA_VISIBLE_DEVICES=MIG-d8ac9850-d92d-5474-b238-0afeabac1652 CUDA_VISIBLE_DEVICES=MIG-d8ac9850-d92d-5474-b238-0afeabac1652これらの環境変数は、GPU MIG スライスが適切に割り当てられ、コンテナー内の CUDA ランタイムから認識できることを示します。