이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
GPU에 대한 Kubernetes 디바이스 플러그인 설치
Kubernetes 디바이스 플러그인
고려 사항
-
NVIDIA GPU와 함께 EKS 최적화 AL2023 AMI를 사용하는 경우 NVIDIA Kubernetes 디바이스 플러그인
을 설치해야 합니다. 헬름, 선택한 Kubernetes 도구 또는 NVIDIA GPU 운영자를 사용하여 NVIDIA Kubernetes 디바이스 플러그인을 설치 및 관리할 수 있습니다. -
NVIDIA GPU와 함께 EKS 최적화 Bottlerocket AMI를 사용하는 경우 NVIDIA Kubernetes 디바이스 플러그인을 설치할 필요가 없습니다. EKS 최적화 Bottlerocket AMI에 이미 포함되어 있기 때문입니다. 여기에는 EKS Auto Mode에서 GPU 인스턴스를 사용하는 경우가 포함됩니다.
-
AWS Inferentia 또는 Trainium GPU와 함께 EKS 최적화 AL2023 또는 Bottlerocket AMI를 사용하는 경우 Neuron Kubernetes 디바이스 플러그인을 설치하고 선택적으로 Neuron Kubernetes 스케줄러 확장 프로그램
을 설치해야 합니다. 자세한 내용은 Neuron documentation for running on EKS 를 참조하세요.
NVIDIA Kubernetes 디바이스 플러그인 설치
다음 절차에서는 NVIDIA Kubernetes 디바이스 플러그인을 설치하고 NVIDIA GPU 인스턴스에서 샘플 테스트를 실행하는 방법을 설명합니다.
사전 조건
-
EKS 클러스터 생성됨
-
EKS 최적화 AL2023 NVIDIA AMI를 사용하여 클러스터에서 실행되는 NVIDIA GPU 노드
-
명령줄 환경에 Helm이 설치되어 있습니다. Helm 설정 지침을 참조하세요.
절차
-
nvdp헬름 차트 리포지토리를 추가하세요.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin -
최신 차트가 적용되도록 로컬 Helm 리포지토리를 업데이트합니다.
helm repo update -
NVIDIA Kubernetes 디바이스 플러그인의 최신 버전을 가져오세요.
helm search repo nvdp --develNAME CHART VERSION APP VERSION DESCRIPTION nvdp/gpu-feature-discovery 0.17.4 0.17.4 ... nvdp/nvidia-device-plugin 0.17.4 0.17.4 ... -
클러스터에 NVIDIA Kubernetes 디바이스 플러그인을 설치하고
0.17.4를 위 명령의 최신 버전으로 바꾸세요.helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --version0.17.4\ --set gfd.enabled=true -
NVIDIA Kubernetes 디바이스 플러그인이 클러스터에서 실행 중인지 확인하세요. 아래 출력은 클러스터에 두 개의 노드가 있는 출력을 보여줍니다.
kubectl get ds -n nvidia nvdp-nvidia-device-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE nvdp-nvidia-device-plugin 2 2 2 2 2 <none> 11m -
다음 명령으로 노드에 할당 가능한 GPU가 있는지 확인하세요.
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"NAME GPU ip-192-168-11-225.us-west-2.compute.internal 1 ip-192-168-24-96.us-west-2.compute.internal 1 -
다음 콘텐츠를 가진
nvidia-smi.yaml이라는 파일을 생성합니다: 이 매니페스트는 노드에서nvidia-smi를 실행하는 최소 AL2023 컨테이너 이미지를 시작합니다.apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: restartPolicy: OnFailure containers: - name: gpu-demo image: public.ecr.aws/amazonlinux/amazonlinux:2023-minimal command: ['/bin/sh', '-c'] args: ['nvidia-smi && tail -f /dev/null'] resources: limits: nvidia.com/gpu: 1 tolerations: - key: 'nvidia.com/gpu' operator: 'Equal' value: 'true' effect: 'NoSchedule' -
다음 명령으로 매니페스트를 적용합니다.
kubectl apply -f nvidia-smi.yaml -
포드 실행이 끝난 후, 다음 명령을 사용하여 로그를 확인합니다.
kubectl logs nvidia-smi예제 출력은 다음과 같습니다.
+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI XXX.XXX.XX Driver Version: XXX.XXX.XX CUDA Version: XX.X | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA L4 On | 00000000:31:00.0 Off | 0 | | N/A 27C P8 11W / 72W | 0MiB / 23034MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
Neuron Kubernetes 디바이스 플러그인 설치
다음 절차에서는 Neuron Kubernetes 디바이스 플러그인을 설치하고 Inferentia 인스턴스에서 샘플 테스트를 실행하는 방법을 설명합니다.
사전 조건
-
EKS 클러스터 생성됨
-
EKS 최적화 AL2023 Neuron AMI 또는 Bottlerocket AMI를 사용하여 클러스터에서 실행되는 Neuron GPU 노드
-
명령줄 환경에 Helm이 설치되어 있습니다. Helm 설정 지침을 참조하세요.
절차
-
클러스터에 Neuron Kubernetes 디바이스 플러그인을 설치하세요.
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false" -
Neuron Kubernetes 디바이스 플러그인이 클러스터에서 실행 중인지 확인하세요. 아래 출력은 클러스터에 단일 Neuron 노드가 있는 출력을 보여줍니다.
kubectl get ds -n kube-system neuron-device-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-device-plugin 1 1 1 1 1 <none> 72s -
다음 명령으로 노드에 할당 가능한 NueronCores가 있는지 확인하세요.
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronCore:.status.allocatable.aws\.amazon\.com/neuroncore"NAME NeuronCore ip-192-168-47-173.us-west-2.compute.internal 2 -
다음 명령으로 노드에 할당 가능한 NueronDevices가 있는지 확인하세요.
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronDevice:.status.allocatable.aws\.amazon\.com/neuron"NAME NeuronDevice ip-192-168-47-173.us-west-2.compute.internal 1 -
다음 콘텐츠를 가진
neuron-ls.yaml이라는 파일을 생성합니다: 이 매니페스트는neuron-ls도구가 설치된 Neuron Monitor컨테이너를 시작합니다. apiVersion: v1 kind: Pod metadata: name: neuron-ls spec: restartPolicy: Never containers: - name: neuron-container image: public.ecr.aws/g4h4h0b5/neuron-monitor:1.0.0 command: ["/bin/sh"] args: ["-c", "neuron-ls"] resources: limits: aws.amazon.com/neuron: 1 tolerations: - key: "aws.amazon.com/neuron" operator: "Exists" effect: "NoSchedule" -
다음 명령으로 매니페스트를 적용합니다.
kubectl apply -f neuron-ls.yaml -
포드 실행이 끝난 후, 다음 명령을 사용하여 로그를 확인합니다.
kubectl logs neuron-ls출력 예시는 아래와 같습니다.
instance-type: inf2.xlarge instance-id: ... +--------+--------+--------+---------+ | NEURON | NEURON | NEURON | PCI | | DEVICE | CORES | MEMORY | BDF | +--------+--------+--------+---------+ | 0 | 2 | 32 GB | 00:1f.0 | +--------+--------+--------+---------+