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-workloads
oc new-project cuda-workloads
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NVIDIA MIG リソースを使用して GPU リソースを要求するデプロイメントを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、デプロイメント設定を適用します。
oc apply -f cuda-vectoradd-deployment.yaml
$ oc apply -f cuda-vectoradd-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、デプロイメントが作成され、Pod がスケジュールされていることを確認します。
oc get deployment cuda-vectoradd
$ oc get deployment cuda-vectoradd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY UP-TO-DATE AVAILABLE AGE cuda-vectoradd 2/2 2 2 2m
NAME READY UP-TO-DATE AVAILABLE AGE cuda-vectoradd 2/2 2 2 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod のステータスを確認します。
oc get pods -l app=cuda-vectoradd
$ oc get pods -l app=cuda-vectoradd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE cuda-vectoradd-6b8c7d4f9b-abc12 1/1 Running 0 2m cuda-vectoradd-6b8c7d4f9b-def34 1/1 Running 0 2m
NAME READY STATUS RESTARTS AGE cuda-vectoradd-6b8c7d4f9b-abc12 1/1 Running 0 2m cuda-vectoradd-6b8c7d4f9b-def34 1/1 Running 0 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、デプロイメント Pod に対して
AllocationClaim
リソースが作成されたことを確認します。oc get allocationclaims -n das-operator
$ oc get allocationclaims -n das-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して Pod のリソース割り当ての 1 つをチェックし、GPU スライスが適切に割り当てられていることを確認します。
oc describe pod -l app=cuda-vectoradd
$ oc describe pod -l app=cuda-vectoradd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してログをチェックし、CUDA サンプルアプリケーションが正常に実行されたことを確認します。
oc logs -l app=cuda-vectoradd
$ oc logs -l app=cuda-vectoradd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
[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
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して環境変数をチェックし、GPU デバイスがコンテナーに適切に公開されていることを確認します。
oc exec deployment/cuda-vectoradd -- env | grep -E "(NVIDIA_VISIBLE_DEVICES|CUDA_VISIBLE_DEVICES)"
$ oc exec deployment/cuda-vectoradd -- env | grep -E "(NVIDIA_VISIBLE_DEVICES|CUDA_VISIBLE_DEVICES)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NVIDIA_VISIBLE_DEVICES=MIG-d8ac9850-d92d-5474-b238-0afeabac1652 CUDA_VISIBLE_DEVICES=MIG-d8ac9850-d92d-5474-b238-0afeabac1652
NVIDIA_VISIBLE_DEVICES=MIG-d8ac9850-d92d-5474-b238-0afeabac1652 CUDA_VISIBLE_DEVICES=MIG-d8ac9850-d92d-5474-b238-0afeabac1652
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの環境変数は、GPU MIG スライスが適切に割り当てられ、コンテナー内の CUDA ランタイムから認識できることを示します。