O modelo traga seu próprio nó no software do Distributed Cloud somente para bare metal permite executar cargas de trabalho aceleradas por GPU no seu próprio hardware. Para preparar os clusters bare metal para GPUs NVIDIA, instale o operador de GPU NVIDIA e verifique se as GPUs são reconhecidas e estão funcionando.
Visão geral do operador de GPU NVIDIA
O operador de GPU NVIDIA usa o Operator Framework para gerenciar os componentes de software da NVIDIA necessários para provisionar e gerenciar dispositivos de GPU. Recomendamos que você use o operador de GPU NVIDIA para ter as seguintes flexibilidade e vantagens:
Escolha do tipo de GPU: o software do Distributed Cloud só é compatível com uma ampla variedade de tipos de GPU compatíveis com o 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, clusters independentes ou clusters híbridos.
Antes de começar
Antes de executar as etapas nas seções a seguir, verifique se você tem os seguintes requisitos prontos:
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 compatível do driver NVIDIA: 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 do driver NVIDIA:
Use o NVIDIA GPU Operator para instalar a versão adequada do driver de GPU NVIDIA, conforme descrito nas seções a seguir.
Use o driver da NVIDIA pré-instalado na imagem do sistema operacional.
Siga as instruções no Guia de início rápido de 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. Use o Helm para instalar o operador de GPU da NVIDIA. Execute os seguintes comandos 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 as GPUs:
Para dispositivos de GPU conectados por interconexão de componentes periféricos express (PCIe), execute o seguinte comando para ver uma lista de barramentos PCI do sistema com "NVIDIA" no nome:
sudo lspci | grep NVIDIAO resultado será o seguinte:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)Use 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á o 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 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 as 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 da 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 trabalho de GPU no cluster. Isso exige que todos os nós de trabalho com GPUs executem a mesma versão do sistema operacional para usar o contêiner do driver de GPU da NVIDIA. Para contornar isso, instale os drivers de GPU nos nós manualmente e execute 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 comuns de implantação e comandos de amostra, 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, a contagem de GPUs será configurada corretamente no campo
Allocatabledo recurso do nó.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7Substitua
GPU_NODE_NAMEpelo nome da máquina do nó com a GPU que você está testando.O resultado será o seguinte:
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 job de GPU de amostra, 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 para ver a saída do job de amostra:
kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIGO resultado será o 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 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 as atualizações ou upgrades do cluster ou do 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 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 7 dias. Esse job substitui as configurações do containerd, incluindo as adicionadas pelo operador de GPU NVIDIA.
Práticas recomendadas
Para minimizar conflitos e problemas com as configurações da NVIDIA, recomendamos que você tome 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 do ambiente de execução donvidia. Restaure o arquivoconfig.tomldepois que o upgrade ou a atualização for concluída 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 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 do hardware ou, se aplicável, o Suporte da NVIDIA diretamente.
Seu feedback é muito importante.