Compartilhar via


Usar a aceleração de GPU para o AKS Edge Essentials (versão prévia)

Importante

A aceleração de GPU para o AKS Edge Essentials está atualmente em VERSÃO PRELIMINAR. Consulte os termos de uso complementares para o Microsoft Azure Previews para termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou ainda não lançados em disponibilidade geral.

As GPUs são uma opção popular para computação de inteligência artificial, pois oferecem recursos de processamento paralelo e muitas vezes podem executar inferência baseada em visão mais rapidamente do que as CPUs. Para dar melhor suporte a aplicativos de inteligência artificial e aprendizado de máquina, o AKS Edge Essentials pode expor uma GPU ao módulo Linux da máquina virtual.

O AKS Edge Essentials dá suporte à GPU-Paravirtualização (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 licenciadores. Ao usar os recursos de aceleração de GPU, você aceita e concorda 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 dá suporte a 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 com suporte Tipo de passagem de GPU Versões do Windows com suporte
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 para WSL.

Os usuários do Windows 10 devem usar a atualização de novembro de 2021 build 19044.1620 ou posterior. Após a instalação, você pode verificar o de versão do build executando winver no prompt de comando.

Não há suporte para a passagem de GPU com a 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.

Habilitar GPU-PV em sua implantação do AKS Edge Essentials

Etapa 1: parâmetros de configuração de máquina única

Você pode gerar os parâmetros necessários para criar um único cluster de computador e adicionar os parâmetros de configuração GPU-PV necessários usando os comandos a seguir.

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 o GPU-PV são:

  • User.AcceptGpuWarning: defina esse parâmetro como true para aceitar automaticamente a mensagem de confirmação ao habilitar o GPU-PV no AKS Edge Essentials.
  • LinuxNode.GpuPassthrough.Name: descreve o modelo de GPU implantado neste computador, com os drivers adequados instalados.
  • LinuxNode.GpuPassthrough.Type: Descreve o tipo de passagem de GPU. Atualmente, há suporte apenas para ParaVirtualization.
  • LinuxNode.GpuPassthrough.Count: Descreve quantas GPUs estão instaladas nesta máquina.

Etapa 2: criar um único cluster de computador

  1. Agora você pode executar o New-AksEdgeDeployment cmdlet para implantar um cluster do AKS Edge de computador único com um único nó do painel de controle do Linux. Você pode usar o objeto JSON gerado na etapa 1 e passá-lo como uma string:

    New-AksEdgeDeployment -JsonConfigString (New-AksEdgeConfig | ConvertTo-Json -Depth 4)
    
  2. Após a implantação bem-sucedida, verifique se o GPU-PV está habilitado executando nvidia-smi:

    Captura de tela mostrando a saída NVIDIA smi.

Etapa 3: implantar a classe de tempo de execução da Nvidia

  1. 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
    
  2. Implante o runtimeclass:

    kubectl apply –f nvidia-runtimeclass.yaml
    

Etapa 4: instalar o plug-in do dispositivo Nvidia GPU

  1. Baixe nvidia-deviceplugin.yaml deste local do GitHub.

  2. 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
    
  3. Instale o Nvidia GPU DevicePlugin:

    kubectl apply –f nvidia-deviceplugin.yaml
    
  4. Verifique se o plug-in está em execução e se a GPU NVIDIA é detectada verificando os logs do pod deviceplugin usando os kubectl get pods -A comandos e kubectl logs $podname -n kube-system :

    Captura de tela mostrando a saída do comando kubectl logs.

Introdução a uma carga de trabalho de amostra

  1. 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
    
  2. Execute a carga de trabalho de exemplo:

    kubectl apply -f .\gpu-workload.yaml
    
  3. Verifique se a carga de trabalho foi executada com êxito:

    Captura de tela mostrando que a carga de trabalho foi executada com êxito.

Próximas etapas

Visão geral do AKS Edge Essentials