Usare GPU con macchine virtuali cluster

Si applica a: Azure Stack HCI, versioni 23H2 e 22H2

Nota

Il modo consigliato per creare e gestire macchine virtuali in Azure Stack HCI 23H2 usa il piano di controllo Azure Arc. Usare il meccanismo descritto di seguito per gestire le macchine virtuali solo se sono necessarie funzionalità non disponibili nelle macchine virtuali di Azure Arc.

Questo argomento fornisce indicazioni su come usare le unità di elaborazione grafica con macchine virtuali cluster che eseguono il sistema operativo Azure Stack HCI per fornire accelerazione GPU ai carichi di lavoro nelle macchine virtuali cluster.

A partire dalla versione 21H2 di Azure Stack HCI, è possibile includere le GPU nel cluster di Azure Stack HCI per accelerare i carichi di lavoro in esecuzione nelle macchine virtuali in cluster con la GPU. Questo argomento illustra i prerequisiti di base di questa funzionalità e come distribuirlo.

L'accelerazione GPU viene fornita tramite la funzionalità DDA (Discrete Device Assignment), nota anche come pass-through GPU, che consente di dedicare una o più GPU fisiche a una macchina virtuale. Le macchine virtuali cluster possono sfruttare l'accelerazione GPU e le funzionalità di clustering, ad esempio la disponibilità elevata tramite failover. La migrazione in tempo reale delle macchine virtuali non è attualmente supportata, ma le macchine virtuali possono essere riavviate automaticamente e posizionate in cui le risorse GPU sono disponibili in caso di errore.

Prerequisiti

Per iniziare, è necessario un cluster Azure Stack HCI che esegue Azure Stack HCI versione 21H2. Sono necessarie anche GPU installate fisicamente in ogni server del cluster.

Nota

Il catalogo HCI di Azure Stack non indica ancora le informazioni di compatibilità o certificazione della GPU. Seguire le istruzioni del produttore per l'installazione della GPU.

Istruzioni sull'utilizzo

Questa sezione descrive i passaggi necessari per usare Windows Admin Center o Windows PowerShell per preparare i server del cluster per l'utilizzo della GPU. È possibile assegnare una o più macchine virtuali a un pool di risorse GPU cluster e rimuovere una macchina virtuale da un pool di risorse GPU cluster. È anche possibile usare PowerShell per testare il riavvio automatico.

Usare Windows Admin Center

Usare Windows Admin Center per preparare il cluster, assegnare una macchina virtuale a un pool di risorse GPU e annullare l'assegnazione di una macchina virtuale a un pool di risorse GPU.

Per preparare il cluster e assegnare una macchina virtuale a un pool di risorse GPU:

  1. Nel menu Strumenti selezionare GPU per aprire lo strumento.

    Screenshot dello strumento GPU in Windows Admin Center

  2. Nella pagina principale dello strumento selezionare la scheda Pool GPU e quindi selezionare Crea pool di GPU.

    Screenshot della pagina Crea pool GPU in Windows Admin Center

  3. Nella pagina Nuovo pool GPU specificare quanto segue e quindi selezionare Salva:

    1. Nome del server
    2. Nome del pool GPU
    3. GPU da aggiungere al pool

    Screenshot della pagina Nuovo pool GPU in Windows Admin Center per specificare server, nome pool e GPU

    Al termine del processo, si riceverà un prompt di esito positivo che mostra il nome del nuovo pool di GPU e del server host.

  4. Nella pagina Assegna macchina virtuale al pool GPU specificare quanto segue e quindi selezionare Assegna:

    1. Nome del server
    2. Nome del pool GPU
    3. Macchina virtuale a cui si vuole assegnare la GPU dal pool di GPU.

    È anche possibile definire valori di impostazione avanzati per gli spazi IO (MMIO) mappati alla memoria per determinare i requisiti delle risorse per una singola GPU.

    Screenshot della pagina Assegna macchina virtuale al pool GPU in Windows Admin Center in cui si assegna una macchina virtuale a una GPU dal pool di GPU

    Al termine del processo, verrà visualizzato un prompt di conferma che mostra che è stata assegnata correttamente la GPU dal pool di risorse GPU alla macchina virtuale, che viene visualizzata in Macchine virtuali assegnate.

    Screenshot della richiesta di esito positivo che mostra la GPU assegnata a una macchina virtuale e la macchina virtuale visualizzata in Macchine virtuali assegnate

Per annullare l'assegnazione di una macchina virtuale da un pool di risorse GPU:

  1. Nella scheda Pool di GPU selezionare la GPU che si desidera annullare e quindi selezionare Annulla firma macchina virtuale.

  2. Nella pagina Annulla assegnazione macchina virtuale dal pool di GPU , nella casella di riepilogo Macchine virtuali specificare il nome della macchina virtuale e quindi selezionare Annullassign.

    Screenshot della pagina Unassign VM from GPU pool che mostra la vm da annullare

    Al termine del processo, si riceverà una richiesta di esito positivo che la macchina virtuale non è stata assegnata dal pool di GPU e in Stato assegnazione la GPU mostra Disponibile (Non assegnato).

Usare PowerShell

Usare PowerShell per preparare il cluster, assegnare una macchina virtuale a un pool di risorse GPU e testare il riavvio automatico.

Preparare il cluster

Preparare le GPU in ogni server installando i driver di mitigazione della sicurezza in ogni server, disabilitando le GPU e smontandole dall'host in base alle istruzioni riportate in Distribuire dispositivi grafici usando l'assegnazione di dispositivi discreti. A seconda del fornitore dell'hardware, potrebbe essere necessario configurare anche eventuali requisiti di licenza GPU.

  1. Creare un nuovo pool di risorse vuoto in ogni server che conterrà le risorse GPU cluster. Assicurarsi di specificare lo stesso nome del pool in ogni server.

    In PowerShell eseguire il cmdlet seguente come amministratore:

     New-VMResourcePool -ResourcePoolType PciExpress -Name "GpuChildPool"
    
  2. Aggiungere le GPU smontate da ogni server al pool di risorse creato nel passaggio precedente.

    In PowerShell eseguire i cmdlet seguenti:

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

È ora disponibile un pool di risorse a livello di cluster (denominato GpuChildPool) popolato con GPU assegnabili. Il cluster userà questo pool per determinare il posizionamento delle macchine virtuali per le macchine virtuali avviate o spostate assegnate al pool di risorse GPU.

Assegnare una macchina virtuale a un pool di risorse GPU

Prima di tutto, creare una nuova macchina virtuale nel cluster o trovare una macchina virtuale esistente.

Preparare la macchina virtuale per DDA impostando il comportamento della cache, arrestare l'azione e le proprietà di I/O (MMIO) mappate alla memoria in base alle istruzioni riportate in Distribuire dispositivi grafici usando l'assegnazione di dispositivi discreti.

  1. Configurare l'azione offline predefinita della risorsa vm del cluster invece force-shutdown di save.

    In PowerShell eseguire il cmdlet seguente:

     Get-ClusterResource -name vmname | Set-ClusterParameter -Name "OfflineAction" -Value 3
    
  2. Assegnare il pool di risorse creato in precedenza alla macchina virtuale. Ciò dichiara al cluster che la macchina virtuale richiede un dispositivo assegnato dal GpuChildPool pool quando viene avviato o spostato.

    In PowerShell eseguire il cmdlet seguente:

     $vm | Add-VMAssignableDevice -ResourcePoolName "GpuChildPool"
    

    Nota

    Se si desidera aggiungere più GPU alla macchina virtuale, verificare prima di tutto che il pool di risorse abbia più GPU assegnabili disponibili e quindi eseguire di nuovo il comando precedente.

Se si avvia la macchina virtuale ora, il cluster garantisce che venga inserito in un server con risorse GPU disponibili da questo pool a livello di cluster. Il cluster assegna anche la GPU alla macchina virtuale tramite DDA, che consente l'accesso alla GPU dai carichi di lavoro all'interno della macchina virtuale.

Nota

È anche necessario installare i driver dal produttore della GPU all'interno della macchina virtuale in modo che le app nella macchina virtuale possano sfruttare la GPU assegnata a loro.

È anche possibile rimuovere una GPU assegnata da una macchina virtuale. A tale scopo, in PowerShell eseguire il cmdlet seguente:

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

Eseguire il failover di una macchina virtuale con una GPU assegnata

Per testare la capacità del cluster di mantenere disponibile il carico di lavoro GPU, eseguire un'operazione di svuotamento nel server in cui la macchina virtuale è in esecuzione con una GPU assegnata. Per svuotare il server, seguire le istruzioni riportate in Procedure di manutenzione del cluster di failover. Il cluster riavvia la macchina virtuale in un altro server nel cluster, purché un altro server disponga di risorse GPU sufficienti nel pool creato.

Passaggi successivi

Per ulteriori informazioni, vedere anche: