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.
Conecte-se ao computador cuja contagem de partições de GPU você deseja configurar.
Execute o
Get-VMHostPartitionableGpu
comando e consulte os valores Name e ValidPartitionCounts .Execute o comando a seguir para configurar a contagem de partições. Substitua
GPU-name
pelo valor Name epartition-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 como4
.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
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:
VM geração 2
Um sistema operacional de 64 bits compatível, conforme detalhado no suporte mais recente ao NVIDIA vGPU Produtos Suportados