Utiliser des GPU avec des machines virtuelles clusterisées

S’applique à : Azure Stack HCI, versions 23H2 et 22H2

Notes

La méthode recommandée pour créer et gérer des machines virtuelles sur Azure Stack HCI 23H2 consiste à utiliser le plan de contrôle Azure Arc. Utilisez le mécanisme décrit ci-dessous pour gérer vos machines virtuelles uniquement si vous avez besoin de fonctionnalités qui ne sont pas disponibles dans les machines virtuelles Azure Arc.

Cette rubrique fournit des conseils sur l’utilisation d’unités de traitement graphique (GPU) avec des machines virtuelles en cluster qui exécutent le système d’exploitation Azure Stack HCI pour fournir une accélération GPU aux charges de travail dans les machines virtuelles en cluster.

À partir d’Azure Stack HCI, version 21H2, vous pouvez inclure des GPU dans votre cluster Azure Stack HCI pour fournir une accélération GPU dans les charges de travail en cours d’exécution sur des machines virtuelles en cluster. Cette rubrique décrit les conditions préalables de base de cette fonctionnalité et comment la déployer.

L’accélération GPU est assurée via Discrete Device Assignment (DDA), également connue sous le nom de transfert de GPU, qui vous permet de dédier une ou plusieurs GPU physiques à une machine virtuelle. Les machines virtuelles en cluster peuvent tirer parti de l’accélération GPU et des fonctionnalités de clustering telles que la haute disponibilité via le basculement. La migration dynamique des machines virtuelles n’est pas prise en charge actuellement, mais les machines virtuelles peuvent être redémarrées automatiquement et placées là où les ressources GPU sont disponibles en cas de défaillance.

Prérequis

Pour commencer, vous avez besoin d’un cluster Azure Stack HCI exécutant Azure Stack HCI, version 21H2. Vous aurez également besoin de GPU qui sont physiquement installés sur chaque serveur du cluster.

Remarque

Le catalogue HCI Azure Stack n’indique pas encore de compatibilité GPU ou d’informations de certification. Suivez les instructions de votre fabricant pour l’installation de GPU.

Instructions d’utilisation

Cette section décrit les étapes nécessaires pour utiliser Windows Admin Center ou Windows PowerShell afin de préparer vos serveurs de clusters à l'utilisation de GPU. Vous pouvez attribuer une ou plusieurs machines virtuelles à un pool de ressources GPU en cluster et supprimer une machine virtuelle d’un pool. Vous pouvez également utiliser PowerShell pour tester le redémarrage automatique.

Utiliser Windows Admin Center

Utilisez Windows Admin Center pour préparer le cluster, attribuer une machine virtuelle à un pool de ressources GPU et annuler une attribution.

Pour préparer le cluster et attribuer une machine virtuelle à un pool de ressources GPU :

  1. Dans le menu Outils, sous Extensions, sélectionnez GPU pour ouvrir l’outil.

    Capture d'écran de l'outil GPU dans Windows Admin Center

  2. Sur la page principale de l’outil, sélectionnez l’onglet Pools de GPU, puis Créer un pool de GPU.

    Capture d'écran de la page Créer un pool de GPU de Windows Admin Center

  3. Sur la page Nouveau pool de GPU, spécifiez les éléments suivants, puis sélectionnez Enregistrer :

    1. Nom du serveur
    2. Nom du pool de GPU
    3. GPU que vous souhaitez ajouter au pool

    Capture d'écran de la page Nouveau pool de GPU de Windows Admin Center sur laquelle vous pouvez spécifier les serveurs, le nom du pool et les GPU

    Au terme du processus, vous recevrez un message de succès indiquant le nom du nouveau pool de GPU et du serveur hôte.

  4. Sur la page Attribuer une machine virtuelle au pool de GPU, spécifiez les éléments suivants, puis sélectionnez Attribuer :

    1. Nom du serveur
    2. Nom du pool de GPU
    3. Machine virtuelle à laquelle vous souhaitez attribuer le GPU à partir du pool de GPU.

    Vous pouvez également définir des valeurs de paramètres avancés pour les espaces d'E/S mappées en mémoire (MMIO) afin de déterminer les besoins en ressources pour un seul GPU.

    Capture d'écran de la page Attribuer une machine virtuelle au pool de GPU de Windows Admin Center sur laquelle vous pouvez attribuer une machine virtuelle à un GPU du pool de GPU.

    Au terme du processus, vous recevrez un message de confirmation indiquant que vous avez attribué avec succès le GPU du pool de ressources GPU à la machine virtuelle qui apparaît sous Machines virtuelles attribuées.

    Capture d'écran du message de succès indiquant le GPU attribué à une machine virtuelle et présentant la machine virtuelle affichée sous Machines virtuelles attribuées.

Pour annuler l’attribution d’une machine virtuelle à un pool de ressources GPU :

  1. Sous l’onglet Pools de GPU, choisissez le GPU dont vous souhaitez annuler l’attribution, puis sélectionnez Annuler l’attribution d’une machine virtuelle.

  2. Sur la page Annuler l’attribution d’une machine virtuelle au pool de GPU, accédez à la zone de liste Machines virtuelles, spécifiez le nom de la machine virtuelle, puis sélectionnez Annuler l’attribution.

    Capture d’écran de la page Annuler l’attribution d’une machine virtuelle au pool de GPU montrant la machine virtuelle dont l’attribution doit être annulée

    Au terme du processus, vous recevrez un message de succès indiquant que l'attribution de la machine virtuelle au pool de GPU a été annulée et, sous État d'attribution, le GPU apparaîtra comme Disponible (non attribué).

Utiliser PowerShell

Utilisez PowerShell pour préparer le cluster, attribuer une machine virtuelle à un pool de ressources GPU et tester le redémarrage automatique.

Préparer le cluster

Préparez les GPU sur chaque serveur en installant les pilotes d’atténuation de la sécurité sur chaque serveur, en désactivant les GPU et en les démontant à partir de l’ordinateur hôte en suivant les instructions dans Déployer des appareils graphiques à l’aide de la technologie Discrete Device Assignment. Selon le fabricant de votre matériel, vous devrez peut-être également configurer les exigences en matière de licences GPU.

  1. Créez un nouveau pool de ressources vide sur chaque serveur qui contiendra les ressources GPU en cluster. Veillez à fournir le même nom de pool sur chaque serveur.

    Dans PowerShell, exécutez l’applet de commande suivante en tant qu’administrateur :

     New-VMResourcePool -ResourcePoolType PciExpress -Name "GpuChildPool"
    
  2. Ajoutez les GPU démontées à partir de chaque serveur au pool de ressources que vous avez créé à l’étape précédente.

    Dans PowerShell, exécutez l’applet de commande suivante :

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

Vous disposez maintenant d’un pool de ressources à l’échelle du cluster (nommé GpuChildPool) qui est rempli de GPU assignables. Le cluster utilisera ce pool pour déterminer l’emplacement de la machine virtuelle pour toutes les machines virtuelles démarrées ou déplacées qui sont affectées au pool de ressources GPU.

Affecter une machine virtuelle à un pool de ressources GPU

Tout d’abord, créez une machine virtuelle dans votre cluster ou recherchez une machine virtuelle existante.

Préparez la machine virtuelle pour DDA en définissant ses propriétés de comportement du cache, d’arrêt d’action et d’E/S mappées en mémoire en fonction des instructions fournies dans Déployer des appareils graphiques à l’aide de la technologie Discrete Device Assignment.

  1. Configurez l’action hors connexion par défaut de la ressource de machine virtuelle du cluster comme force-shutdown plutôt que comme save.

    Dans PowerShell, exécutez l’applet de commande suivante :

     Get-ClusterResource -name vmname | Set-ClusterParameter -Name "OfflineAction" -Value 3
    
  2. Affectez le pool de ressources que vous avez créé précédemment à la machine virtuelle. Cela déclare au cluster que la machine virtuelle requiert un appareil affecté à partir du pool GpuChildPool lorsqu’elle est démarrée ou déplacée.

    Dans PowerShell, exécutez l’applet de commande suivante :

     $vm | Add-VMAssignableDevice -ResourcePoolName "GpuChildPool"
    

    Remarque

    Si vous souhaitez ajouter plusieurs GPU à la machine virtuelle, vérifiez d’abord que plusieurs GPU attribuables sont disponibles dans le pool de ressources, puis réexécutez la commande précédente.

Si vous démarrez la machine virtuelle maintenant, le cluster s’assure qu’elle est placée sur un serveur avec des ressources GPU disponibles à partir de ce pool à l’échelle du cluster. Le cluster affecte également la GPU à la machine virtuelle via DDA, ce qui permet d’accéder à la GPU à partir de charges de travail sur la machine virtuelle.

Remarque

Vous devez également installer des pilotes proposés par le fabricant de votre GPU sur la machine virtuelle afin que les applications de la machine virtuelle puissent tirer parti de la GPU qui leur est attribuée.

Vous pouvez également supprimer un GPU préalablement attribué à une machine virtuelle. Pour ce faire, dans PowerShell, exécutez la cmdlet suivante :

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

Basculer une machine virtuelle avec une GPU affectée

Pour tester la capacité du cluster à conserver la charge de travail de votre GPU, effectuez une opération de drainage sur le serveur sur lequel la machine virtuelle est exécutée avec une GPU affectée. Pour drainer le serveur, suivez les instructions disponibles dans Procédures de maintenance du cluster de basculement. Le cluster redémarre la machine virtuelle sur un autre serveur du cluster, à condition qu’un autre serveur dispose de ressources GPU suffisantes dans le pool que vous avez créé.

Étapes suivantes

Pour plus d'informations, consultez également :