6.3. Dynamic Accelerator Slicer Operator를 사용하여 GPU 워크로드 배포
DAS(Dynamic Accelerator Slicer) 운영자가 관리하는 GPU 슬라이스를 요청하는 워크로드를 배포할 수 있습니다. 운영자는 GPU 가속기를 동적으로 분할하고 사용 가능한 GPU 슬라이스에 작업 부하를 예약합니다.
사전 요구 사항
- 클러스터에 MIG 지원 GPU 하드웨어가 있습니다.
-
NVIDIA GPU Operator가 설치되었고
ClusterPolicy가준비 상태를 표시합니다. - DAS Operator를 설치했습니다.
프로세스
다음 명령을 실행하여 네임스페이스를 만듭니다.
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다음 명령을 실행하여 포드 상태를 확인하세요.
$ 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
검증
다음 명령을 실행하여 배포 포드에 대한
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다음 명령을 실행하여 포드의 리소스 할당 중 하나를 확인하여 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 런타임에서 볼 수 있음을 나타냅니다.