Preparar GPUs para o Azure Stack HCI (visualização)

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

Este artigo descreve como preparar unidades de processamento gráfico (GPUs) para o Azure Stack HCI para cargas de trabalho de computação intensiva em execução em máquinas virtuais (VMs) Arc e AKS habilitado 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 Stack HCI

Você pode anexar suas GPUs de uma das duas maneiras para o Azure Stack HCI:

  • 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 Azure Stack HCI Solutions 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 Stack HCI - 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 HCI do Azure Stack deve atender aos seguintes requisitos:

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

  • Você tem acesso a um cluster do Azure Stack HCI, versão 23H2.

  • Você deve criar uma configuração homogênea para GPUs em todos os servidores do cluster. 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 habilitados no BIOS de cada servidor no cluster. Entre em contato com o fornecedor do sistema 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 servidor host difere um pouco entre DDA e GPU-P. Siga o processo aplicável à sua situação.

Encontre GPUs em cada host

Primeiro, verifique se não há nenhum driver instalado para cada servidor host. Se houver um driver de host instalado, desinstale o driver de host e reinicie o servidor.

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, InstanceId

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 de cluster HCI do Azure Stack, 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 InstanceID obtido na etapa anterior.

$id1 = "GPU_instance_ID"
Disable-PnpDevice -InstanceId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -InstancePath $id1 -Force

Confirme se as GPUs foram desmontadas corretamente do host. As GPUs agora estarão em um Unknown estado:

Get-PnpDevice -Status Unknown | fl FriendlyName, InstanceId

Repita esse processo para cada servidor no cluster HCI do Azure Stack 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 servidor 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, InstanceId

Repita as etapas acima para cada host em seu cluster HCI do Azure Stack.

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 no seu servidor 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 o servidor 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, InstanceId

Você também pode executar a NVIDIA System Management Interface nvidia-smi para listar as GPUs no servidor 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 todos os servidores em seu cluster HCI do Azure Stack.

  1. Conecte-se ao servidor 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 servidor em seu cluster HCI do Azure Stack.

Requisitos do hóspede

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

Próximos passos