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 nos 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 uso com GPUs da NVIDIA.
O operador de GPU NVIDIA usa o Operator Framework para gerenciar os componentes de software NVIDIA necessários para provisionar e gerenciar dispositivos GPU. Recomendamos o uso do operador de GPU NVIDIA para as seguintes vantagens e flexibilidade:
Escolha do tipo de GPU: o Google Distributed Cloud somente software é compatível com uma ampla variedade de tipos de GPU aceitos pelo Operador de GPU NVIDIA mais recente.
Escolha do sistema operacional compatível: os nós de trabalho do cluster podem usar qualquer sistema operacional (SO) compatível 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 trabalho: clusters de usuário, independentes ou híbridos.
Esta página é destinada a administradores de TI e operadores que gerenciam o ciclo de vida da infraestrutura de tecnologia subjacente. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Funções e tarefas de usuário comuns do GKE Enterprise.
Antes de começar
Antes de realizar as etapas nas seções a seguir, verifique se você atende aos requisitos abaixo:
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 trabalho 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 usada precisa ser compatível com a GPU, o sistema operacional e a versão do CUDA usada pelos aplicativos. Você tem as seguintes opções de instalação de drivers da NVIDIA:
Use o Operador de GPU NVIDIA para instalar a versão adequada do driver da 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 para instalação de drivers 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 do administrador. Use o Helm para instalar o Operador de GPU NVIDIA. É possível executar os seguintes comandos para fazer o download e instalar a ferramenta de linha de comando 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 as GPUs:
Para dispositivos de GPU conectados por interconexão de componentes periféricos (PCIe), execute o comando a seguir para receber uma lista de barramentos PCI do sistema com "NVIDIA" no nome:
sudo lspci | grep NVIDIA
O 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-smi
O 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 do administrador:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo update
Instale 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
Use a flag
--set
para transmitir um conjunto de pares de chave-valor delimitado 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 conferir 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--set
na documentação do Helm.Desative a instalação do driver se você já tiver instalado o driver da GPU NVIDIA nos seus 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 trabalho 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 esse problema, instale os drivers de GPU nos nós manualmente e execute o comando
helm install
com--set driver.enabled=false
para impedir que o Operador de GPU NVIDIA implante drivers.helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set driver.enabled=false
Para cenários de implantação comuns e exemplos de comandos, consulte Cenários de implantação comuns 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 executando corretamente, a contagem de GPU vai aparecer corretamente no campo
Allocatable
do recurso de nó.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Substitua
GPU_NODE_NAME
pelo 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: 250
Para verificar se as GPUs estão funcionando, execute o seguinte job 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 arquivo kubeconfig do cluster.Verifique os registros para conferir a saída do job de exemplo:
kubectl logs job/test-job-gpu –kubeconfig=CLUSTER_KUBECONFIG
O 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 de contêineres aplicadas pelo operador poderão ser substituídas durante as atualizações ou upgrades do cluster ou do pool de nós.
As versões com suporte do Google Distributed Cloud instalam a versão 1.6 do containerd LTS, que não ativa a interface de dispositivo de contêiner (CDI). Se você seguir as instruções em Suporte para a interface do dispositivo do contêiner na documentação da NVIDIA, o ambiente de execução
nvidia-cdi
poderá não funcionar. O cluster ainda vai funcionar como esperado, mas alguns recursos do 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 sete dias. Esse job substitui as configurações de contêineres, incluindo as adicionadas pelo Operador de GPU NVIDIA.
Práticas recomendadas
Para minimizar conflitos e problemas com as configurações da NVIDIA, recomendamos as seguintes precauções:
Faça backup do arquivo de configuração do containerd,
/etc/containerd/config.toml
, antes de atualizar o cluster ou os pools de nós. Esse arquivo contém a configuração do ambiente de execuçãonvidia
. Restaure o arquivoconfig.toml
depois que o upgrade ou a atualização for concluído 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 de balanceador de carga (
loadBalancer.nodePoolSpec
).
Receber suporte
Se precisar de mais ajuda relacionada ao uso de GPUs com a 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 do hardware ou, se aplicável, o Suporte da NVIDIA diretamente.
Agradecemos seu feedback.