Compartilhar via


Preparar GPUs para o Azure Local (versão prévia)

Aplica-se a: Azure Local, versão 23H2

Este artigo descreve como preparar GPUs (unidades de processamento gráfico) em sua instância local do Azure para cargas de trabalho com uso intensivo de computação em execução em VMs (máquinas virtuais) do Arc e no AKS habilitado pelo Azure Arc. As GPUs são usadas para cargas de trabalho com uso intensivo de computação, como aprendizado de máquina e aprendizado profundo.

Importante

Esse recurso está em VERSÃO PRÉVIA no momento. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Anexando GPUs no Azure Local

Você pode anexar suas GPUs de duas maneiras para o Azure Local:

  • Atribuição de dispositivo discreto (DDA) - permite que você dedique uma GPU física à sua carga de trabalho. Em uma implantação de DDA, cargas de trabalho virtualizadas são executadas no driver nativo e normalmente têm acesso total à funcionalidade da GPU. O DDA oferece o nível mais alto de compatibilidade do aplicativo e potencial de desempenho.

  • Particionamento de GPU (GPU-P) - permite que você compartilhe uma GPU com várias cargas de trabalho dividindo a GPU em partições fracionárias dedicadas.

Considere as seguintes diferenças de funcionalidade e suporte entre as duas opções de uso de suas GPUs:

Descrição Atribuição de dispositivo discreto Particionamento de GPU
Modelo de recurso da GPU Dispositivo inteiro Dispositivo igualmente particionado
Densidade da VM Baixo (uma GPU para uma VM) Alta (uma GPU para muitas VMs)
Compatibilidade do aplicativo Todas as funcionalidades de GPU oferecidas pelo fornecedor (DX 12, OpenGL, CUDA) Todas as funcionalidades de GPU oferecidas pelo fornecedor (DX 12, OpenGL, CUDA)
VRAM da GPU Até o limite de VRAM compatível com a GPU Até o limite de VRAM compatível com a GPU por partição
Driver da GPU no convidado Driver do fornecedor da GPU (NVIDIA) Driver do fornecedor da GPU (NVIDIA)

Modelos de GPU suportados

Para ver a lista completa de soluções e GPUs com suporte disponíveis, consulte Soluções Locais do Azure e selecione Suporte a GPU no menu à esquerda para obter opções.

A NVIDIA oferece suporte a suas cargas de trabalho separadamente com seu software de GPU virtual. Para obter mais informações, consulte Microsoft Azure Local - GPUs NVIDIA com suporte e plataformas de servidor validadas.

Para cargas de trabalho do AKS, consulte GPUs para AKS para Arc.

Os seguintes modelos de GPU têm suporte usando DDA e GPU-P para cargas de trabalho de VM do Arc:

  • NVIDIA A2
  • NVIDIA A16

Esses modelos de GPU adicionais têm suporte usando GPU-P (somente) para cargas de trabalho de VM do Arc:

  • NVIDIA A10
  • NVIDIA A40
  • NVIDIA L4
  • NVIDIA L40
  • NVIDIA L40S

Requisitos do host

Seu host local do Azure deve atender aos seguintes requisitos:

  • Seu sistema deve dar suporte a uma solução local do Azure com suporte a GPU. Para procurar suas opções, consulte o Catálogo Local do Azure.

  • Você tem acesso ao Azure Local, versão 23H2.

  • Você deve criar uma configuração homogênea para GPUs em todas as máquinas em seu sistema. Uma configuração homogênea consiste em instalar a mesma marca e modelo de GPU.

  • Para GPU-P, certifique-se de que o suporte à virtualização e o SR-IOV estejam habilitados no BIOS de cada máquina no sistema. Entre em contato com o fornecedor do hardware se não conseguir identificar a configuração correta no BIOS.

Preparar drivers de GPU em cada host

O processo de preparação e instalação de drivers de GPU para cada máquina difere um pouco entre DDA e GPU-P. Siga o processo aplicável à sua situação.

Encontre GPUs em cada host

Primeiro, certifique-se de que não haja nenhum driver instalado para cada máquina. Se houver um driver de host instalado, desinstale o driver de host e reinicie a máquina.

Depois de desinstalar o driver de host ou se você não tiver nenhum driver instalado, execute o PowerShell como administrador com o seguinte comando:

Get-PnpDevice -Status Error | fl FriendlyName, ClusterId

Você deve ver os dispositivos GPU aparecerem em um estado de erro, conforme 3D Video Controller mostrado na saída de exemplo que lista o nome amigável e a ID da instância da GPU:

[ASRR1N26R02U46A]: PS C:\Users\HCIDeploymentUser\Documents> Get-PnpDevice - Status Error

Status		Class			FriendlyName
------		-----			------------
Error					SD Host Controller
Error					3D Video Controller
Error					3D Video Controller
Error		USB			Unknown USB Device (Device Descriptor Request Failed)

[ASRR1N26R02U46A]: PS C:\Users\HCIDeploymentUser\Documents> Get-PnpDevice - Status Error | f1 InstanceId

InstanceId : PCI\VEN_8086&DEV_18DB&SUBSYS_7208086REV_11\3&11583659&0&E0

InstanceId : PCI\VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1\4&23AD3A43&0&0010

InstanceId : PCI\VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1\4&17F8422A&0&0010

InstanceId : USB\VID_0000&PID_0002\S&E492A46&0&2

Usando DDA

Siga este processo se estiver usando DDA:

1. Desative e desmonte GPUs do host

Para DDA, quando você desinstala o driver de host ou tem uma nova configuração local do Azure, a GPU física entra em um estado de erro. Você deve desmontar todos os dispositivos GPU para continuar. Você pode usar o Gerenciador de Dispositivos ou o PowerShell para desabilitar e desmontar a GPU usando o ClusterID obtido na etapa anterior.

$id1 = "GPU_instance_ID"
Disable-PnpDevice -ClusterId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -ClusterPath $id1 -Force

Confirme se as GPUs foram desmontadas corretamente da máquina host. As GPUs agora estarão em um Unknown estado:

Get-PnpDevice -Status Unknown | fl FriendlyName, ClusterId

Repita esse processo para cada máquina em seu sistema para preparar as GPUs.

2. Baixe e instale o driver de mitigação

O software pode incluir componentes desenvolvidos e de propriedade da NVIDIA Corporation ou de seus licenciadores. O uso desses componentes é regido pelo contrato de licença de usuário final da NVIDIA.

Consulte a documentação da NVIDIA para baixar o driver de mitigação NVIDIA aplicável. Depois de baixar o driver, expanda o arquivo e instale o driver de mitigação em cada computador host. Use o seguinte script do PowerShell para baixar o driver de mitigação e extraí-lo:

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

Depois que os arquivos do driver de mitigação forem extraídos, encontre a versão do modelo correto da GPU e instale-a. Por exemplo, se você estava instalando um driver de mitigação NVIDIA A2, execute o seguinte:

pnputil /add-driver nvidia_azure_stack_A2_base.inf /install /force

Para confirmar a instalação desses drivers, execute:

pnputil /enum-devices OR pnputil /scan-devices

Você deve ser capaz de ver as GPUs identificadas corretamente em Get-PnpDevice:

Get-PnpDevice -Class Display | fl FriendlyName, ClusterId

Repita as etapas acima para cada host em seu Azure Local.

Usando GPU-P

Siga este processo se estiver usando GPU-P:

Baixe e instale o driver do host

GPU-P requer drivers no nível do host que diferem do DDA. Para GPUs NVIDIA, você precisará de um driver gráfico de software NVIDIA vGPU em cada host e em cada VM que usará GPU-P. Para obter mais informações, consulte a versão mais recente da Documentação do NVIDIA vGPU e detalhes sobre licenciamento no Guia do Usuário de Licenciamento do Cliente.

Depois de identificar as GPUs como 3D Video Controller em sua máquina host, baixe o driver de vGPU do host. Por meio de sua licença NVIDIA GRID, você poderá obter o driver .zip arquivo de host adequados.

Você precisará obter e mover a seguinte pasta para sua máquina host: \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers

Navegue até \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers\Display.Driver e instale o driver.

pnputil /add-driver .\nvgridswhci.inf /install /force

Para confirmar a instalação desses drivers, execute:

pnputil /enum-devices

Você deve ser capaz de ver as GPUs identificadas corretamente em Get-PnpDevice:

Get-PnpDevice -Class Display | fl FriendlyName, ClusterId

Você também pode executar a interface nvidia-smi de gerenciamento do sistema NVIDIA para listar as GPUs na máquina host da seguinte maneira:

nvidia-smi

Se o driver estiver instalado corretamente, você verá uma saída semelhante ao exemplo a seguir:

Wed Nov 30 15:22:36 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 527.27       Driver Version: 527.27       CUDA Version: N/A      |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A2          WDDM  | 00000000:65:00.0 Off |                    0 |
|  0%   24C    P8     5W /  60W |  15192MiB / 15356MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA A2          WDDM  | 00000000:66:00.0 Off |                    0 |
|  0%   24C    P8     5W /  60W |  15192MiB / 15356MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Configure a contagem de partições de GPU

Siga estas etapas para configurar a contagem de partições da GPU no PowerShell:

Observação

Ao usar o PowerShell, você deve garantir manualmente que a configuração da GPU seja homogênea em todos os computadores no Azure Local.

  1. Conecte-se ao computador cuja contagem de partições de GPU você deseja configurar.

  2. Execute o Get-VMHostPartitionableGpu comando e consulte os valores Name e ValidPartitionCounts .

  3. Execute o comando a seguir para configurar a contagem de partições. Substitua GPU-name pelo valor Name e partition-count por uma das contagens suportadas do valor ValidPartitionCounts:

    Set-VMHostPartitionableGpu -Name "<GPU-name>" -PartitionCount <partition-count>
    

    Por exemplo, o comando a seguir configura a contagem de partições para 4:

    PS C:\Users> Set-VMHostPartitionableGpu -Name "\\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&18416dc3&0&0000#{064092b3-625e-43bf-9eb5-dc845897dd59}" -PartitionCount 4
    

    Você pode executar o comando Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount novamente para verificar se a contagem de partições está definida como 4.

    Aqui está um exemplo de saída:

    PS C:\Users> Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount
    
    Name                    : \\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&18416dc3&0&0000#{064092b3-625e-43bf-9eb5-dc845897dd59}
    ValidPartitionCounts    : {16, 8, 4, 2...}
    PartitionCount          : 4
    
    Name                    : \\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&5906f5e&0&0010#{064092b3-625e-43bf-9eb5-dc845897dd59}
    ValidPartitionCounts    : {16, 8, 4, 2...}
    PartitionCount          : 4
    
  4. Para manter a configuração homogênea, repita as etapas de configuração de contagem de partições em cada máquina em seu sistema.

Requisitos do hóspede

O gerenciamento de GPU é compatível com as seguintes cargas de trabalho de VM do Arc:

Próximas etapas