Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Algumas GPUs NVIDIA podem ser divididas em até sete instâncias independentes. Cada instância tem seu próprio Stream Multiprocessor (SM), que é responsável pela execução de instruções em paralelo, e memória GPU. Para obter mais informações sobre particionamento de GPU, consulte NVIDIA MIG.
Este artigo orienta você sobre como criar um pool de nós de GPU de várias instâncias usando um tamanho de VM compatível com MIG em um cluster do Serviço Kubernetes do Azure (AKS).
Pré-requisitos e limitações
- Uma conta do Azure com uma subscrição ativa. Se não tiver uma, pode criar uma conta gratuitamente.
- Azure CLI versão 2.2.0 ou posterior instalada e configurada. Executar
az --versionpara localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). - O cliente de linha de comando Kubernetes, kubectl, instalado e configurado. Se você usa o Azure Cloud Shell,
kubectljá está instalado. Se você quiser instalá-lo localmente, você pode usar oaz aks install-clicomando. - Helm v3 instalado e configurado. Para obter mais informações, consulte Instalação do Helm.
- Atualmente, não há suporte para pools de nós de GPU de várias instâncias no Azure Linux.
- Atualmente, o Multi-instance GPU é suportado nos
Standard_NC40ads_H100_v5, tamanhos de VM de GPU,Standard_ND96isr_H100_v5e A100 no AKS.
Perfis de instância de GPU
Os perfis de instância da GPU definem como as GPUs são particionadas. A tabela a seguir mostra o perfil de instância de GPU disponível para o Standard_ND96asr_v4:
| Nome do perfil | Fração de SM | Fração de memória | Número de instâncias criadas |
|---|---|---|---|
| MIG 1 g. 5 gb | 1/7 | 1/8 | 7 |
| MIG 2G.10GB | 2/7 | 2/8 | 3 |
| MIG 3G.20GB | 3/7 | 4 de agosto | 2 |
| MIG 4G.20GB | 4/7 | 4 de agosto | 1 |
| MIG 7G. 40GB | 07/07 | 8/8 | 1 |
Como exemplo, o perfil da instância da GPU MIG 1g.5gb indica que cada instância da GPU tem 1g SM (multiprocessadores de fluxo) e 5gb de memória. Neste caso, a GPU é particionada em sete instâncias.
Os perfis de instância de GPU disponíveis para esse tamanho de VM incluem MIG1g, MIG2g, MIG3g, MIG4ge MIG7g.
Importante
Não é possível alterar o perfil de instância da GPU aplicado após a criação do pool de nós.
Criar um cluster do AKS
Crie um grupo de recursos do Azure usando o
az group createcomando.az group create --name myResourceGroup --location southcentralusCrie um cluster AKS usando o
az aks createcomando.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keysConfigurar
kubectlpara se conectar ao seu cluster AKS com o comandoaz aks get-credentials.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Criar um pool de nós de GPU de várias instâncias
Você pode usar a CLI do Azure ou uma solicitação HTTP para a API ARM para criar o pool de nós.
Crie um pool de nós de GPU de várias instâncias usando o
az aks nodepool addcomando e especifique o perfil da instância da GPU. O exemplo abaixo cria um pool de nós com tamanho de máquina virtual (VM) de GPU compatível com MIG:Standard_ND96asr_v4.az aks nodepool add \ --name aksMigNode \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --node-vm-size Standard_ND96asr_v4 \ --node-count 1 \ --gpu-instance-profile MIG1g
Determinar a estratégia de GPU multi-instância (MIG)
Antes de instalar os plug-ins NVIDIA, você precisa especificar qual estratégia de GPU multiinstância (MIG) usar para particionamento de GPU: Estratégia única ou Estratégia mista. As duas estratégias não afetam como você executa cargas de trabalho de CPU, mas como os recursos de GPU são exibidos.
-
Estratégia única: a estratégia única trata cada instância de GPU como uma GPU. Se você usar essa estratégia, os recursos da GPU serão exibidos como
nvidia.com/gpu: 1. -
Estratégia mista: a estratégia mista expõe as instâncias da GPU e o perfil da instância da GPU. Se você usar essa estratégia, o recurso GPU será exibido como
nvidia.com/mig1g.5gb: 1.
Instale o plug-in de dispositivo NVIDIA e os componentes GFD (GPU feature discovery)
Defina a sua estratégia MIG como uma variável de ambiente. Você pode usar uma estratégia única ou mista.
# Single strategy export MIG_STRATEGY=single # Mixed strategy export MIG_STRATEGY=mixedAdicione o repositório de leme do plug-in do dispositivo NVIDIA usando os
helm repo addcomandos andhelm repo update.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo updateInstale o plug-in de dispositivo NVIDIA usando o
helm installcomando.helm install nvdp nvdp/nvidia-device-plugin \ --version=0.17.0 \ --set migStrategy=${MIG_STRATEGY} \ --set gfd.enabled=true \ --namespace nvidia-device-plugin \ --create-namespace
Nota
A instalação do plug-in de dispositivo NVIDIA consolida o plug-in de dispositivo Kubernetes e os repositórios GFD. A instalação de leme separado do componente de software GFD não é recomendada ao usar GPU multiinstância gerenciada pelo AKS.
Confirme a capacidade da GPU de várias instâncias
Verifique a
kubectlconexão com o cluster usando okubectl getcomando para retornar uma lista de nós do cluster.kubectl get nodes -o wideConfirme se o nó tem capacidade de GPU de várias instâncias usando o
kubectl describe nodecomando. O comando de exemplo a seguir descreve o nó chamado aksMigNode, que usa MIG1g como o perfil de instância da GPU.kubectl describe node aksMigNodeSua saída deve ser semelhante à saída de exemplo a seguir:
# Single strategy output Allocatable: nvidia.com/gpu: 56 # Mixed strategy output Allocatable: nvidia.com/mig-1g.5gb: 56
Agendar trabalho
Os exemplos a seguir são baseados na imagem base CUDA versão 12.1.1 para Ubuntu 22.04, marcada como 12.1.1-base-ubuntu22.04.
Estratégia única
Crie um arquivo nomeado
single-strategy-example.yamle copie no manifesto a seguir.apiVersion: v1 kind: Pod metadata: name: nvidia-single spec: containers: - name: nvidia-single image: nvidia/cuda:12.1.1-base-ubuntu22.04 command: ["/bin/sh"] args: ["-c","sleep 1000"] resources: limits: "nvidia.com/gpu": 1Implante o aplicativo usando o
kubectl applycomando e especifique o nome do seu manifesto YAML.kubectl apply -f single-strategy-example.yamlVerifique os dispositivos GPU alocados usando o
kubectl execcomando. Este comando retorna uma lista dos nós do cluster.kubectl exec nvidia-single -- nvidia-smi -LO exemplo a seguir é semelhante à saída mostrando implantações e serviços criados com êxito:
GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b) MIG 1g.5gb Device 0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c) MIG 1g.5gb Device 1: (UUID: MIG-3d4db13e-c42d-5555-98f4-8b50389791bc) MIG 1g.5gb Device 2: (UUID: MIG-de819d17-9382-56a2-b9ca-aec36c88014f) MIG 1g.5gb Device 3: (UUID: MIG-50ab4b32-92db-5567-bf6d-fac646fe29f2) MIG 1g.5gb Device 4: (UUID: MIG-7b6b1b6e-5101-58a4-b5f5-21563789e62e) MIG 1g.5gb Device 5: (UUID: MIG-14549027-dd49-5cc0-bca4-55e67011bd85) MIG 1g.5gb Device 6: (UUID: MIG-37e055e8-8890-567f-a646-ebf9fde3ce7a)
Estratégia mista
Crie um arquivo nomeado
mixed-strategy-example.yamle copie no manifesto a seguir.apiVersion: v1 kind: Pod metadata: name: nvidia-mixed spec: containers: - name: nvidia-mixed image: nvidia/cuda:12.1.1-base-ubuntu22.04 command: ["/bin/sh"] args: ["-c","sleep 100"] resources: limits: "nvidia.com/mig-1g.5gb": 1Implante o aplicativo usando o
kubectl applycomando e especifique o nome do seu manifesto YAML.kubectl apply -f mixed-strategy-example.yamlVerifique os dispositivos GPU alocados usando o
kubectl execcomando. Este comando retorna uma lista dos nós do cluster.kubectl exec nvidia-mixed -- nvidia-smi -LO exemplo a seguir é semelhante à saída mostrando implantações e serviços criados com êxito:
GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b) MIG 1g.5gb Device 0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c)
Importante
A latest tag para imagens CUDA foi preterida no Docker Hub. Consulte o repositório da NVIDIA para obter as imagens mais recentes e as tags correspondentes.
Resolução de Problemas
Se não vires o recurso de GPU de várias instâncias depois de criar o pool de nós, confirma que a versão da API não é mais antiga do que 2021-08-01.
Próximos passos
Para saber mais sobre GPUs no Serviço Kubernetes do Azure, consulte: