6.3. Dynamic Accelerator Slicer Operator를 사용하여 GPU 워크로드 배포
DAS(Dynamic Accelerator Slicer) Operator에서 관리하는 GPU 슬라이스를 요청하는 워크로드를 배포할 수 있습니다. Operator는 GPU 액셀러레이터를 동적으로 분할하고 사용 가능한 GPU 슬라이스로 워크로드를 예약합니다.
사전 요구 사항
- 클러스터에서 사용할 수 있는MIG 지원 GPU 하드웨어가 있습니다.
-
NVIDIA GPU Operator가 설치되고
ClusterPolicy에 Ready 상태가 표시됩니다. - DAS Operator가 설치되어 있습니다.
프로세스
다음 명령을 실행하여 네임스페이스를 생성합니다.
oc new-project cuda-workloadsNVIDIA>-<G 리소스를 사용하여 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에 대해 생성되었는지 확인합니다.$ 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의 리소스 할당 중 하나를 확인하여 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이러한 환경 변수는 GPUMIG 슬라이스가 올바르게 할당되었으며 컨테이너 내의 CUDA 런타임에 표시되는 것을 나타냅니다.