Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Executar cargas de trabalho da GPU NVIDIA no Azure Kubernetes Service (AKS) normalmente exige que instale e mantenha o driver da GPU NVIDIA, o plugin do dispositivo Kubernetes e um exportador de métricas GPU em cada nó da GPU. Estes componentes permitem o agendamento da GPU, acesso a GPU a nível de contentor e telemetria, mas instalá-los manualmente ou através do Operador de GPU NVIDIA acrescenta sobrecarga operacional.
Com nós de GPU totalmente geridos (pré-visualização), o AKS instala e mantém o driver da GPU NVIDIA, o plugin de dispositivos e o exportador de métricas do Data Center GPU Manager (DCGM ) para si. A criação de conjuntos de nós da GPU torna-se uma única etapa, e a capacidade da GPU comporta-se como qualquer outro conjunto de nós do AKS.
Configura um pool de nós de GPU gerido através de dois campos abaixo de gpuProfile.nvidia:
-
managementMode(ManagedouUnmanaged) controla se o AKS instala toda a stack de GPU gerida (driver, plugin de dispositivo e exportador de métricas DCGM) ou apenas o driver. A predefinição éUnmanaged. -
migStrategy(None,Single, ouMixed) define a estratégia de GPU Multi-Instância (MIG) para SKUs de GPU suportadas como A100 e H100. A predefinição éNone.
Neste artigo, provisiona um pool de nós de GPU gerido, opcionalmente ativa o MIG, valida o stack e executa uma carga de trabalho de GPU de exemplo.
Importante
Os recursos de pré-visualização do AKS estão disponíveis numa base de autosserviço e adesão voluntária. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões de teste do AKS são parcialmente cobertas pelo suporte ao cliente numa base de melhor esforço. Assim sendo, estas funcionalidades não se destinam ao uso em produção. Para obter mais informações, consulte os seguintes artigos de suporte:
Antes de começar
- Este artigo pressupõe que você tenha um cluster AKS existente. Se você não tiver um cluster, crie um usando a CLI do Azure, o Azure PowerShell ou o portal do Azure.
- Precisa de instalar a versão 2.85.0 ou posterior da CLI do Azure. Para localizar a versão, execute
az --version. Se precisar de instalar ou atualizar, consulte Install CLI do Azure. - Você precisa instalar e atualizar para a versão mais recente da
aks-previewextensão. - Obtenha as credenciais para o seu cluster AKS com
az aks get-credentialsantes de executar os exemploskubectldeste artigo.
Componentes de GPU geridos
Um pool de nós de GPU gerido pode incluir os seguintes componentes em cada nó:
| Componente | O que faz | O que a AKS gere |
|---|---|---|
| Driver de GPU NVIDIA | Módulos do kernel e bibliotecas de espaço de utilizador que permitem ao sistema operativo e aos contentores comunicarem com o hardware da GPU. | Seleção da versão do driver, instalação durante o provisionamento do nó e reinstalação após as atualizações da imagem do nó. |
| Plugin de dispositivos NVIDIA Kubernetes | DaemonSet-equivalente que anuncia os recursos da GPU (nvidia.com/gpu, nvidia.com/mig-*) para o kubelet para que os pods os possam solicitar. |
Implementação, configuração (incluindo estratégia MIG) e ciclo de vida em cada nó da GPU. |
| Exportador de métricas NVIDIA DCGM e DCGM |
O Data Center GPU Manager recolhe dados de saúde e utilização da GPU e expõe métricas Prometheus (por exemplo, DCGM_FI_DEV_GPU_UTIL, DCGM_FI_DEV_GPU_TEMP) na porta 19400. |
Instalação, habilitação de serviços e a kubernetes.azure.com/dcgm-exporter=enabled etiqueta do nó usada para extrair métricas. |
| Sinais de saúde da GPU | Sinais NPD que revelam condições específicas de nós da GPU, como UnhealthyNvidiaDevicePlugin e UnhealthyNvidiaDCGMServices. |
Monitorização de NPD e reporte de condição nos nós da GPU. |
Instalar perfis
Dois gpuProfile campos decidem qual desses componentes o AKS instala:
-
gpuProfile.driver(InstallouNone): se o AKS instala o driver da GPU NVIDIA. -
gpuProfile.nvidia.managementMode(ManagedouUnmanaged): se o AKS também instala a pilha de GPU voltada para o Kubernetes sobre o driver.
Juntos, produzem três perfis de instalação:
| Perfil de instalação | Bandeiras CLI | O que o AKS instala e gere |
|---|---|---|
| Pilha completamente gerida |
--enable-managed-gpu=true (ou nenhuma das bandeiras) |
Os quatro componentes acima: driver, plugin de dispositivo, exportador de métricas DCGM e monitorização de saúde da GPU no NPD. |
| Apenas motorista (por defeito) | --enable-managed-gpu=false |
Apenas o driver da GPU NVIDIA. Instala e gere o plugin do dispositivo, o exportador de métricas e a monitorização da saúde (por exemplo, com o NVIDIA GPU Operator). |
| Nenhum (BYO) | --enable-managed-gpu=false --gpu-driver None |
Nada. O AKS não instala nenhum dos quatro componentes. Você é responsável pelo stack completo. Veja : Traga o seu próprio driver GPU. |
Predefinições e definições manuais
-
Predefinidos: Se não passar
--enable-managed-gpuou--gpu-driver, o AKS aplica o perfil Apenas controladores no conjunto de nós criado com uma dimensão de VM compatível com GPU NVIDIA. -
Override:
managementMode: Managedrequer o driver, por isso--gpu-driver Noneé ignorado quando--enable-managed-gpu=truee o driver ainda está instalado. Para saltar o driver, defina tanto--enable-managed-gpu=falsecomo--gpu-driver None. -
Imutabilidade:
managementMode,migStrategy, edriversão todas fixas na época da criação. Para alterar o perfil, crie um novo pool de nós.
Instalar a aks-preview extensão CLI
Instale a
aks-previewextensão CLI usando oaz extension addcomando. É necessária a versão 19.0.0b29 ou posterior.az extension add --name aks-previewAtualize a extensão para garantir que tem a versão mais recente instalada, utilizando o comando
az extension update.az extension update --name aks-preview
Registar o sinalizador de funcionalidade ManagedGPUExperiencePreview
Registar o flag de funcionalidade ManagedGPUExperiencePreview na sua subscrição utilizando o comando az feature register.
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
Limitações
- Atualmente, esse recurso suporta apenas tamanhos de máquina virtual (VM) habilitada para GPU NVIDIA .
- A atualização de um pool de nós de uso geral para adicionar um tamanho de VM GPU não é suportada no AKS.
- Os agrupamentos de nós do Windows não são compatíveis com esta funcionalidade, porque as métricas de GPU não são suportadas. Quando crias pools de nós para GPUs Windows, o AKS instala e gere automaticamente os drivers e o plugin do dispositivo DirectX. Para mais informações, consulte a documentação AKS Windows GPU.
- Não há suporte para a migração de pools de nós de GPU de várias instâncias existentes para usar esse recurso.
- Atualizações no local de um pool de nós de GPU NVIDIA existente para um pool de nós de GPU gerido não são suportadas. Para migrar, limita e drena os teus nós GPU existentes, depois redistribui as cargas de trabalho para um novo pool de nós da GPU criado com
--enable-managed-gpu=true. Para obter mais informações, consulte Redimensionar pools de nós no AKS. - Os campos
managementMode,migStrategyedriversobgpuProfilesão imutáveis após a criação do pool de nós. Para alterar estes valores, crie um novo node pool. - O autoscaler de cluster não é suportado em conjuntos de nós de GPU geridos durante o período de pré-visualização. Escala estes pools manualmente.
Observação
As VMs habilitadas para GPU contêm hardware especializado sujeito a preços mais altos e disponibilidade de região. Para obter mais informações, consulte a ferramenta de preços e a disponibilidade da região.
Criar um pool de nós GPU gerido pelo AKS (pré-visualização)
Adicione um pool de nós de GPU gerido a um cluster AKS existente passando --enable-managed-gpu=true para az aks nodepool add. O AKS configura gpuProfile.nvidia.managementMode para Managed e instala automaticamente o driver da GPU, o plugin do dispositivo e o exportador de métricas DCGM.
Para usar o SKU padrão do sistema operacional Ubuntu (OS), você cria o pool de nós sem especificar um SKU do sistema operacional. O conjunto de nós é configurado para utilizar o sistema operacional padrão com base na versão do Kubernetes do cluster.
Adicione um pool de nós ao cluster usando o comando
az aks nodepool addcom a flag--enable-managed-gpu=true.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --node-vm-size Standard_NC6s_v3 \ --node-taints sku=gpu:NoSchedule \ --enable-managed-gpu=trueConfirme se os componentes de software da GPU NVIDIA gerenciados foram instalados com êxito:
az aks nodepool show \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunpSua saída deve incluir os seguintes valores:
... "gpuProfile": { "driver": "Install", "driverType": "", "nvidia": { "managementMode": "Managed", "migStrategy": null } }, ...
Criar um pool de nós gerido para GPU Multi-Instância (MIG) (pré-visualização)
Para SKUs de GPU que suportam GPU Multi-Instance (como A100 e H100), defina uma estratégia MIG ao criar o pool de nós com a flag --gpu-mig-strategy. A estratégia controla como as partições MIG são expostas ao Kubernetes:
-
Single: Todas as instâncias MIG são agregadas no recurso padrãonvidia.com/gpu. -
Mixed: Cada perfil MIG é exposto como um recurso separado, comonvidia.com/mig-1g.10gb. -
None(padrão): MIG não está configurado.
Após a criação do pool de nós, o migStrategy campo torna-se imutável.
Para informações sobre particionamento MIG, tamanhos de VM suportados e perfis de instância de GPU, consulte Criar um pool de nós de GPU multi-instância em AKS e NVIDIA Multi-Instance GPU.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mignp \
--node-count 1 \
--node-vm-size Standard_NC24ads_A100_v4 \
--node-taints sku=gpu:NoSchedule \
--enable-managed-gpu=true \
--gpu-instance-profile MIG1g \
--gpu-mig-strategy Single
Com esta configuração, os pods solicitam recursos da GPU usando o nome padrão nvidia.com/gpu do recurso.
Verificar o pool gerido de nós GPU (versão preliminar)
Depois de o pool de nós estar pronto, execute as seguintes verificações para confirmar que a plataforma totalmente gerida está instalada e em bom estado.
Verifique as condições específicas dos nós da GPU no Node Problem Detector (NPD):
GPU_NODE=$(kubectl get nodes -l agentpool=gpunp -o jsonpath='{.items[0].metadata.name}') kubectl describe node $GPU_NODEEm um nó GPU gerido, ambas as seguintes condições devem reportar
False:Condition Situação Justificação UnhealthyNvidiaDevicePluginFalseHealthyNvidiaDevicePluginUnhealthyNvidiaDCGMServicesFalseHealthyNvidiaDCGMServicesVerifique se o rótulo da GPU gerida está presente no nó:
kubectl get node $GPU_NODE -o jsonpath='{.metadata.labels.kubernetes\.azure\.com/dcgm-exporter}'Resultados esperados:
enabled.Verifique se os recursos da GPU estão anunciados nos recursos alocáveis do nó:
kubectl get node $GPU_NODE -o jsonpath='{.status.allocatable}'Para um pool de nós não MIG, a saída inclui
"nvidia.com/gpu": "1"(ou mais, dependendo do SKU). Para um pool de nós MIGMixed, a saída inclui recursos específicos do MIG, como"nvidia.com/mig-1g.10gb": "7".Executa uma carga de trabalho de exemplo para confirmar o acesso à GPU a partir de um contentor:
apiVersion: v1 kind: Pod metadata: name: managed-gpu-test spec: restartPolicy: Never tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule" containers: - name: gpu-test image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu command: ["nvidia-smi"] resources: limits: nvidia.com/gpu: 1Consulte os podlogs para ver
nvidia-smia saída que mostra o dispositivo GPU, a versão do driver e a versão CUDA:kubectl logs managed-gpu-test
Dimensionar um pool de nós de GPU gerido (versão prévia)
Escale manualmente um pool de nós de GPU gerido com az aks nodepool scale. Os novos nós instalam toda a stack de GPU gerida.
az aks nodepool scale \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunp \
--node-count 2
Importante
Durante a prévia, os pools de nós de GPU geridos não suportam o escalador automático do cluster. Escala estes pools manualmente.
Perfis de instalação alternativos
Se o perfil de stack gerido completo não for adequado, o AKS suporta dois perfis alternativos em pools de nós da GPU.
Use este perfil quando quiser que o AKS instale e mantenha o driver da GPU NVIDIA, mas planeia implementar o plugin do dispositivo e o exportador de métricas você próprio (por exemplo, com o NVIDIA GPU Operator). Conjunto --enable-managed-gpu=false:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunp \
--node-count 1 \
--node-vm-size Standard_NC6s_v3 \
--node-taints sku=gpu:NoSchedule \
--enable-managed-gpu=false
Com esta configuração:
- O AKS instala e gere o driver da GPU NVIDIA (
gpuProfile.driverisInstall). - A AKS não instala um plugin de dispositivo, exportador de métricas DCGM ou regras de saúde da GPU.
gpuProfile.nvidiaénull. - Nenhum
nvidia.com/gpurecurso é anunciado até implementares um plugin de dispositivo.
Próximos passos
- Implante uma carga de trabalho de GPU de exemplo nos seus nós habilitados para GPU geridos pelo AKS.
- Saiba mais sobre a utilização da GPU e as métricas de desempenho do exportador gerenciado NVIDIA DCGM em seu pool de nós de GPU.
Artigos relacionados
- Use GPUs NVIDIA no AKS para a experiência padrão (não gerida) da GPU.
- Criar um pool de nós de GPU multi-instância (MIG) para informações de fundo sobre o particionamento MIG e tamanhos de VM suportados.
- Operador de GPU NVIDIA para gerir os drivers da GPU e o plugin do dispositivo por si próprio.
- Monitorizar as métricas da GPU do exportador gestor NVIDIA DCGM.
- Monitorização do estado da GPU com o Detector de Problemas do Nó (NPD) no AKS.
- Use GPUs do Windows no AKS para grupos de nós de GPU do Windows.
- Tamanhos de VMs GPU do Azure para a lista completa de VMs com GPU NVIDIA.
- Execute inferência distribuída em múltiplos nós de GPU AKS.