Criar um conjunto de nós de GPU totalmente gerido no Azure Kubernetes Service (AKS)

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.

Ao utilizar nós de GPU totalmente geridos, a AKS instala e mantém o controlador da GPU NVIDIA, o plug-in de dispositivo e o exportador de métricas do Data Center GPU Manager (DCGM) metrics exporter 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. Pode utilizar nós de GPU geridos com pools de nós de GPU criados manualmente e com aprovisionamento automático de nós (NAP), incluindo clusters AKS Automatic.

Configura um pool de nós de GPU gerido através de dois campos abaixo de gpuProfile.nvidia:

  • managementMode (Managed ou Unmanaged) 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, ou Mixed) 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.

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.
  • Obtenha as credenciais para o seu cluster AKS com az aks get-credentials antes de executar os exemplos kubectl deste 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 (Install ou None): se o AKS instala o driver da GPU NVIDIA.
  • gpuProfile.nvidia.managementMode (Managed ou Unmanaged): 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-gpu ou --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: Managed requer o driver, por isso --gpu-driver None é ignorado quando --enable-managed-gpu=true e o driver ainda está instalado. Para saltar o driver, defina tanto --enable-managed-gpu=false como --gpu-driver None.
  • Imutabilidade: managementMode, migStrategy, e driver são todas fixas na época da criação. Para alterar o perfil, crie um novo pool de nós.

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, migStrategy e driver sob gpuProfile são imutáveis após a criação do pool de nós. Para alterar estes valores, crie um novo node pool.

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 por AKS

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 clusters AKS Automatic ou AKS Standard que utilizam NAP, configure a pilha de GPU gerida no AKSNodeClass, em vez de utilizar az aks nodepool add.

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.

  1. Adicione um pool de nós ao cluster usando o comando az aks nodepool add com 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_NC4as_T4_v3 \
        --node-taints sku=gpu:NoSchedule \
        --enable-managed-gpu=true
    
  2. Confirme se os componentes de software da GPU NVIDIA gerenciados foram instalados com êxito:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp
    

    Sua saída deve incluir os seguintes valores:

    ...
    "gpuProfile": {
        "driver": "Install",
        "driverType": "",
        "nvidia": {
            "managementMode": "Managed",
            "migStrategy": null
        }
    },
    ...