Partilhar via


Preparar GPUs para o Azure Local (visualização)

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

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

Importante

Este recurso está atualmente em visualização. Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Anexando GPUs no Azure Local

Você pode anexar suas GPUs de uma das 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 DDA, as cargas de trabalho virtualizadas são executadas no driver nativo e normalmente têm acesso total à funcionalidade da GPU. O DDA oferece o mais alto nível de compatibilidade de aplicativos e desempenho potencial.

  • GPU Partitioning (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:

Description Atribuição de dispositivo discreto Particionamento de GPU
Modelo de recursos da GPU Todo o dispositivo Dispositivo igualmente particionado
Densidade da VM Baixo (uma GPU para uma VM) Alto (uma GPU para várias VMs)
Compatibilidade de aplicações Todos os recursos de GPU fornecidos pelo fornecedor (DX 12, OpenGL, CUDA) Todos os recursos de GPU fornecidos pelo fornecedor (DX 12, OpenGL, CUDA)
GPU VRAM Até VRAM suportada pela GPU Até VRAM suportada pela GPU por partição
Driver de GPU em 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 suportadas e GPUs disponíveis, consulte Soluções Locais do Azure e selecione Suporte a GPU no menu esquerdo para opções.

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

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

Os seguintes modelos de GPU são suportados usando DDA e GPU-P para cargas de trabalho Arc VM:

  • NVIDIA A2
  • NVIDIA A16

Esses modelos de GPU adicionais são suportados usando GPU-P (apenas) para cargas de trabalho Arc VM:

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

Requisitos do anfitrião

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 do seu sistema. Uma configuração homogênea consiste na instalação da mesma marca e modelo de GPU.

  • Para GPU-P, certifique-se de que o suporte de virtualização e SR-IOV estão ativados 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 há nenhum driver instalado para cada máquina. Se houver um driver de host instalado, desinstale o driver de host e reinicie o computador.

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, como 3D Video Controller mostrado na saída de exemplo que lista o nome amigável e o 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 este processo para cada máquina no 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 licenciantes. 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 máquina 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 para o modelo correto da sua 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 corretamente identificadas 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 em Client Licensing User Guide.

Depois de identificar as GPUs como 3D Video Controller em sua máquina host, baixe o driver vGPU do host. Através da sua licença NVIDIA GRID, você deve ser capaz de obter o driver de host adequado .zip arquivo.

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 corretamente identificadas em Get-PnpDevice:

Get-PnpDevice -Class Display | fl FriendlyName, ClusterId

Você também pode executar a NVIDIA System Management Interface nvidia-smi 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                                                 |
+-----------------------------------------------------------------------------+

Configurar contagem de partições GPU

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

Nota

Ao usar o PowerShell, você deve garantir manualmente que a configuração da GPU seja homogênea em todas as máquinas em seu Azure Local.

  1. Conecte-se à máquina cuja contagem de partições GPU você deseja configurar.

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

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

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

    Por exemplo, o comando a seguir configura a contagem de partições como 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 do seu sistema.

Requisitos do hóspede

O gerenciamento de GPU é suportado para as seguintes cargas de trabalho do Arc VM:

Próximos passos