O aspeto traga o seu próprio nó da Google Distributed Cloud (apenas software) em bare metal permite-lhe tirar partido do seu hardware avançado, incluindo máquinas com GPUs, para obter o melhor desempenho e flexibilidade para os seus clusters.
Este documento descreve como instalar e usar o operador de GPU da NVIDIA para configurar clusters bare metal criados com o Google Distributed Cloud para utilização com GPUs da NVIDIA.
O operador de GPU da NVIDIA usa a estrutura do operador para gerir os componentes de software da NVIDIA necessários para aprovisionar e gerir dispositivos de GPU. Recomendamos que use o operador de GPU da NVIDIA para a seguinte flexibilidade e vantagens:
Escolha do tipo de GPU: o software Google Distributed Cloud apenas é compatível com uma vasta gama de tipos de GPU suportados pelo mais recente operador de GPU da NVIDIA.
Escolha do sistema operativo suportado: os nós de trabalho do cluster podem usar qualquer sistema operativo (SO) suportado com GPUs NVIDIA, e tem a opção de usar controladores de GPU pré-instalados ou instalação dinâmica de controladores com o operador de GPU NVIDIA.
Escolha de modelos de implementação: pode usar GPUs NVIDIA em qualquer tipo de cluster com nós de trabalho: clusters de utilizadores, clusters autónomos ou clusters híbridos.
Esta página destina-se a administradores de TI e operadores que gerem o ciclo de vida da infraestrutura tecnológica subjacente. Para saber mais sobre as funções comuns e exemplos de tarefas a que fazemos referência no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud
Antes de começar
Antes de realizar os passos nas secções seguintes, certifique-se de que tem os seguintes requisitos disponíveis:
Cluster operacional: certifique-se de que tem um cluster bare metal funcional criado com o Google Distributed Cloud.
GPUs NVIDIA: certifique-se de que as GPUs NVIDIA estão instaladas nos nós de trabalho do cluster. A secção seguinte para instalar o operador de GPU da NVIDIA inclui passos para verificar se as GPUs estão instaladas corretamente e são reconhecidas pelo seu sistema operativo.
Versão do controlador da NVIDIA compatível: a versão do controlador da NVIDIA que usa tem de ser compatível com a sua GPU, o seu sistema operativo e a versão do CUDA que as suas aplicações usam. Tem as seguintes opções de instalação do controlador da NVIDIA:
Use o operador de GPU da NVIDIA para instalar a versão adequada do controlador de GPU da NVIDIA, conforme descrito nas secções seguintes.
Use o controlador da NVIDIA pré-instalado na imagem do sistema operativo.
Use as instruções no guia de início rápido de instalação do controlador da NVIDIA para instalar manualmente o controlador da NVIDIA.
Helm versão 3.0.0 ou posterior: instale a interface de linha de comandos do Helm para a gestão de pacotes na sua estação de trabalho de administrador. Usa o Helm para instalar o NVIDIA GPU Operator. Pode executar os seguintes comandos para transferir e instalar a ferramenta de linha de comandos do Helm:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \ && chmod 700 get_helm.sh \ && ./get_helm.sh
Instale e valide o operador de GPU da NVIDIA
Os passos seguintes explicam a instalação do operador de GPU da NVIDIA no cluster bare metal e ajudam a confirmar que está a funcionar com as suas GPUs:
Para dispositivos de GPU ligados através de interconexão expressa de componentes periféricos (PCIe), execute o seguinte comando para obter uma lista de barramentos PCI do sistema com "NVIDIA" no respetivo nome:
sudo lspci | grep NVIDIA
O resultado é semelhante ao seguinte:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)
Pode usar a interface de gestão do sistema da NVIDIA (
nvidia-smi
) no nó especificado para obter informações mais detalhadas sobre os dispositivos GPU:nvidia-smi
O resultado é semelhante ao seguinte:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.1 CUDA Veersion 12.2 | |-----------------------------------------+----------------------+----------------------| | 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 A100 80GB PCIe Off | 00000000:25:00.0 Off | 0 | | N/A 30C P0 44W / 300W | 0MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
Adicione o repositório Helm da NVIDIA na estação de trabalho do administrador:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo update
Instale o operador de GPU da NVIDIA.
Quando instala o operador de GPU da NVIDIA, existem três variações de comandos básicos:
Instale o operador de GPU da NVIDIA com a configuração predefinida:
helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator
Use a flag
--set
para transmitir um conjunto de pares de chave-valor delimitados por vírgulas para especificar opções de configuração:helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set OPTION_1_NAME=OPTION_1_VALUE,OPTION_2_NAME=OPTION_2_VALUE
Para ver uma lista detalhada das opções de configuração, consulte o artigo Opções comuns de personalização de gráficos na documentação da NVIDIA. Para informações sobre a logística de utilização da flag
--set
, consulte O formato e as limitações de--set
na documentação do Helm.Desative a instalação de controladores se já tiver instalado o controlador da GPU NVIDIA nos seus nós:
Por predefinição, o operador de GPU da NVIDIA implementa o controlador de GPU mais recente ou especificado em todos os nós de trabalho da GPU no cluster. Isto requer que todos os nós de trabalho com GPUs executem a mesma versão do sistema operativo para usar o contentor do controlador de GPU da NVIDIA. Para contornar esta situação, pode instalar manualmente os controladores da GPU nos nós e executar o comando
helm install
com--set driver.enabled=false
para impedir que o operador de GPU da NVIDIA implemente controladores.helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set driver.enabled=false
Para ver cenários de implementação comuns e comandos de exemplo, consulte o artigo Cenários de implementação comuns na documentação da NVIDIA.
Verifique a exportação de recursos da GPU:
Depois de o operador de GPU da NVIDIA ser instalado com um controlador de GPU e um plug-in de dispositivo em funcionamento correto, deve ver que a contagem de GPUs está configurada corretamente no campo
Allocatable
para o recurso do nó.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Substitua
GPU_NODE_NAME
pelo nome da máquina do nó com a GPU que está a testar.O resultado é semelhante ao seguinte:
Allocatable: cpu: 127130m ephemeral-storage: 858356868519 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 509648288Ki nvidia.com/gpu: 1 pods: 250
Para verificar se as GPUs estão a funcionar, execute a seguinte tarefa de GPU de exemplo, que executa o comando
nvidia-smi
:export NODE_NAME=GPU_NODE_NAME cat <<EOF | kubectl create --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: batch/v1 kind: Job metadata: name: test-job-gpu spec: template: spec: runtimeClassName: nvidia containers: - name: nvidia-test image: nvidia/cuda:12.0.0-base-ubuntu22.04 command: ["nvidia-smi"] resources: limits: nvidia.com/gpu: 1 nodeSelector: kubernetes.io/hostname: ${NODE_NAME} restartPolicy: Never EOF
Substitua
CLUSTER_KUBECONFIG
pelo caminho do ficheiro kubeconfig do cluster.Verifique os registos da saída da tarefa de exemplo:
kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIG
O resultado é semelhante ao seguinte:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.1 CUDA Veersion 12.2 | |-----------------------------------------+----------------------+----------------------| | 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 A100 80GB PCIe Off | 00000000:25:00.0 Off | 0 | | N/A 30C P0 44W / 300W | 0MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
Limitações
As seguintes limitações aplicam-se quando usa o operador de GPU da NVIDIA com clusters criados com o Google Distributed Cloud:
Se instalar uma versão recente do operador de GPU da NVIDIA, as configurações do containerd aplicadas pelo operador podem ser substituídas durante as atualizações ou as atualizações de clusters ou de conjuntos de nós.
As versões suportadas da instalação do Google Distributed Cloud contêm a versão LTS 1.6 do containerd, que não ativa a interface de dispositivo de contentor (CDI). Se seguir as instruções em Suporte para a interface do dispositivo de contentor na documentação da NVIDIA, o tempo de execução
nvidia-cdi
pode não funcionar. O cluster deve continuar a funcionar como esperado, mas algumas capacidades de CDI podem não estar disponíveis.Os conjuntos de nós do equilibrador de carga executam automaticamente uma tarefa de atualização a cada 7 dias. Esta tarefa substitui as configurações do containerd, incluindo as adicionadas pelo operador de GPU da NVIDIA.
Práticas recomendadas
Para minimizar os conflitos e os problemas com as suas configurações da NVIDIA, recomendamos que tome as seguintes precauções:
Faça uma cópia de segurança do ficheiro de configuração do containerd,
/etc/containerd/config.toml
, antes de atualizar o cluster ou os conjuntos de nós. Este ficheiro contém a configuração de tempo de execuçãonvidia
. Restaure o ficheiroconfig.toml
após a atualização ser concluída com êxito e reinicie o containerd para que as alterações de configuração entrem em vigor.Para evitar potenciais conflitos ou problemas com a configuração do containerd, não use nós de GPU como nós de equilibrador de carga (
loadBalancer.nodePoolSpec
).
Obter apoio técnico
Se precisar de assistência adicional relacionada com a utilização de GPUs com o Google Distributed Cloud, contacte o apoio ao cliente do Google Cloud.
Para problemas relacionados com a configuração ou a utilização de hardware de GPU no seu sistema operativo, consulte o fornecedor de hardware ou, se aplicável, contacte diretamente o apoio técnico da NVIDIA.
Agradecemos o seu feedback.