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.
Conecte-se ao servidor 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 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:
VMs de 2ª Geração
Um SO de 64 bits suportado, conforme detalhado no mais recente suporte NVIDIA vGPU Produtos suportados