Partager via


Préparer des GPU pour Azure Stack HCI (préversion)

S’applique à : Azure Stack HCI, version 23H2

Cet article explique comment préparer des unités de traitement graphique (GPU) pour Azure Stack HCI pour les charges de travail nécessitant beaucoup de calcul s’exécutant sur des machines virtuelles Arc et AKS activées par Azure Arc. Les GPU sont utilisés pour les charges de travail nécessitant beaucoup de calcul, telles que le Machine Learning et le Deep Learning.

Important

Cette fonctionnalité est actuellement en PRÉVERSION. Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Attachement de GPU sur Azure Stack HCI

Vous pouvez attacher vos GPU de deux façons pour Azure Stack HCI :

  • Affectation d’appareil discrète (DDA) : vous permet de dédier un GPU physique à votre charge de travail. Dans un déploiement DDA, les charges de travail virtualisées s’exécutent sur le pilote natif et disposent généralement d’un accès complet aux fonctionnalités du GPU. DDA offre le plus haut niveau de compatibilité des applications et de performances potentielles.

  • Partitionnement GPU (GPU-P) : vous permet de partager un GPU avec plusieurs charges de travail en fractionnant le GPU en partitions fractionnaires dédiées.

Tenez compte des fonctionnalités suivantes et prenez en charge les différences entre les deux options d’utilisation de vos GPU :

Description Attribution d’appareils en mode discret Partitionnement du GPU
Modèle de ressource GPU Appareil entier Appareil également partitionné
Densité de machines virtuelles Faible (un GPU à une machine virtuelle) Élevé (un GPU à de nombreuses machines virtuelles)
Compatibilité des applications Toutes les fonctionnalités GPU fournies par le fournisseur (DX 12, OpenGL, CUDA) Toutes les fonctionnalités GPU fournies par le fournisseur (DX 12, OpenGL, CUDA)
VRAM de GPU Jusqu’à la quantité de RAM vidéo prise en charge par le GPU Jusqu'à VRAM pris en charge par le GPU par partition
Pilote GPU dans l’invité Pilote fournisseur GPU (NVIDIA) Pilote fournisseur GPU (NVIDIA)

Modèles GPU pris en charge

Pour afficher la liste complète des solutions prises en charge et des GPU disponibles, consultez Solutions Azure Stack HCI et sélectionnez prise en charge gpu dans le menu de gauche pour obtenir des options.

NVIDIA prend en charge leurs charges de travail séparément avec leur logiciel GPU virtuel. Pour plus d’informations, consultez Microsoft Azure Stack HCI - Gpu NVIDIA pris en charge et plateformes de serveur validées.

Pour les charges de travail AKS, consultez les GPU pour AKS for Arc.

Les modèles GPU suivants sont pris en charge à l’aide des charges de travail de machine virtuelle DDA et GPU-P for Arc :

  • NVIDIA A2
  • NVIDIA A16

Ces modèles GPU supplémentaires sont pris en charge à l’aide de GPU-P (uniquement) pour les charges de travail de machine virtuelle Arc :

  • NVIDIA A10
  • NVIDIA A40
  • NVIDIA L4
  • NVIDIA L40
  • NVIDIA L40S

Configuration requise pour l’hôte

Votre hôte Azure Stack HCI doit répondre aux exigences suivantes :

  • Votre système doit prendre en charge une solution Azure Stack HCI avec prise en charge gpu. Pour parcourir vos options, consultez le catalogue Azure Stack HCI.

  • Vous avez accès à un cluster Azure Stack HCI version 23H2.

  • Vous devez créer une configuration homogène pour les GPU sur tous les serveurs de votre cluster. Une configuration homogène consiste à installer la même fabrique et le même modèle de GPU.

  • Pour GPU-P, vérifiez que la prise en charge de la virtualisation et SR-IOV est activée dans le BIOS de chaque serveur du cluster. Contactez votre fournisseur système si vous ne parvenez pas à identifier le paramètre approprié dans votre BIOS.

Préparer des pilotes GPU sur chaque hôte

Le processus de préparation et d’installation des pilotes GPU pour chaque serveur hôte diffère un peu entre DDA et GPU-P. Suivez le processus applicable pour votre situation.

Rechercher des GPU sur chaque hôte

Vérifiez d’abord qu’aucun pilote n’est installé pour chaque serveur hôte. S’il existe un pilote hôte installé, désinstallez le pilote hôte et redémarrez le serveur.

Après avoir désinstallé le pilote hôte ou si vous n’avez pas installé de pilote, exécutez PowerShell en tant qu’administrateur avec la commande suivante :

Get-PnpDevice -Status Error | fl FriendlyName, InstanceId

Vous devez voir que les appareils GPU apparaissent dans un état d’erreur, comme 3D Video Controller indiqué dans l’exemple de sortie qui répertorie le nom convivial et l’ID d’instance du 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

Utilisation de DDA

Suivez ce processus si vous utilisez DDA :

1. Désactiver et démonter les GPU de l’hôte

Pour DDA, lorsque vous désinstallez le pilote hôte ou que vous disposez d’une nouvelle configuration de cluster Azure Stack HCI, le GPU physique passe à un état d’erreur. Vous devez démonter tous les appareils GPU pour continuer. Vous pouvez utiliser Gestionnaire de périphériques ou PowerShell pour désactiver et démonter le GPU à l’aide de l’étape InstanceID précédente obtenue.

$id1 = "GPU_instance_ID"
Disable-PnpDevice -InstanceId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -InstancePath $id1 -Force

Vérifiez que les GPU ont été correctement démontés à partir de l’hôte. Les GPU seront désormais dans un Unknown état :

Get-PnpDevice -Status Unknown | fl FriendlyName, InstanceId

Répétez ce processus pour chaque serveur du cluster Azure Stack HCI pour préparer les GPU.

2. Télécharger et installer le pilote d’atténuation

Le logiciel peut inclure des composants développés et détenus par NVIDIA Corporation ou ses licences. L’utilisation de ces composants est régie par le contrat de licence utilisateur final NVIDIA.

Consultez la documentation NVIDIA pour télécharger le pilote d’atténuation NVIDIA applicable. Après avoir téléchargé le pilote, développez l’archive et installez le pilote d’atténuation sur chaque serveur hôte. Utilisez le script PowerShell suivant pour télécharger le pilote d’atténuation et l’extraire :

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

Une fois les fichiers du pilote d’atténuation extraits, recherchez la version du modèle approprié de votre GPU et installez-la. Par exemple, si vous installiez un pilote d’atténuation NVIDIA A2, exécutez les opérations suivantes :

pnputil /add-driver nvidia_azure_stack_A2_base.inf /install /force

Pour confirmer l’installation de ces pilotes, exécutez :

pnputil /enum-devices OR pnputil /scan-devices

Vous devez être en mesure de voir les GPU correctement identifiés dans Get-PnpDevice:

Get-PnpDevice -Class Display | fl FriendlyName, InstanceId

Répétez les étapes ci-dessus pour chaque hôte dans votre cluster Azure Stack HCI.

Utilisation de GPU-P

Suivez ce processus si vous utilisez GPU-P :

Télécharger et installer le pilote hôte

GPU-P nécessite des pilotes au niveau de l’hôte qui diffèrent de DDA. Pour les GPU NVIDIA, vous aurez besoin d’un pilote graphique logiciel NVIDIA vGPU sur chaque hôte et sur chaque machine virtuelle qui utilisera GPU-P. Pour plus d’informations, consultez la dernière version de la documentation nvidia vGPU et des détails sur les licences dans le Guide utilisateur des licences clientes.

Après avoir identifié les GPU comme 3D Video Controller sur votre serveur hôte, téléchargez le pilote vGPU hôte. Par le biais de votre licence NVIDIA GRID, vous devez être en mesure d’obtenir le pilote hôte approprié .zip fichier.

Vous devez obtenir et déplacer le dossier suivant vers votre serveur hôte : \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers

Accédez à \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers\Display.Driver et installez le pilote.

pnputil /add-driver .\nvgridswhci.inf /install /force

Pour confirmer l’installation de ces pilotes, exécutez :

pnputil /enum-devices

Vous devez être en mesure de voir les GPU correctement identifiés dans Get-PnpDevice:

Get-PnpDevice -Class Display | fl FriendlyName, InstanceId

Vous pouvez également exécuter l’interface nvidia-smi de gestion du système NVIDIA pour répertorier les GPU sur le serveur hôte comme suit :

nvidia-smi

Si le pilote est correctement installé, une sortie similaire à l’exemple suivant s’affiche :

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                                                 |
+-----------------------------------------------------------------------------+

Configurer le nombre de partitions du GPU

Procédez comme suit pour configurer le nombre de partitions GPU dans PowerShell :

Remarque

Lorsque vous utilisez PowerShell, vous devez vérifier manuellement que la configuration gpu est homogène sur tous les serveurs de votre cluster Azure Stack HCI.

  1. Connectez-vous au serveur dont vous souhaitez configurer le nombre de partitions GPU.

  2. Exécutez la Get-VMHostPartitionableGpu commande et reportez-vous aux valeurs Name et ValidPartitionCounts .

  3. Exécutez la commande suivante pour configurer le nombre de partitions. Remplacez GPU-name par la valeur Nom et partition-count par l'un des comptes pris en charge dans la valeur ValidPartitionCounts :

    Set-VMHostPartitionableGpu -Name "<GPU-name>" -PartitionCount <partition-count>
    

    Par exemple, la commande suivante configure le nombre de partitions sur 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
    

    Vous pouvez réexécuter la commande Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount pour vérifier que le nombre de partitions est défini sur 4.

    Voici un exemple de sortie :

    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
    
  4. Pour conserver la configuration homogène, répétez les étapes de configuration du nombre de partitions sur chaque serveur de votre cluster Azure Stack HCI.

Conditions requises pour les invités

La gestion gpu est prise en charge pour les charges de travail de machine virtuelle Arc suivantes :

Étapes suivantes