Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os tamanhos da VM (Máquina Virtual) amd gpu no Azure podem fornecer flexibilidade no desempenho e no custo, oferecendo alta capacidade de computação, permitindo que você escolha a configuração certa para seus requisitos de carga de trabalho. O AKS dá suporte a pools de nós Linux habilitados para GPU AMD para executar cargas de trabalho do Kubernetes computacionalmente intensivas.
Este artigo ajuda você a provisionar nós com GPUs AMD programáveis em clusters novos e existentes do AKS.
Limitações
- Atualmente, o AKS dá suporte ao dimensionamento de VM do Azure
Standard_ND96isr_MI300X_v5da plataforma GPU AMD série MI300. - Atualizar um pool de nós existente para adicionar um tamanho de VM com GPU AMD não é suportado no AKS.
- Não há suporte para atualização de um pool de nós sem GPU AMD para um dimensionamento de VM com GPU AMD.
-
AzureLinuxWindows,AzureLinuxOSGuardeflatcarnão são compatíveis com a GPU AMD.
Antes de começar
- Este artigo considera que você tenha um cluster do AKS. Se você não tiver um cluster, crie um usando a CLI do Azure, Azure PowerShell, ou o portal do Azure.
- Você precisa da CLI do Azure versão 2.72.2 ou posterior instalada para definir o
--gpu-drivercampo. Executeaz --versionpara encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure. - Se você tiver a extensão da CLI do
aks-previewAzure instalada, atualize a versão para 18.0.0b2 ou posterior.
Observação
As VMs habilitadas para GPU contêm um hardware especializado sujeito a preços mais altos e disponibilidade da região. Para obter mais informações, confira a ferramenta preço e a disponibilidade de região.
Obter as credenciais para o cluster
Obtenha as credenciais do cluster do AKS usando o comando az aks get-credentials. O seguinte comando de exemplo obtém as credenciais do cluster myAKSCluster no myResourceGroup grupo de recursos:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Opções para usar GPUs AMD
O uso de GPUs AMD envolve a instalação de vários componentes de software de GPU AMD, como o plug-in de dispositivo AMD para Kubernetes, drivers de GPU e muito mais.
Observação
Atualmente, o AKS não gerencia nem automatiza a instalação de drivers de GPU ou do plugin do dispositivo de GPU AMD em pools de nós habilitados para GPU AMD.
Registrar o recurso AKSInfinibandSupport
Se o dimensionamento da sua VM com GPU AMD for habilitado para RDMA com a convenção de nomenclatura
r(por exemplo,Standard_ND96isr_MI300X_v5), será necessário garantir que os computadores no pool de nós estejam na mesma rede física Infiniband. Para isso, registre o sinalizador de recursoAKSInfinibandSupportusando o comandoaz feature register:az feature register --name AKSInfinibandSupport --namespace Microsoft.ContainerServiceVerifique o status do registro usando o comando
az feature show:az feature show \ --namespace "Microsoft.ContainerService" \ --name AKSInfinibandSupportCrie um pool de nós habilitado para GPU AMD usando o comando
az aks nodepool adde ignore a instalação do driver padrão definindo o campo de API--gpu-drivercomo o valornone:az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --node-vm-size Standard_ND96isr_MI300X_v5 \ --gpu-driver noneObservação
Atualmente, o AKS impõe o uso do campo
gpu-driverpara ignorar a instalação automática do driver no momento da criação do pool de nós de GPU AMD.
Implantar o Operador de GPU da AMD no AKS
O Operador de GPU AMD automatiza o gerenciamento e a implantação de todos os componentes de software AMD necessários para provisionar a GPU, incluindo a instalação do driver, o plug-in de dispositivo AMD para Kubernetes, o runtime de contêiner AMD e muito mais. Como o Operador de GPU AMD manipula esses componentes, não é necessário instalar separadamente o plug-in de dispositivo AMD no cluster do AKS. Isso também significa que não deve ocorrer a instalação automática dos drivers de GPU para utilizar o operador de GPU AMD no AKS.
Siga a documentação da AMD para instalar o operador de GPU.
Verifique o status das GPUs AMD no pool de nós usando o
kubectl get nodescomando:kubectl get nodes -o custom-columns=NAME:.metadata.name,GPUs:.status.capacity.'amd\.com/gpu'Seu resultado deve ser semelhante ao seguinte exemplo de saída:
NAME STATUS ROLES AGE VERSION aks-gpunp-00000000 Ready agent 2m4s v1.31.7
Confirme se as GPUs AMD são programáveis
Depois de criar o pool de nós, confirme se as GPUs estão agendáveis no cluster do AKS.
Listar os nós em seu cluster usando o comando
kubectl get nodes.kubectl get nodesConfirme se as GPUs são agendáveis usando o comando
kubectl describe node.kubectl describe node aks-gpunp-00000000Na seção Capacidade, a GPU deve ser listada como
amd.com/gpu: 1. Seu resultado deve ser semelhante ao seguinte exemplo de saída condensado:Name: aks-gpunp-00000000 Roles: agent Labels: accelerator=amd [...] Capacity: [...] amd.com/gpu: 1 [...]
Executar uma carga de trabalho habilitada para GPU AMD
Para ver a GPU AMD em ação, você pode agendar uma carga de trabalho habilitada para GPU com a solicitação de recurso apropriada. Neste exemplo, vamos executar um trabalho do Tensorflow contra o conjunto de dados do MNIST.
Crie um arquivo nomeado samples-tf-mnist-demo.yaml e cole o seguinte manifesto YAML, que inclui um limite de recursos de
amd.com/gpu: 1:apiVersion: batch/v1 kind: Job metadata: labels: app: samples-tf-mnist-demo name: samples-tf-mnist-demo spec: template: metadata: labels: app: samples-tf-mnist-demo spec: containers: - name: samples-tf-mnist-demo image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu args: ["--max_steps", "500"] imagePullPolicy: IfNotPresent resources: limits: amd.com/gpu: 1 restartPolicy: OnFailure tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule"Execute o trabalho usando o comando
kubectl apply, que analisa o arquivo de manifesto e cria os objetos definidos do Kubernetes.kubectl apply -f samples-tf-mnist-demo.yaml
Exibir o status da carga de trabalho habilitada para GPU
Monitore o andamento do trabalho usando o comando
kubectl get jobscom o sinalizador--watch. Pode levar alguns minutos para primeiro baixar a imagem e processar o conjunto de dados.kubectl get jobs samples-tf-mnist-demo --watchQuando a coluna COMPLETIONS mostra 1/1, o trabalho foi concluído com sucesso, conforme mostrado no exemplo de saída a seguir:
NAME COMPLETIONS DURATION AGE samples-tf-mnist-demo 0/1 3m29s 3m29s samples-tf-mnist-demo 1/1 3m10s 3m36sSaia do processo
kubectl --watchcom Ctrl-C.Obtenha o nome do pod usando o comando
kubectl get pods.kubectl get pods --selector app=samples-tf-mnist-demo
Limpar os recursos
Remova os objetos do Kubernetes associados que você criou neste artigo usando o comando kubectl delete job.
kubectl delete jobs samples-tf-mnist-demo
Próximas etapas
- Explore as diferentes opções de armazenamento para seu aplicativo baseado em GPU no AKS.
- Saiba mais sobre clusters Ray no AKS.
- Use GPUs NVIDIA para cargas de trabalho intensivas em computação do AKS.