이 페이지에서는 Google Distributed Cloud Connected에서 그래픽 처리 장치 (GPU) 워크로드를 관리하는 방법을 설명합니다. 이 기능을 활용하려면 GPU가 포함된 Distributed Cloud 연결 하드웨어 구성이 있어야 합니다. 자세한 내용은 하드웨어 구성 계획을 참고하세요.
분산 클라우드 연결 워크로드는 컨테이너와 가상 머신에서 실행될 수 있습니다.
컨테이너에서 실행되는 GPU 워크로드 Distributed Cloud 연결 클러스터의 모든 GPU 리소스는 처음에는 컨테이너에서 실행되는 워크로드에 할당됩니다. GPU 기반 컨테이너화된 워크로드를 실행하기 위한 GPU 드라이버는 Distributed Cloud connected에 포함되어 있습니다. 각 컨테이너 내에서 GPU 라이브러리는
/opt/nvidia에 마운트됩니다.가상 머신에서 실행되는 GPU 워크로드 가상 머신에서 GPU 기반 워크로드를 실행하려면 이 페이지의 뒷부분에 설명된 대로 타겟 Distributed Cloud 연결 노드에서 가상 머신에 GPU 리소스를 할당해야 합니다. 이렇게 하면 내장 GPU 드라이버가 우회되고 GPU가 가상 머신에 직접 전달됩니다. 각 가상 머신의 게스트 운영체제에 호환되는 GPU 드라이버를 수동으로 설치해야 합니다. 또한 가상 머신에서 특수 GPU 드라이버를 실행하는 데 필요한 모든 라이선스를 확보해야 합니다.
Distributed Cloud에 연결된 노드에 GPU가 있는지 확인하려면 노드에 vm.cluster.gke.io.gpu=true 라벨이 있는지 확인합니다. 노드에 라벨이 없으면 해당 Distributed Cloud 연결 실제 머신에 GPU가 설치되어 있지 않은 것입니다.
GPU 리소스 할당
기본적으로 클러스터의 각 노드에 있는 모든 GPU 리소스는 컨테이너화된 워크로드에 할당됩니다. 각 노드에서 GPU 리소스 할당을 맞춤설정하려면 이 섹션의 단계를 완료하세요.
GPU 리소스 할당 구성
Distributed Cloud 연결 노드에서 GPU 리소스를 할당하려면 다음 명령어를 사용하여 타겟 노드에서
GPUAllocation커스텀 리소스를 수정합니다.kubectl edit gpuallocation NODE_NAME --namespace vm-system
NODE_NAME을 대상 Distributed Cloud 노드의 이름으로 바꿉니다.다음 예에서 명령어의 출력은 공장 기본 GPU 리소스 할당을 보여줍니다. 기본적으로 모든 GPU 리소스는 컨테이너화된 (
pod) 워크로드에 할당되며 가상 머신 (vm) 워크로드에는 GPU 리소스가 할당되지 않습니다.... spec: pod: 2 # Number of GPUs allocated for container workloads vm: 0 # Number of GPUs allocated for VM workloads다음과 같이 GPU 리소스 할당을 설정합니다.
- 컨테이너화된 워크로드에 GPU 리소스를 할당하려면
pod필드의 값을 늘리고vm필드의 값을 동일한 양만큼 줄입니다. - 가상 머신 워크로드에 GPU 리소스를 할당하려면
vm필드 값을 늘리고pod필드 값을 동일한 양만큼 줄입니다.
할당된 총 GPU 리소스 수가 노드가 실행되는 실제 Distributed Cloud 연결 머신에 설치된 GPU 수를 초과해서는 안 됩니다. 그렇지 않으면 노드에서 잘못된 할당을 거부합니다.
다음 예에서는 컨테이너화된 (
pod) 워크로드에서 가상 머신 (vm) 워크로드로 GPU 리소스 2개가 재할당되었습니다.... spec: pod: 0 # Number of GPUs allocated for container workloads vm: 2 # Number of GPUs allocated for VM workloads완료되면 수정된
GPUAllocation리소스를 클러스터에 적용하고 상태가AllocationFulfilled로 변경될 때까지 기다립니다.- 컨테이너화된 워크로드에 GPU 리소스를 할당하려면
GPU 리소스 할당 확인
GPU 리소스 할당을 확인하려면 다음 명령어를 사용하세요.
kubectl describe gpuallocations NODE_NAME --namespace vm-system
NODE_NAME을 대상 Distributed Cloud 연결 노드의 이름으로 바꿉니다.이 명령어는 다음 예와 유사한 출력을 반환합니다.
Name: mynode1 ... spec: node: mynode1 pod: 2 # Number of GPUs allocated for container workloads vm: 0 # Number of GPUs allocated for VM workloads Status: Allocated: true Conditions: Last Transition Time: 2022-09-23T03:14:10Z Message: Observed Generation: 1 Reason: AllocationFulfilled Status: True Type: AllocationStatus Last Transition Time: 2022-09-23T03:14:16Z Message: Observed Generation: 1 Reason: DeviceStateUpdated Status: True Type: DeviceStateUpdated Consumption: pod: 0/2 # Number of GPUs currently consumed by container workloads vm: 0/0 # Number of GPUs currently consumed by VM workloads Device Model: Tesla T4 Events: <none>
GPU 리소스를 사용하도록 컨테이너 구성
Distributed Cloud에 연결된 컨테이너가 GPU 리소스를 사용하도록 구성하려면 다음 예와 같이 사양을 구성한 후 클러스터에 적용합니다.
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: containers: - name: my-gpu-container image: CUDA_TOOLKIT_IMAGE command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] env: resources: requests: GPU_MODEL: 2 limits: GPU_MODEL: 2 nodeSelector: kubernetes.io/hostname: NODE_NAME
다음을 바꿉니다.
CUDA_TOOLKIT_IMAGE: NVIDIA CUDA 툴킷 이미지의 전체 경로와 이름입니다. CUDA 툴킷 버전은 Distributed Cloud에 연결된 클러스터에서 실행되는 NVIDIA 드라이버 버전과 일치해야 합니다. NVIDIA 드라이버 버전을 확인하려면 Distributed Cloud 출시 노트를 참고하세요. 일치하는 CUDA 툴킷 버전을 확인하려면 CUDA 호환성을 참고하세요.NODE_NAME: 대상 Distributed Cloud 연결 노드의 이름입니다.GPU_MODEL: 타겟 Distributed Cloud 연결 머신에 설치된 NVIDIA GPU 모델입니다. 유효한 값은 다음과 같습니다.- NVIDIA L4 GPU의 경우
nvidia.com/gpu-pod-NVIDIA_L4 - NVIDIA Tesla T4 GPU의 경우
nvidia.com/gpu-pod-TESLA_T4
- NVIDIA L4 GPU의 경우
GPU 리소스를 사용하도록 가상 머신 구성
GPU 리소스를 사용하도록 연결된 Distributed Cloud에서 실행되는 가상 머신을 구성하려면 다음 예와 같이 VirtualMachine 리소스 사양을 구성한 후 클러스터에 적용합니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine ... spec: ... gpu: model: GPU_MODEL quantity: 2
다음을 바꿉니다.
GPU_MODEL: 타겟 Distributed Cloud 연결 머신에 설치된 NVIDIA GPU 모델입니다. 유효한 값은 다음과 같습니다.- NVIDIA L4 GPU의 경우
nvidia.com/gpu-pod-NVIDIA_L4 - NVIDIA Tesla T4 GPU용
nvidia.com/gpu-pod-TESLA_T4## 다음 단계
- NVIDIA L4 GPU의 경우