Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Instalação do plug-in de dispositivo do Kubernetes para GPUs
Os plug-ins de dispositivos
Considerações
-
Ao usar as AMIs do AL2023 otimizadas para o EKS com GPUs NVIDIA, é necessário instalar o plug-in de dispositivos da NVIDIA para Kubernetes
. É possível instalar e gerenciar o plug-in de dispositivos da NVIDIA para Kubernetes com o Helm, qualquer ferramenta de Kubernetes de sua escolha ou o operador de GPU da NVIDIA. -
As AMIs do Bottlerocket otimizadas para o EKS já incluem nativamente o plug-in de dispositivos da NVIDIA para Kubernetes; portanto, nenhuma instalação adicional é necessária ao usar essas AMIs do Bottlerocket otimizadas para o EKS com GPUs NVIDIA. Isso se aplica também ao uso de instâncias de GPU no modo automático do EKS.
-
Ao usar as AMIs do AL2023 ou do Bottlerocket otimizadas para o EKS com GPUs do AWS Inferentia ou Trainium, é necessário instalar o plug-in de dispositivos do Neuron para Kubernetes e, opcionalmente, instalar a extensão de agendador do Neuron para Kubernetes
. Para obter mais informações, consulte a documentação do Neuron sobre execução no EKS .
Instalação do plug-in de dispositivos da NVIDIA para Kubernetes
O procedimento, apresentado a seguir, descreve como instalar o plug-in de dispositivos da NVIDIA para Kubernetes e executar um teste de exemplo em instâncias de GPU da NVIDIA.
Pré-requisitos
-
Cluster do EKS criado
-
Nós com GPUs da NVIDIA em execução no cluster usando a AMI do AL2023 otimizada para o EKS com a NVIDIA
-
O Helm foi instalado em seu ambiente de linha de comando. Consulte as Instruções de configuração do Helm.
Procedimento
-
Adicione o repositório
nvdpdo chart do Helm.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin -
Atualize o repositório local do Helm para confirmar que você tem os gráficos mais recentes.
helm repo update -
Obtenha a versão mais recente do plug-in de dispositivos da NVIDIA para 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 ... -
Instale o plug-in de dispositivos da NVIDIA para Kubernetes no cluster, substituindo a versão
0.17.4pela versão mais recente obtida no comando anterior.helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --version0.17.4\ --set gfd.enabled=true -
Verifique se o plug-in de dispositivos da NVIDIA para Kubernetes está em execução no cluster. A saída, apresentada a seguir, exibe o resultado para um cluster com dois nós.
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 -
Verifique se seus nós têm GPUs alocáveis com o comando apresentado a seguir.
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 -
Crie um arquivo denominado
nvidia-smi.yamlcom os conteúdos a seguir. Este manifesto inicia uma imagem de contêiner do AL2023 mínima que executa onvidia-smiem um nó.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 o manifesto com o comando a seguir.
kubectl apply -f nvidia-smi.yaml -
Após o pod concluir a execução, visualize os logs com o comando a seguir.
kubectl logs nvidia-smiVeja abaixo um exemplo de saída.
+-----------------------------------------------------------------------------------------+ | 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 | +-----------------------------------------------------------------------------------------+
Instalação do plug-in de dispositivos do Neuron para Kubernetes
O procedimento, apresentado a seguir, descreve como instalar o plug-in de dispositivos do Neuron para Kubernetes e executar um teste de exemplo em uma instância do Inferentia.
Pré-requisitos
-
Cluster do EKS criado
-
Nós com GPUs do Neuron em execução no cluster usando a AMI do AL2023 otimizada para o EKS com o Neuron ou a AMI do Bottlerocket
-
O Helm foi instalado em seu ambiente de linha de comando. Consulte as Instruções de configuração do Helm.
Procedimento
-
Instale o plug-in de dispositivos do Neuron para Kubernetes no cluster.
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false" -
Verifique se o plug-in de dispositivos do Neuron para Kubernetes está em execução no cluster. A saída, apresentada a seguir, exibe o resultado para um cluster com um único nó do 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 -
Verifique se seus nós têm NueronCores alocáveis com o comando apresentado a seguir.
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 -
Verifique se seus nós têm NueronDevices alocáveis com o comando apresentado a seguir.
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 -
Crie um arquivo denominado
neuron-ls.yamlcom os conteúdos a seguir. Este manifesto executa um contêiner do Neuron Monitorcom a ferramenta 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 o manifesto com o comando a seguir.
kubectl apply -f neuron-ls.yaml -
Após o pod concluir a execução, visualize os logs com o comando a seguir.
kubectl logs neuron-lsUm exemplo de saída está abaixo.
instance-type: inf2.xlarge instance-id: ... +--------+--------+--------+---------+ | NEURON | NEURON | NEURON | PCI | | DEVICE | CORES | MEMORY | BDF | +--------+--------+--------+---------+ | 0 | 2 | 32 GB | 00:1f.0 | +--------+--------+--------+---------+