Installer les pilotes GPU NVIDIA sur les machines virtuelles série N exécutant Linux

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez l’aide relative à la fin de vie de CentOS.

S’applique à : ✔️ Machines virtuelles Linux

Pour tirer parti des fonctionnalités GPU de machines virtuelles de la série N Azure reposant sur les GPU NVIDIA, vous devez installer des pilotes GPU NVIDIA. L’extension du pilote GPU NVIDIA installe les pilotes CUDA ou GRID NVIDIA appropriés sur une machine virtuelle de série N. Installez ou gérez l’extension à l’aide du portail Azure ou d’outils tels qu’Azure CLI ou les modèles Azure Resource Manager. Consultez la documentation sur l’extension du pilote GPU NVIDIA pour connaître les distributions prises en charge et les étapes de déploiement.

Si vous choisissez d’installer manuellement les pilotes GPU NVIDIA, cet article indique les distributions prises en charge, les pilotes et les étapes d’installation et de vérification. Des informations de configuration manuelle du pilote sont également disponibles pour les machines virtuelles Windows.

Pour plus d’informations sur les spécifications, les capacités de stockage et les disques des machines virtuelles série N, consultez l’article Tailles de machine virtuelle Linux GPU.

Distributions et pilotes pris en charge

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Veuillez considérer votre utilisation et votre planification en conséquence.

Pilotes CUDA NVIDIA

Pour les pilotes CUDA les plus récents et les systèmes d’exploitation pris en charge, rendez-vous sur le site web NVIDIA. Assurez-vous d’effectuer l’installation ou la mise à niveau en utilisant les derniers pilotes CUDA pris en charge pour votre distribution.

Notes

La version la plus récente prise en charge des pilotes CUDA pour les machines virtuelles de référence SKU de la série NC d’origine est actuellement la version 470.82.01. Les versions ultérieures des pilotes ne sont pas prises en charge sur les cartes K80 dans la série NC.

Remarque

Les machines virtuelles Azure NVads A10 v5 prennent en charge uniquement GRID 14.1(510.73) et les versions ultérieures de pilote. Le pilote vGPU pour la référence SKU A10 est un pilote unifié qui prend en charge les charges de travail graphiques et de calcul.

Conseil

Vous pouvez déployez une image de machine virtuelle de science des données Azure, comme alternative à une installation manuelle du pilote CUDA sur une machine virtuelle Linux. Les éditions des machines virtuelles Science des données pour Ubuntu 16.04 LTS ou CentOS 7.4 préinstallent les pilotes NVIDIA CUDA, la bibliothèque de réseau neuronal profond et d’autres outils.

Pilotes NVIDIA GRID

Microsoft redistribue les programmes d’installation du pilote GRID NVIDIA pour les machines virtuelles de série NV et NVv3 utilisées comme stations de travail virtuelles ou pour les applications virtuelles. Installez uniquement ces pilotes GRID sur des machines virtuelles Azure NV, et uniquement sur les systèmes d’exploitation répertoriés dans le tableau suivant. Ces pilotes incluent les licences des logiciels GRID Virtual GPU dans Azure. Vous n’avez pas besoin de configurer un serveur de licences logicielles NVIDIA vGPU.

Les pilotes GRID redistribués par Azure ne fonctionnent pas sur la plupart des machines virtuelles de série autre que NV, comme les machines virtuelles des séries NC, NCv2, NCv3, ND et NDv2, mais fonctionnent sur les machines virtuelles de la série NCasT4v3.

Distribution Pilote
Ubuntu 20.04 LTS, 22.04 LTS

Red Hat Enterprise Linux 7.9, 8.6, 8.8

SUSE Linux Enterprise Server 15 SP2, 12 SP2,12 SP5

Rocky Linux 8.4
NVIDIA vGPU 16.3, branche pilote R535(.exe)

NVIDIA vGPU 16.2, branche pilote R535(.exe)

Remarque

Pour les machines virtuelles Azure de série NVads A10 v5, nous recommandons aux clients d’avoir toujours la dernière version du pilote. La dernière branche (n) du pilote principal NVIDIA n’a de compatibilité descendante qu’avec la branche principale précédente (n-1). Par exemple, vGPU 17.x est a une compatibilité descendante avec vGPU 16.x uniquement. Toutes les machines virtuelles exécutant encore la version n-2 ou inférieures peuvent rencontrer les échecs de pilotes lorsque la branche de pilote la plus récente est déployée sur des hôtes Azure.

Les machines virtuelles NVs_v3 prennent en charge seulement la version vGPU 16 ou inférieure du pilote.

Visitez GitHub pour obtenir la liste complète de tous les liens précédents du pilote Nvidia GRID.

Avertissement

L’installation de logiciels tiers sur des produits Red Hat peut affecter les conditions de prise en charge de Red Hat. Consultez l’article de la Base de connaissances Red Hat.

Installer les pilotes CUDA sur les machines virtuelles de série N

Voici les étapes à suivre pour installer les pilotes CUDA de la boîte à outils CUDA NVIDIA sur des machines virtuelles de série N.

Les développeurs C et C++ peuvent éventuellement installer le kit d’outils complet pour créer des applications avec accélération GPU. Pour plus d’informations, consultez le Guide d’installation de CUDA.

Pour installer les pilotes CUDA, établissez une connexion SSH sur chaque machine virtuelle. Pour vérifier que le système dispose d’un GPU compatible CUDA, exécutez la commande suivante :

lspci | grep -i NVIDIA

La sortie est similaire à l’exemple suivant (illustrant une carte K80 Tesla NVIDIA) :

Sortie de commande Ispci

lspci répertorie les périphériques PCIe sur la machine virtuelle, y compris la carte réseau InfiniBand et les GPU, le cas échéant. Si lspci n’est pas correctement renvoyé, vous devrez peut-être installer LIS sur CentOS/RHEL.

Ensuite, exécutez les commandes d’installation spécifiques de votre distribution.

Ubuntu

Ubuntu empaquette les pilotes propriétaires NVIDIA. Ces pilotes proviennent directement de NVIDIA et sont simplement empaquetés par Ubuntu afin qu’ils puissent être managés automatiquement par le système. Le téléchargement et l’installation de pilotes à partir d’une autre source peuvent entraîner une panne du système. Par ailleurs, l’installation de pilotes tiers nécessite des étapes supplémentaires sur les machines virtuelles avec TrustedLaunch et le démarrage sécurisé activés. Ils demandent à l’utilisateur d’ajouter une nouvelle clé propriétaire de l’ordinateur pour que le système démarre. Les pilotes d’Ubuntu sont signés par Canonical et fonctionnent avec le démarrage sécurisé.

  1. Installez l'utilitaire ubuntu-drivers :

    sudo apt update && sudo apt install -y ubuntu-drivers-common
    
  2. Installez la dernière version du pilote NVIDIA :

    sudo ubuntu-drivers install
    
  3. Téléchargez et installez la boîte à outils CUDA à partir de NVIDIA :

    Remarque

    L'exemple montre le chemin d'accès au package CUDA pour Ubuntu 22.04 LTS. Utilisez le chemin d’accès spécifique à la version que vous envisagez d’utiliser.

    Visitez le Centre de téléchargement NVIDIA ou la page Ressources NVIDIA CUDA pour obtenir le chemin complet spécifique à chaque version.

    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
    sudo apt install -y ./cuda-keyring_1.1-1_all.deb
    sudo apt update
    sudo apt -y install cuda-toolkit-12-3
    

    L’installation peut prendre plusieurs minutes.

  4. Vérifiez que le GPU est bien reconnu :

    nvidia-smi
    

Mises à jour du pilote NVIDIA

Nous vous recommandons de mettre régulièrement à jour les pilotes NVIDIA après le déploiement.

sudo apt update
sudo apt full-upgrade

CentOS ou Red Hat Enterprise Linux

  1. Mettez à jour le noyau (recommandé). Si vous choisissez de ne pas mettre à jour le noyau, vérifiez que les versions de kernel-devel et dkms sont appropriées pour votre noyau.

    sudo yum install kernel kernel-tools kernel-headers kernel-devel
    sudo reboot
    
  2. Installez les derniers services d’intégration Linux pour Hyper-V et Azure. Vérifiez si LIS est requis en vérifiant les résultats d’lspci. Si tous les périphériques GPU sont répertoriés comme prévu, il n’est pas nécessaire d’installer LIS.

    LIS s’applique à Red Hat Enterprise Linux, CentOS et Oracle Linux Red Hat Compatible Kernel 5.2-5.11, 6.0-6.10 et 7.0-7.7. Pour plus d’informations, consultez la documentation relative aux services d’intégration Linux. Ignorez cette étape si vous envisagez d’utiliser CentOS/RHEL 7.8 (ou versions ultérieures), car LIS n’est plus nécessaire pour ces versions.

    wget https://aka.ms/lis
    tar xvzf lis
    cd LISISO
    
    sudo ./install.sh
    sudo reboot
    
  3. Reconnectez-vous à la machine virtuelle et continuez l’installation avec les commandes suivantes :

    sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
    sudo yum clean all
    sudo yum -y install nvidia-driver-latest-dkms cuda-drivers
    

    L’installation peut prendre plusieurs minutes.

    Notes

    Rendez-vous sur les référentiels Fedora et NVIDIA CUDA pour sélectionner le package approprié pour la version de CentOS ou RHEL que vous souhaitez utiliser.

Par exemple, CentOS 8 et RHEL 8 nécessitent les étapes suivantes.

sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum install dkms

sudo wget https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo -O /etc/yum.repos.d/cuda-rhel8.repo

sudo yum install cuda-drivers
  1. Pour éventuellement installer le kit d’outils CUDA complet, saisissez :

    sudo yum install cuda
    

    Notes

    Si vous voyez un message d’erreur lié à des packages manquants comme vulkan-filesystem, vous devrez peut-être modifier /etc/yum.repos.d/rh-cloud, rechercher optional-rpms et définir enabled sur la valeur 1.

  2. Redémarrez la machine virtuelle et vérifiez l’installation.

Vérification de l’installation du pilote

Pour interroger l’état de l’appareil GPU, connectez-vous par SSH à la machine virtuelle et exécutez l’utilitaire de ligne de commande nvidia-smi installé avec le pilote.

Si le pilote est installé, Nvidia SMI répertorie gpu-util comme 0 % jusqu’à ce que vous exécutiez une charge de travail GPU sur la machine virtuelle. La version de votre pilote et vos détails de GPU peuvent différer de ceux indiqués.

État de l’appareil NVIDIA

Connectivité réseau RDMA

La connectivité réseau RDMA peut être activée sur des machines virtuelles de série N compatibles RDMA, comme les machines NC24r déployées dans le même groupe à haute disponibilité ou dans un seul groupe de placement au sein d’un groupe de machines virtuelles identiques. Le réseau RDMA prend en charge le trafic MPI (Message Passing Interface) pour les applications exécutées avec Intel MPI 5.x ou une version ultérieure :

Distributions

Déployez des machines virtuelles de série N compatibles RDMA à partir de l’une des images suivantes de la Place de marché Azure qui prend en charge la connectivité RDMA sur des machines virtuelles de série N :

  • Ubuntu 16.04 LTS - Configurez les pilotes RDMA sur la machine virtuelle et inscrivez-vous auprès d’Intel pour télécharger Intel MPI :

    1. Installer dapl, rdmacm, ibverbs et mlx4

      sudo apt-get update
      
      sudo apt-get install libdapl2 libmlx4-1
      
      
    2. Dans /etc/waagent.conf, activez RDMA en supprimant les marques de commentaire dans les lignes de configuration suivantes. Un accès racine est requis pour modifier ce fichier.

      OS.EnableRDMA=y
      
      OS.UpdateRdmaDriver=y
      
    3. Ajoutez ou modifiez les paramètres de mémoire suivants en Ko dans le fichier /etc/security/limits.conf. Un accès racine est requis pour modifier ce fichier. À des fins de test, vous pouvez définir pour memlock une valeur illimitée. Par exemple : <User or group name> hard memlock unlimited.

      <User or group name> hard    memlock <memory required for your application in KB>
      
      <User or group name> soft    memlock <memory required for your application in KB>
      
    4. Installez la bibliothèque Intel MPI. Achetez et téléchargez la bibliothèque auprès d’Intel ou téléchargez la version d’évaluation gratuite.

      wget http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9278/l_mpi_p_5.1.3.223.tgz
      

      Seuls les runtimes Intel MPI 5.x sont pris en charge.

      Pour les étapes d’installation, consultez le Guide d’installation de la bibliothèque Intel MPI.

    5. Activez ptrace pour les processus non-racine et non-débogueur (nécessaire pour les versions les plus récentes d’Intel MPI).

      echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
      
  • CentOS 7.4 HPC - Les pilotes RDMA et Intel MPI 5.1 sont installés sur la machine virtuelle.

  • HPC basé sur CentOS - CentOS-HPC 7.6 et versions ultérieures (pour les références SKU où InfiniBand est pris en charge sur SR-IOV). Ces images ont des bibliothèques Mellanox OFED et MPI préinstallées.

Notes

Les cartes CX3 Pro sont prises en charge uniquement par le biais des versions LTS de Mellanox OFED. Utilisez la version LTS de Mellanox OFED (4.9-0.1.7.0) sur les machines virtuelles de la série N avec des cartes ConnectX3-Pro. Pour plus d’informations, consultez Pilotes Linux.

En outre, certaines des dernières images HPC de la Place de marché Azure ont Mellanox OFED 5.1 ou des versions ultérieures ; ces versions ne prennent pas en charge les cartes ConnectX3-Pro. Vérifiez la version de Mellanox OFED dans l’image HPC avant de l’utiliser sur des machines virtuelles avec des cartes ConnectX3-Pro.

Les images suivantes sont les dernières images CentOS-HPC qui prennent en charge les cartes ConnectX3-Pro :

  • OpenLogic:CentOS-HPC:7.6:7.6.2020062900
  • OpenLogic:CentOS-HPC:7_6gen2:7.6.2020062901
  • OpenLogic:CentOS-HPC:7.7:7.7.2020062600
  • OpenLogic:CentOS-HPC:7_7-gen2:7.7.2020062601
  • OpenLogic:CentOS-HPC:8_1:8.1.2020062400
  • OpenLogic:CentOS-HPC:8_1-gen2:8.1.2020062401

Installer les pilotes GRID sur les machines virtuelles de série NV ou NVv3

Pour installer les pilotes GRID NVIDIA sur les machines virtuelles de série NV ou NVv3, établissez une connexion SSH avec chaque machine virtuelle et suivez les étapes correspondant à votre distribution Linux.

Ubuntu

  1. Exécutez la commande lspci. Vérifiez que la ou les cartes NVIDIA M60 sont visibles en tant que périphériques PCI.

  2. Installez les mises à jour.

    sudo apt-get update
    sudo apt-get upgrade -y
    sudo apt-get dist-upgrade -y
    sudo apt-get install build-essential ubuntu-desktop -y
    sudo apt-get install linux-azure -y
    
  3. Désactivez le pilote du noyau Nouveau, qui n’est pas compatible avec le pilote NVIDIA. (Utilisez uniquement le pilote NVIDIA sur les machines virtuelles NV ou NVv2.) Pour désactiver le pilote, créez un fichier /etc/modprobe.d nommé nouveau.conf avec le contenu suivant :

    blacklist nouveau
    blacklist lbm-nouveau
    
  4. Redémarrez la machine virtuelle et reconnectez-vous. Quittez le serveur X :

    sudo systemctl stop lightdm.service
    
  5. Téléchargez et installez le pilote GRID :

    wget -O NVIDIA-Linux-x86_64-grid.run https://go.microsoft.com/fwlink/?linkid=874272
    chmod +x NVIDIA-Linux-x86_64-grid.run
    sudo ./NVIDIA-Linux-x86_64-grid.run
    
  6. Lorsque vous êtes invité à indiquer si vous souhaitez exécuter l’utilitaire nvidia-xconfig pour mettre à jour votre fichier de configuration X, sélectionnez Oui.

  7. Une fois l’installation terminée, copiez /etc/nvidia/gridd.conf.template sur un nouveau fichier gridd.conf dà l’emplacement etc/nvidia /

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. Ajoutez la ligne suivante à /etc/nvidia/gridd.conf :

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. Le cas échéant, supprimez ce qui suit de /etc/nvidia/gridd.conf :

    FeatureType=0
    
  10. Redémarrez la machine virtuelle et vérifiez l’installation.

Installer le pilote GRID sur Ubuntu avec le démarrage sécurisé activé

Le processus d’installation du pilote GRID ne propose aucune option permettant d’ignorer la construction et l’installation du module de noyau et de sélectionner une source différente de modules de noyau signés, de sorte que le démarrage sécurisé doit être désactivé dans les machines virtuelles Linux afin de les utiliser avec GRID, après l’installation des modules de noyau signés.

CentOS ou Red Hat Enterprise Linux

  1. Mettez à jour le noyau et DKMS (recommandé). Si vous choisissez de ne pas mettre à jour le noyau, vérifiez que les versions de kernel-devel et dkms sont appropriées pour votre noyau.

    sudo yum update
    sudo yum install kernel-devel
    sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    sudo yum install dkms
    sudo yum install hyperv-daemons
    
  2. Désactivez le pilote du noyau Nouveau, qui n’est pas compatible avec le pilote NVIDIA. (Utilisez uniquement le pilote NVIDIA sur les machines virtuelles NV ou NV3.) Pour ce faire, créez un fichier /etc/modprobe.d nommé nouveau.conf avec le contenu suivant :

    blacklist nouveau
    blacklist lbm-nouveau
    
  3. Redémarrez la machine virtuelle, reconnectez-vous et installez les derniers composants Linux Integration Services pour Hyper-V et Azure. Vérifiez si LIS est requis en vérifiant les résultats d’lspci. Si tous les périphériques GPU sont répertoriés comme prévu, il n’est pas nécessaire d’installer LIS.

    Ignorez cette étape si vous envisagez d’utiliser CentOS/RHEL 7.8 (ou versions ultérieures), car LIS n’est plus nécessaire pour ces versions.

    wget https://aka.ms/lis
    tar xvzf lis
    cd LISISO
    
    sudo ./install.sh
    sudo reboot
    
    
  4. Reconnectez-vous à la machine virtuelle et exécutez la commande lspci. Vérifiez que la ou les cartes NVIDIA M60 sont visibles en tant que périphériques PCI.

  5. Téléchargez et installez le pilote GRID :

    wget -O NVIDIA-Linux-x86_64-grid.run https://go.microsoft.com/fwlink/?linkid=874272
    chmod +x NVIDIA-Linux-x86_64-grid.run
    
    sudo ./NVIDIA-Linux-x86_64-grid.run
    
  6. Lorsque vous êtes invité à indiquer si vous souhaitez exécuter l’utilitaire nvidia-xconfig pour mettre à jour votre fichier de configuration X, sélectionnez Oui.

  7. Une fois l’installation terminée, copiez /etc/nvidia/gridd.conf.template sur un nouveau fichier gridd.conf dà l’emplacement etc/nvidia /

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. Ajoutez deux lignes à /etc/nvidia/gridd.conf :

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. Supprimer une ligne de /etc/nvidia/gridd.conf si elle est présente :

    FeatureType=0
    
  10. Redémarrez la machine virtuelle et vérifiez l’installation.

Vérification de l’installation du pilote

Pour interroger l’état de l’appareil GPU, connectez-vous par SSH à la machine virtuelle et exécutez l’utilitaire de ligne de commande nvidia-smi installé avec le pilote.

Si le pilote est installé, Nvidia SMI répertoriera gpu-util comme 0 % jusqu’à ce que vous exécutiez une charge de travail GPU sur la machine virtuelle. La version de votre pilote et vos détails de GPU peuvent différer de ceux indiqués.

Capture d’écran montrant la sortie lors de l’interrogation de l’état de l’appareil GPU.

Serveur X11

Si vous avez besoin d’un serveur X11 pour les connexions à distance à une machine virtuelle NV ou NVv2, x11vnc est recommandé, car il permet l’accélération matérielle des graphiques. Le BusID de l’appareil M60 doit être ajouté manuellement au fichier de configuration de X11 (en règle générale, etc/X11/xorg.conf). Ajoutez une section "Device" similaire à la suivante :

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Tesla M60"
    BusID          "PCI:0@your-BusID:0:0"
EndSection

En outre, mettez à jour votre section "Screen" pour utiliser cet appareil.

Vous trouverez le BusID décimal en exécutant :

nvidia-xconfig --query-gpu-info | awk '/PCI BusID/{print $4}'

Le BusID peut changer lorsqu’une machine virtuelle est réaffectée ou redémarrée. Par conséquent, il peut être judicieux de créer un script pour mettre à jour le BusID dans la configuration X11 lors du redémarrage d’une machine virtuelle. Par exemple, créez un script nommé busidupdate.sh (ou un autre nom de votre choix) avec un contenu similaire à ce qui suit :

#!/bin/bash
XCONFIG="/etc/X11/xorg.conf"
OLDBUSID=`awk '/BusID/{gsub(/"/, "", $2); print $2}' ${XCONFIG}`
NEWBUSID=`nvidia-xconfig --query-gpu-info | awk '/PCI BusID/{print $4}'`

if [[ "${OLDBUSID}" == "${NEWBUSID}" ]] ; then
        echo "NVIDIA BUSID not changed - nothing to do"
else
        echo "NVIDIA BUSID changed from \"${OLDBUSID}\" to \"${NEWBUSID}\": Updating ${XCONFIG}"
        sed -e 's|BusID.*|BusID          '\"${NEWBUSID}\"'|' -i ${XCONFIG}
fi

Ensuite, créez une entrée pour votre script de mise à jour dans /etc/rc.d/rc3.d afin qu’il soit appelé en tant que racine au démarrage.

Dépannage

  • Vous pouvez définir le mode de persistance à l’aide de nvidia-smi. De cette façon, la sortie de la commande est plus rapide quand vous avez besoin d’effectuer une requête sur les cartes. Pour définir le mode de persistance, exécutez nvidia-smi -pm 1. Notez que si la machine virtuelle est redémarrée, le paramètre du mode n’est pas conservé. Vous pouvez toujours définir le paramètre du mode dans un script à exécuter au démarrage.
  • Si vous avez mis à jour les pilotes NVIDIA CUDA vers la dernière version et constatez que le connectivité RDMA ne fonctionne plus, réinstallez les pilotes RDMA pour rétablir cette connectivité.
  • Lors de l’installation de LIS, si une certaine version du système d’exploitation CentOS/RHEL (ou du noyau) n’est pas prise en charge pour LIS, une erreur « Version de noyau non prise en charge » s’affiche. Signalez cette erreur en même temps que les versions du système d’exploitation et du noyau.
  • Si des travaux sont interrompus par des erreurs ECC (corrigibles ou non) sur le GPU, commencez par vérifier si le GPU répond à l’un des critères RMA pour les erreurs ECC de Nvidia. Si le GPU est éligible pour RMA, contactez le support technique pour bénéficier d’un service. Sinon, redémarrez votre machine virtuelle pour rattacher le GPU comme décrit ici. Des méthodes moins invasives telles que nvidia-smi -r ne fonctionnent pas avec la solution de virtualisation déployée dans Azure.

Étapes suivantes