Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Instalación del complemento para dispositivos de Kubernetes
Los complementos para dispositivos
Consideraciones
-
Al utilizar las AMI de AL2023 optimizadas para EKS con las GPU de NVIDIA, debe instalar el complemento para dispositivos de Kubernetes de NVIDIA
. Puede instalar y administrar el complemento para dispositivos de Kubernetes de NVIDIA con Helm, con las herramientas de Kubernetes que prefiera o con el operador de GPU de NVIDIA. -
Al utilizar las AMI de Bottlerocket optimizadas para EKS con las GPU de NVIDIA, no es necesario instalar el complemento para dispositivos de Kubernetes de NVIDIA, ya que se incluye en las AMI de Bottlerocket optimizadas para EKS. Esto incluye los casos en los que utiliza instancias de GPU con el modo automático de EKS.
-
Si utiliza las AMI de AL2023 o Bottlerocket optimizadas para EKS con las GPU de AWS Inferentia o Trainium, debe instalar el complemento para dispositivos de Kubernetes de Neuron y, opcionalmente, instalar la extensión del programador de Kubernetes de Neuron
. Para obtener más información, consulte la documentación de Neuron para ejecuciones en EKS .
Instalación del complemento para dispositivos de Kubernetes de NVIDIA
En el siguiente procedimiento, se describe cómo instalar el complemento para dispositivos de Kubernetes de NVIDIA y cómo ejecutar una prueba de muestra en instancias de GPU de NVIDIA.
Requisitos previos
-
Clúster de EKS ya creado
-
Nodos de GPU de NVIDIA en ejecución en el clúster con la AMI de NVIDIA de AL2023 optimizada para EKS
-
Si tiene Helm instalado en su entorno de línea de comandos, consulte las instrucciones de configuración de Helm.
Procedimiento
-
Agregue el repositorio de gráficos de Helm
nvdp.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin -
Actualice el repositorio de Helm local para asegurarse de que cuenta con los gráficos más recientes.
helm repo update -
Obtenga la versión más reciente del complemento para dispositivos de Kubernetes de NVIDIA.
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 ... -
Instale el complemento para dispositivos de Kubernetes de NVIDIA en el clúster y sustituya
0.17.4por la versión más reciente del comando anterior.helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --version0.17.4\ --set gfd.enabled=true -
Compruebe que el complemento para dispositivos de Kubernetes de NVIDIA se esté ejecutando en el clúster. A continuación, se muestra el resultado con dos nodos en el clúster.
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 -
Compruebe que los nodos tengan GPU asignables con el siguiente comando.
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 -
Cree un archivo denominado
nvidia-smi.yamlcon el siguiente contenido. Este manifiesto lanza una imagen de contenedor de AL2023 mínima que ejecutanvidia-smien un nodo.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' -
Aplique el manifiesto con el siguiente comando.
kubectl apply -f nvidia-smi.yaml -
Una vez que el pod termine de ejecutarse, consulte sus registros con el siguiente comando.
kubectl logs nvidia-smiUn ejemplo de salida sería el siguiente.
+-----------------------------------------------------------------------------------------+ | 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 | +-----------------------------------------------------------------------------------------+
Instalación del complemento para dispositivos de Kubernetes de Neuron
En el siguiente procedimiento, se describe cómo instalar el complemento para dispositivos de Kubernetes de Neuron y cómo ejecutar una prueba de muestra en una instancia de Inferentia.
Requisitos previos
-
Clúster de EKS ya creado
-
Nodos de GPU de Neuron que se ejecutan en el clúster mediante la AMI de Neuron de AL2023 optimizada para EKS o la AMI de Bottlerocket
-
Si tiene Helm instalado en su entorno de línea de comandos, consulte las instrucciones de configuración de Helm.
Procedimiento
-
Instale el complemento para dispositivos de Kubernetes de Neuron en el clúster.
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false" -
Compruebe que el complemento para dispositivos de Kubernetes de Neuron se esté ejecutando en el clúster. A continuación, se muestra el resultado con un único nodo de Neuron en el clúster.
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 -
Compruebe que los nodos tengan NeuronCores asignables con el siguiente comando.
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 -
Compruebe que los nodos tengan NeuronDevices asignables con el siguiente comando.
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 -
Cree un archivo denominado
neuron-ls.yamlcon el siguiente contenido. Este manifiesto lanza un contenedor de Neuron Monitorque tiene la herramienta neuron-lsinstalada.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" -
Aplique el manifiesto con el siguiente comando.
kubectl apply -f neuron-ls.yaml -
Una vez que el pod termine de ejecutarse, consulte sus registros con el siguiente comando.
kubectl logs neuron-lsA continuación se muestra un ejemplo de salida.
instance-type: inf2.xlarge instance-id: ... +--------+--------+--------+---------+ | NEURON | NEURON | NEURON | PCI | | DEVICE | CORES | MEMORY | BDF | +--------+--------+--------+---------+ | 0 | 2 | 32 GB | 00:1f.0 | +--------+--------+--------+---------+