O aspecto traga seu próprio nó do Google Distributed Cloud (somente software) em bare metal permite aproveitar seu hardware avançado, incluindo máquinas com GPUs, para ter o melhor desempenho e flexibilidade para seus clusters.
Este documento descreve como instalar e usar o operador de GPU NVIDIA para configurar clusters bare metal criados com o Google Distributed Cloud para uso com GPUs NVIDIA.
O operador de GPU NVIDIA usa o Operator Framework para gerenciar os componentes de software NVIDIA necessários para provisionar e gerenciar dispositivos de GPU. Recomendamos que você use o operador de GPU NVIDIA para a seguinte flexibilidade e vantagens:
Escolha do tipo de GPU: o software do Google Distributed Cloud é compatível com uma ampla variedade de tipos de GPU com suporte do operador de GPU NVIDIA mais recente.
Escolha do sistema operacional com suporte: os nós de worker do cluster podem usar qualquer sistema operacional (SO) com suporte com GPUs NVIDIA, e você tem a opção de usar drivers de GPU pré-instalados ou instalação dinâmica de drivers com o operador de GPU NVIDIA.
Escolha de modelos de implantação: é possível usar GPUs NVIDIA em qualquer tipo de cluster com nós de worker: clusters de usuários, clusters independentes ou clusters híbridos.
Esta página é destinada a administradores de TI e operadores responsáveis por gerenciar o ciclo de vida de infraestruturas de tecnologia. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no Google Cloud conteúdo, consulte Funções e tarefas comuns do usuário do GKE.
Antes de começar
Antes de realizar as etapas nas seções a seguir, verifique se você tem os seguintes requisitos:
Cluster operacional: verifique se você tem um cluster bare metal funcional criado com o Google Distributed Cloud.
GPUs NVIDIA: verifique se as GPUs NVIDIA estão instaladas nos nós de worker do cluster. A seção a seguir para instalar o operador de GPU NVIDIA inclui etapas para verificar se as GPUs estão instaladas corretamente e reconhecidas pelo sistema operacional.
Versão do driver NVIDIA compatível: a versão do driver NVIDIA que você usa precisa ser compatível com a GPU, o sistema operacional e a versão do CUDA que seus aplicativos usam. Você tem as seguintes opções de instalação do driver NVIDIA:
Use o operador de GPU NVIDIA para instalar a versão adequada do driver de GPU NVIDIA, conforme descrito nas seções a seguir.
Use o driver NVIDIA pré-instalado na imagem do sistema operacional.
Use as instruções no Guia de início rápido da instalação do driver NVIDIA para instalar manualmente o driver NVIDIA.
Helm versão 3.0.0 ou mais recente: instale a interface de linha de comando do Helm para gerenciamento de pacotes na estação de trabalho de administrador. Você usa o Helm para instalar o operador de GPU NVIDIA. É possível executar os comandos a seguir para fazer o download e instalar a ferramenta de linha de comando 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
Instalar e verificar o operador de GPU NVIDIA
As etapas a seguir orientam você na instalação do operador de GPU NVIDIA no cluster bare metal e ajudam a confirmar se ele está funcionando com suas GPUs:
Para dispositivos de GPU conectados por meio de interconexão de componentes periféricos expressa (PCIe), execute o comando a seguir para receber uma lista de barramentos PCI do sistema com "NVIDIA" no nome:
sudo lspci | grep NVIDIAO resultado será assim:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)É possível usar a ferramenta de linha de comando da interface de gerenciamento do sistema NVIDIA (
nvidia-smi) em um determinado nó para receber informações mais detalhadas sobre os dispositivos de GPU:nvidia-smiO resultado será assim:
+---------------------------------------------------------------------------------------+ | 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 do Helm da NVIDIA na estação de trabalho de administrador:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo updateInstale o operador de GPU NVIDIA.
Ao instalar o operador de GPU NVIDIA, há três variações básicas de comando:
Instale o operador de GPU NVIDIA com a configuração padrão:
helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set cdi.enabled=true \ --set cdi.default=trueUse a flag
--setpara 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 cdi.enabled=true \ --set cdi.default=true \ --set OPTION_1_NAME=OPTION_1_VALUE,OPTION_2_NAME=OPTION_2_VALUEPara uma lista detalhada de opções de configuração, consulte Opções comuns de personalização de gráficos na documentação da NVIDIA. Para informações sobre a logística de uso da flag
--set, consulte O formato e as limitações de--setna documentação do Helm.Desative a instalação do driver se você já tiver instalado o driver de GPU NVIDIA nos nós:
Por padrão, o operador de GPU NVIDIA implanta o driver de GPU mais recente ou especificado em todos os nós de worker de GPU no cluster. Isso exige que todos os nós de worker com GPUs executem a mesma versão do sistema operacional para usar o contêiner do driver de GPU NVIDIA. Para contornar isso, é possível instalar drivers de GPU nos nós manualmente e executar o comando
helm installcom--set driver.enabled=falsepara impedir que o operador de GPU NVIDIA implante drivers.helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set cdi.enabled=true \ --set cdi.default=true \ --set driver.enabled=false
Para cenários de implantação comuns e comandos de exemplo, consulte Cenários comuns de implantação na documentação da NVIDIA.
Verifique a exportação de recursos da GPU:
Depois que o operador de GPU NVIDIA for instalado com um driver de GPU e um plug-in de dispositivo em execução corretamente, você verá que a contagem de GPUs está configurada corretamente no campo
Allocatablepara o recurso do nó.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7Substitua
GPU_NODE_NAMEpelo nome da máquina de nó com a GPU que você está testando.O resultado será assim:
Allocatable: cpu: 127130m ephemeral-storage: 858356868519 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 509648288Ki nvidia.com/gpu: 1 pods: 250Para verificar se as GPUs estão funcionando, execute o seguinte exemplo de job de GPU, 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 EOFSubstitua
CLUSTER_KUBECONFIGpelo caminho do arquivo kubeconfig do cluster.Verifique os registros da saída do job de exemplo:
kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIGO resultado será assim:
+---------------------------------------------------------------------------------------+ | 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 limitações a seguir se aplicam quando você usa o operador de GPU NVIDIA com clusters criados com o Google Distributed Cloud:
Se você instalar uma versão recente do operador de GPU NVIDIA, as configurações do containerd aplicadas pelo operador poderão ser substituídas durante atualizações ou upgrades de cluster ou pool de nós.
Use a interface de dispositivo de contêiner (CDI, na sigla em inglês) para cargas de trabalho de GPU. Para versões anteriores do Google Distributed Cloud que usam o containerd 1.6, alguns recursos de CDI podem não estar disponíveis.
Os pools de nós do balanceador de carga executam automaticamente um job de atualização a cada 7 dias. Esse job substitui as configurações do containerd, incluindo aquelas adicionadas pelo operador de GPU NVIDIA.
Práticas recomendadas
Para minimizar conflitos e problemas com as configurações da NVIDIA, recomendamos que você use as seguintes precauções:
Faça backup do arquivo de configuração do containerd,
/etc/containerd/config.toml, antes de fazer upgrade ou atualizar o cluster ou os pools de nós. Esse arquivo contém a configuração de ambiente de execuçãonvidia. Restaure o arquivoconfig.tomlapós a conclusão do upgrade ou da atualização e reinicie o containerd para que as mudanças de configuração entrem em vigor.Para evitar possíveis conflitos ou problemas com a configuração do containerd, não use nós de GPU como nós do balanceador de carga (
loadBalancer.nodePoolSpec).
Receber suporte
Se você precisar de mais ajuda relacionada ao uso de GPUs com o Google Distributed Cloud, entre em contato com o Cloud Customer Care.
Para problemas relacionados à configuração ou ao uso de hardware de GPU no sistema operacional, consulte o fornecedor de hardware ou, se aplicável, o suporte da NVIDIA diretamente.
Agradecemos seu feedback.