Use a aceleração de GPU para o AKS Edge Essentials
As GPUs são uma escolha popular para cálculos de inteligência artificial, porque oferecem recursos de processamento paralelo e muitas vezes podem executar inferências baseadas em visão mais rapidamente do que CPUs. Para suportar melhor as aplicações de inteligência artificial e aprendizagem automática, o AKS Edge Essentials pode expor uma GPU ao módulo Linux da máquina virtual.
O AKS Edge Essentials suporta GPU-Paravirtualization (GPU-PV) como a tecnologia de passagem de GPU. Em outras palavras, a GPU é compartilhada entre a máquina virtual Linux e o host.
Importante
Esses recursos incluem componentes desenvolvidos e de propriedade da NVIDIA Corporation ou de seus licenciantes. Ao usar os recursos de aceleração de GPU, você está aceitando e concordando com os termos do Contrato de Licença de Usuário Final da NVIDIA.
Pré-requisitos
A aceleração de GPU do AKS Edge Essentials atualmente suporta um conjunto específico de hardware de GPU. Além disso, o uso desse recurso requer versões específicas do Windows.
As GPUs suportadas e as versões necessárias do Windows são as seguintes:
GPUs suportadas | Tipo de passagem GPU | Versões suportadas do Windows |
---|---|---|
NVIDIA GeForce, Quadro, RTX | GPU-PV | Windows 10/11 (Pro, Enterprise, IoT Enterprise) |
Importante
O suporte a GPU-PV pode ser limitado a determinadas gerações de processadores ou arquiteturas de GPU, conforme determinado pelo fornecedor da GPU. Para obter mais informações, consulte a documentação do NVIDIA CUDA for WSL.
Os usuários do Windows 10 devem usar a compilação de atualização de novembro de 2021 19044.1620 ou posterior. Após a instalação, você pode verificar sua versão de compilação executando winver
no prompt de comando.
A passagem de GPU não é suportada com virtualização aninhada, como quando você executa o AKS Edge Essentials em uma máquina virtual do Windows.
Configuração e instalação do sistema
As seções a seguir contêm informações de configuração e instalação.
- Para GPUs NVIDIA GeForce/Quadro/RTX, baixe e instale o driver habilitado para NVIDIA CUDA para Windows Subsystem for Linux (WSL) para usar com seus fluxos de trabalho CUDA ML existentes. Originalmente desenvolvido para WSL, o CUDA para drivers WSL também é usado para AKS Edge Essentials.
- Os usuários do Windows 10 também devem instalar o WSL porque algumas das bibliotecas são compartilhadas entre o WSL e o AKS Edge Essentials.
- Instale ou atualize o AKS Edge Essentials para a versão de maio de 2024 ou posterior. Para obter mais informações, consulte Atualizar seus clusters do AKS Edge Essentials. A GGP-PV é suportada nas distribuições Kubernetes k8s e k3s.
Habilite GPU-PV em sua implantação do AKS Edge Essentials
Etapa 1: parâmetros de configuração de uma única máquina
Você pode gerar os parâmetros necessários para criar um cluster de máquina única e adicionar os parâmetros de configuração GPU-PV necessários usando os seguintes comandos.
Este script se concentra apenas na configuração GPU-PV; você também deve fazer outras atualizações gerais necessárias de acordo com sua própria implantação do AKS Edge Essentials:
$jsonObj = New-AksEdgeConfig -DeploymentType SingleMachineCluster
$jsonObj.User.AcceptGpuWarning = $true
$machine = $jsonObj.Machines[0]
$machine.LinuxNode.GpuPassthrough.Name = "NVIDIA GeForce GTX 1070"
$machine.LinuxNode.GpuPassthrough.Type = "ParaVirtualization"
$machine.LinuxNode.GpuPassthrough.Count = 1
Os principais parâmetros para habilitar GPU-PV são:
User.AcceptGpuWarning
: Defina este parâmetro paratrue
aceitar automaticamente a mensagem de confirmação quando ativar GPU-PV no AKS Edge Essentials.LinuxNode.GpuPassthrough.Name
: Descreve o modelo de GPU implantado nesta máquina, com drivers adequados instalados.LinuxNode.GpuPassthrough.Type
: Descreve o tipo de passagem da GPU. ApenasParaVirtualization
é suportado atualmente.LinuxNode.GpuPassthrough.Count
: Descreve quantas GPUs estão instaladas nesta máquina.
Etapa 2: criar um cluster de máquina única
Agora você pode executar o
New-AksEdgeDeployment
cmdlet para implantar um cluster AKS Edge de máquina única com um único nó de plano de controle do Linux. Você pode usar o objeto JSON gerado na etapa 1 e passá-lo como uma cadeia de caracteres:New-AksEdgeDeployment -JsonConfigString (New-AksEdgeConfig | ConvertTo-Json -Depth 4)
Após a implantação bem-sucedida, verifique se a GPU-PV está habilitada executando
nvidia-smi
:
Etapa 3: Implantar a classe de tempo de execução da Nvidia
Crie um arquivo YAML chamado nvidia-runtimeclass.yaml com o seguinte conteúdo:
apiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: nvidia handler: nvidia
Implante o
runtimeclass
:kubectl apply –f nvidia-runtimeclass.yaml
Passo 4: Instale o plug-in de dispositivo GPU Nvidia
Baixe nvidia-deviceplugin.yaml deste local do GitHub.
Atualize o local das imagens de contêiner no arquivo nvidia-deviceplugin.yaml para o novo valor, da seguinte maneira:
containers: - image: registry.gitlab.com/nvidia/kubernetes/device-plugin/staging/k8s-device-plugin:6a31a868
Instale o Nvidia GPU DevicePlugin:
kubectl apply –f nvidia-deviceplugin.yaml
Verifique se o plug-in está em execução e se a GPU NVIDIA é detetada verificando os logs do pod deviceplugin usando os
kubectl get pods -A
comandos ekubectl logs $podname -n kube-system
:
Introdução a uma carga de trabalho de exemplo
Prepare um arquivo YAML de carga de trabalho chamado gpu-workload.yaml:
apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: restartPolicy: Never containers: - name: cuda-container image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2 resources: limits: nvidia.com/gpu: 1 # requesting 1 GPU tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule
Execute a carga de trabalho de exemplo:
kubectl apply -f .\gpu-workload.yaml
Verifique se a carga de trabalho foi executada com êxito: