Usar GPUs para cargas de trabalho com uso intensivo de computação (AKS no Azure Stack HCI 23H2)
Aplica-se a: Azure Stack HCI, versão 23H2
Observação
Para obter informações sobre GPUs no AKS no Azure Stack HCI 22H2, consulte Usar GPUs (HCI 22H2).
As GPUs (Unidades de Processamento Gráfico) são usadas para cargas de trabalho com uso intensivo de computação, como aprendizado de máquina, aprendizado profundo e muito mais. Este artigo descreve como usar GPUs para cargas de trabalho com uso intensivo de computação no AKS habilitado pelo Azure Arc.
Modelos de GPU com suporte
Os seguintes modelos de GPU têm suporte do AKS no Azure Stack HCI 23H2:
Fabricante | Modelo de GPU | Versão com suporte |
---|---|---|
Nvidia | A2 | 2311.2 |
Nvidia | A16 | 2402.0 |
Tamanhos de VM com suporte
Os seguintes tamanhos de VM para cada modelo de GPU têm suporte do AKS no Azure Stack HCI 23H2.
O Nvidia A2 é compatível com SKUs NC2 A2
Tamanho da VM | GPUs | Memória da GPU: GiB | vCPU | Memória: GiB |
---|---|---|---|---|
Standard_NC4_A2 | 1 | 16 | 4 | 8 |
Standard_NC8_A2 | 1 | 16 | 8 | 16 |
Standard_NC16_A2 | 2 | 48 | 16 | 64 |
Standard_NC32_A2 | 2 | 48 | 32 | 28 |
O Nvidia A16 é compatível com SKUs NC2 A16
Tamanho da VM | GPUs | Memória da GPU: GiB | vCPU | Memória: GiB |
---|---|---|---|---|
Standard_NC4_A16 | 1 | 16 | 4 | 8 |
Standard_NC8_A16 | 1 | 16 | 8 | 16 |
Standard_NC16_A16 | 2 | 48 | 16 | 64 |
Standard_NC32_A16 | 2 | 48 | 32 | 28 |
Antes de começar
Para usar GPUs no AKS Arc, instale os drivers de GPU necessários antes de iniciar a implantação do cluster. Siga as etapas nesta seção.
Etapa 1: instalar o sistema operacional
Instale o sistema operacional Azure Stack HCI, versão 23H2 localmente, em cada servidor no cluster do Azure Stack HCI.
Etapa 2: baixar e instalar o driver de mitigação NVIDIA
O software pode incluir componentes desenvolvidos e pertencentes à NVIDIA Corporation ou seus licenciadores. O uso desses componentes é regido pelo contrato de licença do usuário final da NVIDIA.
Consulte a documentação do data center NVIDIA para baixar o driver de mitigação NVIDIA. Depois de baixar o driver, expanda o arquivo morto e instale o driver de mitigação em cada computador host.
Invoke-WebRequest -Uri "https://docs.nvidia.com/datacenter/tesla/gpu-passthrough/nvidia_azure_stack_inf_v2022.10.13_public.zip" -OutFile "nvidia_azure_stack_inf_v2022.10.13_public.zip"
mkdir nvidia-mitigation-driver
Expand-Archive .\nvidia_azure_stack_inf_v2022.10.13_public.zip .\nvidia-mitigation-driver\
Para instalar o driver de mitigação, navegue até a pasta que contém os arquivos extraídos e selecione o arquivo de driver de GPU com base no tipo de GPU real instalado nos hosts do Azure Stack HCI. Por exemplo, se o tipo for GPU A2, clique com o botão direito do mouse no arquivo nvidia_azure_stack_A2_base.inf e selecione Instalar.
Você também pode instalar usando a linha de comando navegando até a pasta e executando os seguintes comandos para instalar o driver de mitigação:
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install
pnputil /scan-devices
Depois de instalar o driver de mitigação, as GPUs são listadas no estado OK em Nvidia A2_base – Desmontada:
Get-PnpDevice | select status, class, friendlyname, instanceid | findstr /i /c:"nvidia"
OK Nvidia A2_base - Dismounted PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000
OK Nvidia A2_base - Dismounted PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&3569C1D3&0&0000
Etapa 3: repetir as etapas 1 e 2
Repita as etapas 1 e 2 para cada servidor no cluster HCI.
Etapa 4: continuar a implantação do cluster do Azure Stack HCI
Continue a implantação do cluster do Azure Stack HCI seguindo as etapas em Azure Stack HCI, versão 23H2 implantação.
Obter uma lista de SKUs de VM habilitadas para GPU disponíveis
Depois que a implantação do cluster do Azure Stack HCI for concluída, você poderá executar o comando da CLI a seguir para mostrar as SKUs de VM disponíveis em sua implantação. Se os drivers de GPU estiverem instalados corretamente, as SKUs de VM de GPU correspondentes serão listadas:
az aksarc vmsize list --custom-location <custom location ID> -g <resource group name>
Criar um novo cluster de carga de trabalho com um pool de nós habilitado para GPU
Atualmente, o uso de pools de nós habilitados para GPU só está disponível para pools de nós do Linux. Para criar um novo cluster do Kubernetes:
az aksarc create -n <aks cluster name> -g <resource group name> --custom-location <custom location ID> --vnet-ids <vnet ID>
O exemplo a seguir adiciona um pool de nós com dois nós habilitados para GPU (NVDIA A2) com um Standard_NC4_A2 SKU de VM:
az aksarc nodepool add --cluster-name <aks cluster name> -n <node pool name> -g <resource group name> --node-count 2 --node-vm-size Standard_NC4_A2 --os-type Linux
Confirme se você pode agendar GPUs
Com o pool de nós de GPU criado, confirme se você pode agendar GPUs no Kubernetes. Primeiro, liste os nós no seu cluster usando o comando kubectl get nodes:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
moc-l9qz36vtxzj Ready control-plane,master 6m14s v1.22.6
moc-lhbkqoncefu Ready <none> 3m19s v1.22.6
moc-li87udi8l9s Ready <none> 3m5s v1.22.6
Agora, use o comando kubectl describe node para confirmar se as GPUs podem ser agendadas. Na seção Capacidade , a GPU deve aparecer como nvidia.com/gpu: 1.
kubectl describe <node> | findstr "gpu"
A saída deve exibir as GPUs do nó de trabalho e ter esta aparência:
Capacity:
cpu: 4
ephemeral-storage: 103110508Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7865020Ki
nvidia.com/gpu: 1
pods: 110
Executar uma carga de trabalho habilitada para GPU
Depois de concluir as etapas anteriores, crie um novo arquivo YAML para teste; por exemplo, gpupod.yaml. Copie e cole o YAML a seguir no novo arquivo chamado gpupod.yaml e salve-o:
apiVersion: v1
kind: Pod
metadata:
name: cuda-vector-add
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vector-add
image: "k8s.gcr.io/cuda-vector-add:v0.1"
resources:
limits:
nvidia.com/gpu: 1
Execute o seguinte comando para implantar o aplicativo de exemplo:
kubectl apply -f gpupod.yaml
Verifique se o pod foi iniciado, concluído em execução e se a GPU foi atribuída:
kubectl describe pod cuda-vector-add | findstr 'gpu'
O comando anterior deve mostrar uma GPU atribuída:
nvidia.com/gpu: 1
nvidia.com/gpu: 1
Verifique o arquivo de log do pod para ver se o teste foi aprovado:
kubectl logs cuda-vector-add
Veja a seguir o exemplo de saída do comando anterior:
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
Se você receber um erro de incompatibilidade de versão ao chamar drivers, como "A versão do driver CUDA é insuficiente para a versão de runtime do CUDA", examine o gráfico de compatibilidade da matriz de driver NVIDIA.
Perguntas frequentes
O que acontece durante a atualização de um pool de nós habilitado para GPU?
Atualizar pools de nós habilitados para GPU segue o mesmo padrão de atualização sem interrupção usado para pools de nós regulares. Para que pools de nós habilitados para GPU em uma nova VM sejam criados com êxito no computador host físico, é necessário que uma ou mais GPUs físicas estejam disponíveis para atribuição bem-sucedida do dispositivo. Essa disponibilidade garante que seus aplicativos possam continuar em execução quando o Kubernetes agendar pods neste nó atualizado.
Antes de atualizar:
- Planeje o tempo de inatividade durante a atualização.
- Tenha uma GPU extra por host físico se você estiver executando a Standard_NK6 ou duas GPUs extras se estiver executando Standard_NK12. Se você estiver executando com capacidade total e não tiver uma GPU extra, recomendamos reduzir verticalmente o pool de nós para um único nó antes da atualização e, em seguida, escalar verticalmente após a atualização ter êxito.
O que acontece se eu não tiver GPUs físicas extras no meu computador físico durante uma atualização?
Se uma atualização for disparada em um cluster sem recursos extras de GPU para facilitar a atualização sem interrupção, o processo de atualização será travado até que uma GPU esteja disponível. Se você executar com capacidade total e não tiver uma GPU extra, recomendamos reduzir verticalmente o pool de nós para um único nó antes da atualização e, em seguida, escalar verticalmente após a atualização ser bem-sucedida.
Próximas etapas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de