Use GPUs com VMs agrupados

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

Este tópico fornece orientações sobre como usar unidades de processamento de gráficos (GPUs) com máquinas virtuais agrupadas (VMs) que executam o sistema operativo Azure Stack HCI para fornecer aceleração de GPU às cargas de trabalho nos VMs agrupados.

A partir do Azure Stack HCI, versão 21H2, pode incluir GPUs no cluster do Azure Stack HCI para fornecer aceleração de GPU às cargas de trabalho em VMs em cluster. Este tópico abrange os pré-requisitos básicos desta capacidade e como implementá-la.

A aceleração da GPU é fornecida através da Atribuição de Dispositivos Discretos (DDA), também conhecida como GPU pass-through, que permite dedicar uma ou mais GPUs físicos a um VM. Os VMs agrupados podem tirar partido da aceleração da GPU, e capacidades de agrupamento, tais como alta disponibilidade através de failover. Os VMs migratórios ao vivo não são suportados atualmente, mas os VMs podem ser automaticamente reiniciados e colocados onde os recursos da GPU estão disponíveis em caso de falha.

Pré-requisitos

Para começar, precisará de um cluster do Azure Stack HCI de, pelo menos, dois servidores com o Azure Stack HCI, versão 21H2. Também vai precisar de GPUs que estejam fisicamente instaladas em todos os servidores do cluster.

Nota

O Catálogo HCI da Azure Stack ainda não indica compatibilidade ou certificação da GPU. Siga as instruções do seu fabricante para a instalação da GPU.

Instruções de utilização

Esta secção descreve os passos necessários para utilizar Windows Centro de Administração ou Windows PowerShell para preparar os seus servidores de cluster para a utilização da GPU. Você pode atribuir um ou mais VMs a um conjunto de recursos GPU agrupados, e remover um VM de um conjunto de recursos GPU agrupados. Também pode utilizar o PowerShell para testar o reinício automático.

Use Windows Centro de Administração

Utilize Windows Centro de Administração para preparar o cluster, atribua um VM a um conjunto de recursos GPU e unassigna um VM a um conjunto de recursos GPU.

Para preparar o cluster e atribuir um VM a um conjunto de recursos da GPU:

  1. No menu Ferramentas, em Extensões,selecione GPUs para abrir a ferramenta.

    Screenshot da ferramenta GPU no Windows Admin Center

  2. Na página principal da ferramenta, selecione o separador piscinas GPU e, em seguida, selecione Criar piscina GPU.

    Screenshot da página de piscinas da Create GPU no Windows Admin Center

  3. Na página da piscina da Nova GPU, especifique o seguinte e, em seguida, selecione Guardar:

    1. Nome do servidor
    2. Nome da piscina GPU
    3. GPUs que você quer adicionar à piscina

    Screenshot da nova página da piscina da GPU em Windows Admin Center para especificar servidores, nome da piscina e GPUs

    Após o fim do processo, receberá um pedido de sucesso que mostra o nome da nova piscina gpu e do servidor anfitrião.

  4. Na página de piscina da Atribuição VM para GPU, especifique o seguinte e, em seguida, selecione Atribuir:

    1. Nome do servidor
    2. Nome da piscina GPU
    3. Máquina virtual que pretende atribuir a GPU a partir da piscina da GPU.

    Também pode definir valores de definição avançados para espaços IO (MMIO) mapeados pela memória para determinar os requisitos de recursos para uma única GPU.

    Screenshot da página de piscina da Atribuição VM para GPU no Windows Centro de Administração onde você atribui um VM a uma GPU a partir da piscina gpu

    Após o fim do processo, receberá um pedido de confirmação que mostra que atribuiu com sucesso a GPU do conjunto de recursos da GPU ao VM, que exibe em VM atribuídos.

    Screenshot do sucesso rápido mostrando GPU atribuído a um VM e a exibição de VM em VM atribuído

Para não assinar um VM de um conjunto de recursos da GPU:

  1. No separador piscinas da GPU, selecione a GPU que pretende não assinar e, em seguida, selecione VM de Unassign.

  2. No VM de unassign da página de piscina da GPU, na caixa de lista de máquinas virtuais, especifique o nome do VM e, em seguida, selecione Unassign.

    Screenshot de VM de unassign da página de piscina da GPU mostrando VM a não ser atribuído

    Após o fim do processo, receberá um pedido de sucesso de que o VM não foi atribuído a partir da piscina da GPU, e sob o estatuto de Atribuição a GPU mostra disponível (não atribuída).

Utilizar o PowerShell

Utilize o PowerShell para preparar o cluster, atribua um VM a um conjunto de recursos GPU e teste o reinício automático.

Preparar o cluster

Prepare as GPUs em cada servidor instalando controladores de atenuação de segurança em cada servidor, desativando as GPUs e desmontando-as do anfitrião de acordo com as instruções em dispositivos gráficos de implementação utilizando a Definição de Dispositivos Discretos. Dependendo do seu fornecedor de hardware, também poderá ter de configurar quaisquer requisitos de licenciamento da GPU.

  1. Crie um novo conjunto de recursos vazios em cada servidor que contenha os recursos de GPU agrupados. Certifique-se de fornecer o mesmo nome de piscina em cada servidor.

    Na PowerShell, executar o seguinte cmdlet como administrador:

     New-VMResourcePool -ResourcePoolType PciExpress -Name "GpuChildPool"
    
  2. Adicione as GPUs desmontadas de cada servidor ao conjunto de recursos que criou no passo anterior.

    Em PowerShell, executar os seguintes cmdlets:

     $gpu = Get-VMHostAssignableDevice
    
     Add-VMHostAssignableDevice -HostAssignableDevice $gpu -ResourcePoolName "GpuChildPool"
    

Você agora tem um conjunto de recursos em todo o cluster GpuChildPool (nomeado) que é povoado com GPUs atribuíveis. O cluster utilizará esta piscina para determinar a colocação de VM para quaisquer VMs iniciados ou movidos que sejam atribuídos ao conjunto de recursos da GPU.

Atribua um VM a um conjunto de recursos da GPU

Primeiro, ou cria um novo VM no seu cluster, ou encontra um VM existente.

Prepare o VM para DDA definindo o seu comportamento de cache, ação de paragem e propriedades de I/O (MMIO) mapeadas pela memória de acordo com as instruções em Dispositivos Gráficos de Implantação utilizando a Definição de Dispositivo Discreto.

  1. Configure a ação offline padrão do cluster VM como force-shutdown e não save .

    Em PowerShell, executar o seguinte cmdlet:

     Get-ClusterResource -name vmname | Set-ClusterParameter -Name "OfflineAction" -Value 3
    
  2. Atribua o conjunto de recursos que criou anteriormente para o VM. Isto declara ao cluster que o VM requer um dispositivo atribuído da GpuChildPool piscina quando é iniciado ou movido.

    Em PowerShell, executar o seguinte cmdlet:

     $vm | Add-VMAssignableDevice -ResourcePoolName "GpuChildPool"
    

    Nota

    Se quiser adicionar mais do que uma GPU ao VM, verifique primeiro se o conjunto de recursos tem mais do que uma GPU atribuível disponível e, em seguida, executar novamente o comando anterior.

Se iniciar agora o VM, o cluster garante que é colocado num servidor com recursos gpu disponíveis a partir deste cluster-wide pool. O cluster também atribui a GPU ao VM através do DDA, o que permite que a GPU seja acedida a partir de cargas de trabalho dentro do VM.

Nota

Também precisa de instalar controladores do seu fabricante de GPU dentro do VM para que as aplicações no VM possam tirar partido da GPU que lhes foi atribuída.

Também pode remover uma GPU atribuída de um VM. Para tal, em PowerShell, executar o seguinte cmdlet:

 Get-VMAssignableDevice -VMName $vm | Where-Object { $_.ResourcePoolName -eq "GpuChildPool" } | Remove-VMAssignableDevice

Falha sobre um VM com uma GPU atribuída

Para testar a capacidade do cluster de manter a carga de trabalho da GPU disponível, execute uma operação de drenagem no servidor onde o VM está a funcionar com uma GPU atribuída. Para drenar o servidor, siga as instruções nos procedimentos de manutenção do cluster Failover. O cluster reiniciará o VM noutro servidor do cluster, desde que outro servidor tenha recursos GPU suficientes disponíveis na piscina que criou.

Passos seguintes

Para mais informações, consulte também: