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.
Conecte-se à máquina cuja contagem de partições GPU você deseja configurar.
Execute o
Get-VMHostPartitionableGpu
comando e consulte os valores Name e ValidPartitionCounts .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 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 do seu sistema.
Requisitos do hóspede
O gerenciamento de GPU é suportado para as seguintes cargas de trabalho do Arc VM:
VMs de 2ª Geração
Um SO de 64 bits suportado, conforme detalhado no mais recente suporte NVIDIA vGPU Produtos suportados