Installare i driver GPU NVIDIA in VM serie N che eseguono Linux
Attenzione
Questo articolo fa riferimento a CentOS, una distribuzione di Linux che ha raggiunto lo stato di fine del servizio (EOL). Valutare le proprie esigenze e pianificare di conseguenza. Per ulteriori informazioni, consultare la Guida alla fine del ciclo di vita di CentOS.
Si applica a: ✔️ macchine virtuali Linux
Per usufruire delle funzionalità GPU delle macchine virtuali serie N di Azure che si servono di GPU NVIDIA, è necessario installare i driver GPU NVIDIA. L'estensione del driver NVIDIA GPU consente di installare i driver NVIDIA CUDA o GRID appropriati in una macchina virtuale serie N. Installare o gestire l'estensione usando il portale di Azure o strumenti come l'interfaccia della riga di comando di Azure o Azure Resource Manager. Vedere le documentazione dell'estensione dei driver GPU NVIDIA per le distribuzioni supportate e i passaggi di distribuzione.
Se si sceglie di installare manualmente i driver GPU NVIDIA, questo articolo descrive i driver e le distribuzioni supportate, nonché passaggi di installazione e verifica. Le informazioni di configurazione manuale dei driver sono disponibili anche per le macchine virtuali Windows.
Per conoscere le specifiche, le capacità di archiviazione e i dettagli dei dischi delle macchine virtuali serie N, vedere Dimensioni delle macchine virtuali Linux GPU.
Driver e distribuzioni supportati
Driver NVIDIA CUDA
Per i driver CUDA più recenti e i sistemi operativi supportati, visitare il sito Web di NVIDIA. Assicurarsi di installare o eseguire l'aggiornamento ai driver CUDA più recenti supportati per la distribuzione.
Nota
I driver CUDA supportati più recenti per le macchine virtuali SKU della serie NC originali sono attualmente alla versione 470.82.01. Le versioni successive del driver non sono supportate nelle schede K80 nel controller di rete.
Nota
Le macchine virtuali di Azure NVads A10 v5 supportano solo GRID 14.1(510.73) o versioni successive del driver. Il driver vGPU per l'SKU A10 è un driver unificato che supporta sia carichi di lavoro di grafica che di calcolo.
Suggerimento
Anziché installare manualmente i driver CUDA in una VM Linux, è possibile distribuire un'immagine della macchina virtuale per data science di Azure. Le edizioni della macchina virtuale per data science per Ubuntu 16.04 LTS preinstalla i driver NVIDIA CUDA, CUDA Deep Neural Network Library e altri strumenti.
Driver NVIDIA GRID
Microsoft ridistribuisce i programmi di installazione dei driver NVIDIA-GRID per le macchine virtuali serie NV e NVv3 usate come workstation virtuali o per applicazioni virtuali. Installare solo questi driver GRID nelle macchine virtuali NV di Azure, solo nei sistemi operativi elencati nella tabella seguente. Questi driver includono la licenza per il software della GPU virtuale GRID in Azure. Non è necessario configurare un server licenze software NVIDIA vGPU.
I driver GRID ridistribuiti da Azure non funzionano nella maggior parte delle macchine virtuali non NV come NC, NCv2, NCv3, ND e macchine virtuali serie NDv2, ma funzionano nella serie NCasT4v3.
Per altre informazioni sulle versioni specifiche di vGPU e del ramo driver, visitare il sito Web NVIDIA.
Distribuzione | Driver |
---|---|
Ubuntu 20.04 LTS, 22.04 LTS Red Hat Enterprise Linux 7.9, 8.6, 8.8, 8.9, 8.10 SUSE Linux Enterprise Server 15 SP2, 12 SP2,12 SP5 Rocky Linux 8.4 |
NVIDIA vGPU 17.3, ramo driver R550 NVIDIA vGPU 16.5, ramo driver R535 |
Nota
Per le VM di Azure NVads A10 v5, è consigliabile che i clienti siano sempre nella versione più recente del driver. La versione più recente del driver principale NVIDIA (n) è compatibile solo con le versioni precedenti del ramo principale precedente (n-1). Ad esempio, vGPU 17.x è compatibile con le versioni precedenti solo con vGPU 16.x. Tutte le VM ancora in esecuzione n-2 o versioni precedenti potrebbero riscontrare errori del driver quando viene implementato il ramo di unità più recente negli host di Azure.
Le VM NVs_v3 supportano solo vGPU 16 o versione precedente del driver.
Visitare GitHub per l'elenco completo di tutti i collegamenti ai driver NVIDIA GRID precedenti.
Avviso
L'installazione di software di terze parti in prodotti Red Hat può influenzare i termini di supporto di Red Hat. Vedere l'articolo della Knowledge base di Red Hat.
Installare i driver CUDA nelle macchine virtuali serie N
Di seguito sono indicati i passaggi per installare i driver CUDA nelle VM Serie N dal Toolkit di NVIDIA CUDA.
Gli sviluppatori C++ e C possono facoltativamente installare il toolkit completo per creare applicazioni con accelerazione GPU. Per altre informazioni, vedere la guida di installazione di CUDA.
Per installare i driver di CUDA, stabilire una connessione SSH a ogni VM. Per verificare che nel sistema sia presente una GPU con supporto per core CUDA, eseguire il comando seguente:
lspci | grep -i NVIDIA
L'output è simile all'esempio seguente (che rappresenta una scheda NVIDIA Tesla K80):
lspci elenca i dispositivi PCIe nella macchina virtuale, incluse le schede di interfaccia di rete InfiniBand e le GPU, se presenti. Se lspci non restituisce risultati, potrebbe essere necessario installare LIS in CentOS/RHEL.
Quindi eseguire i comandi di installazione specifici per la distribuzione.
Ubuntu
Driver proprietari NVIDIA per pacchetti Ubuntu. Questi driver provengono direttamente da NVIDIA e sono semplicemente inseriti in un pacchetto da Ubuntu in modo che possano essere gestiti automaticamente dal sistema. Il download e l'installazione di driver da un'altra origine possono causare danni al sistema. Inoltre, l'installazione di driver di terze parti richiede passaggi aggiuntivi nelle macchine virtuali con TrustedLaunch e Avvio protetto abilitati. Richiedono all'utente di aggiungere una nuova chiave di proprietario del computer per l'avvio del sistema. I driver di Ubuntu sono firmati da Canonical e funzioneranno con l'avvio protetto.
Installare l'utilità
ubuntu-drivers
:sudo apt update && sudo apt install -y ubuntu-drivers-common
Installare i driver NVIDIA più recenti:
sudo ubuntu-drivers install
Riavviare la macchina virtuale dopo l'installazione del driver GPU.
Scaricare e installare CUDA Toolkit da NVIDIA:
Nota
L'esempio mostra il percorso del pacchetto CUDA per Ubuntu 24.04 LTS. Sostituire il percorso specifico della versione che si intende usare.
Visitare il Centro download NVIDIA o la pagina Risorse NVIDIA CUDA per il percorso completo specifico di ogni versione.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/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-5
L'installazione può richiedere alcuni minuti.
Riavviare la macchina virtuale al termine dell'installazione:
sudo reboot
Verificare che la GPU sia riconosciuta correttamente (dopo il riavvio):
nvidia-smi
Aggiornamenti dei driver NVIDIA
È consigliabile aggiornare periodicamente i driver NVIDIA dopo la distribuzione.
sudo apt update
sudo apt full-upgrade
CentOS o Red Hat Enterprise Linux
Aggiornare il kernel (consigliato). Se si sceglie di non aggiornare il kernel, assicurarsi che le versioni di
kernel-devel
edkms
siano adeguate per il kernel.sudo yum install kernel kernel-tools kernel-headers kernel-devel sudo reboot
Installare la versione più recente di Linux Integration Services per Hyper-V e Azure. Controllare se LIS è richiesto verificando i risultati di lspci. Se tutti i dispositivi GPU sono elencati come previsto, l'installazione di LIS non è necessaria.
LIS è applicabile a Red Hat Enterprise Linux, CentOS e Oracle Linux Red Hat Compatible Kernel 5.2-5.11, 6.0-6.10 e 7.0-7.7. Per altri dettagli, vedere la documentazione di Linux Integration Services. Ignorare questo passaggio se si prevede di usare CentOS/RHEL 7.8 (o versioni successive) perché LIS non è più necessario per queste versioni.
wget https://aka.ms/lis tar xvzf lis cd LISISO sudo ./install.sh sudo reboot
Riconnettersi alla macchina virtuale e continuare l'installazione con i comandi seguenti:
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'installazione può richiedere alcuni minuti.
Nota
Visitare Fedora e Nvidia CUDA repo per selezionare il pacchetto corretto per la versione CentOS o RHEL da usare.
Ad esempio, CentOS 8 e RHEL 8 richiedono i passaggi seguenti.
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
Per installare facoltativamente il toolkit di CUDA completo, digitare:
sudo yum install cuda
Nota
Se viene visualizzato un messaggio di errore relativo a pacchetti mancanti come vulkan-filesystem, potrebbe essere necessario modificare /etc/yum.repos.d/rh-cloud, cercare optional-rpms e impostare abilitato su 1
Riavviare la VM e procedere a verificare l'installazione.
Verificare l'installazione del driver
Per controllare lo stato del dispositivo GPU, eseguire una connessione SSH alla VM ed eseguire l'utilità della riga di comando nvidia-smi installata con il driver.
Se il driver è installato, Nvidia SMI elenca GPU-Util come 0% fino a quando non si esegue un carico di lavoro GPU nella macchina virtuale. La versione del driver e i dettagli GPU possono essere diversi da quelli riportati.
Connettività di rete RDMA
La connettività di rete RDMA può essere abilitata nelle macchine virtuali serie N con supporto per RDMA, come le macchine virtuali NC24r distribuite nello stesso set di disponibilità o in un unico gruppo di selezione in un set di scalabilità di macchine virtuali. La rete RDMA supporta il traffico Message Passing Interface (MPI) per le applicazioni in esecuzione con Intel MPI 5.x o una versione più recente:
Distribuzioni
Distribuire le VM serie N abilitate per RDMA da una delle immagini in Azure Marketplace che supporta la connettività RDMA sulle VM serie N:
Ubuntu 16.04 LTS - Configurare i driver RDMA nella VM ed eseguire la registrazione con Intel per scaricare Intel MPI:
Installare dapl, rdmacm, ibverbs e mlx4
sudo apt-get update sudo apt-get install libdapl2 libmlx4-1
In /etc/waagent.conf abilitare RDMA rimuovendo il commento dalle righe di configurazione seguenti. Per modificare questo file è necessario l'accesso alla radice.
OS.EnableRDMA=y OS.UpdateRdmaDriver=y
Aggiungere o modificare le impostazioni della memoria seguenti espresse in KB nel file /etc/security/limits.conf. Per modificare questo file è necessario l'accesso alla radice. A scopo di test è possibile impostare memlock su unlimited. Ad esempio:
<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>
Installare la libreria Intel MPI. Acquistare e scaricare la libreria da Intel o scaricare la versione di valutazione gratuita.
wget http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9278/l_mpi_p_5.1.3.223.tgz
Sono supportati solo i runtime Intel MPI 5.x.
Per la procedura di installazione, vedere Intel MPI Library installation guide (Guida all'installazione di Intel MPI Library).
Abilitare ptrace per i processi non di debugger non radice (necessari per le versioni più recenti di Intel MPI).
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
CentOS-based 7.4 HPC: i driver RDMA e Intel MPI 5.1 vengono installati nella VM.
HPC basato su CentOS - CentOS-HPC 7.6 e versioni successive (per gli SKU in cui InfiniBand è supportato su SR-IOV). Queste immagini includono librerie MEllanox OFED e MPI preinstallate.
Nota
Le schede CX3-Pro sono supportate solo tramite le versioni LTS di Mellanox OFED. Usare la versione LTS Mellanox OFED (4.9-0.1.7.0) nelle macchine virtuali serie N con schede ConnectX3-Pro. Per altre informazioni, vedere Driver Linux.
Inoltre, alcune delle immagini HPC di Azure Marketplace più recenti hanno Mellanox OFED 5.1 e versioni successive, che non supportano le schede ConnectX3-Pro. Controllare la versione Mellanox OFED nell'immagine HPC prima di usarla nelle macchine virtuali con schede ConnectX3-Pro.
Le immagini seguenti sono le immagini CentOS-HPC più recenti che supportano le schede 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
Installare i driver GRID nelle macchine virtuali serie NV o NVv3
Per installare i driver NVIDIA GRID nelle macchine virtuali serie NV o NVv3, stabilire una connessione SSH a ogni macchina virtuale e seguire la procedura per la distribuzione di Linux.
Ubuntu
Eseguire il comando
lspci
. Verificare che la scheda o le schede NVIDIA M60 siano visualizzate come dispositivi PCI.Installare gli aggiornamenti.
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
Disabilitare il driver del kernel Nouveau, che è incompatibile con il driver NVIDIA. Usare il driver NVIDIA solo nelle macchine virtuali NV o NVv2. Per disabilitare il driver, creare un file in
/etc/modprobe.d
denominatonouveau.conf
con il contenuto seguente:blacklist nouveau blacklist lbm-nouveau
Riavviare la macchina virtuale ed eseguire nuovamente la connessione. Uscire dal server X:
sudo systemctl stop lightdm.service
Scaricare e installare il driver 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
Quando viene chiesto se si vuole eseguire l'utilità nvidia-xconfig per aggiornare il file di configurazione di X, selezionare Yes (Sì).
Al termine dell'installazione, copiare /etc/nvidia/gridd.conf.template in un nuovo file gridd.conf nel percorso /etc/nvidia/
sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
Aggiungere quanto segue a
/etc/nvidia/gridd.conf
:IgnoreSP=FALSE EnableUI=FALSE
Rimuovere quanto segue da
/etc/nvidia/gridd.conf
se presente:FeatureType=0
Riavviare la VM e procedere a verificare l'installazione.
Installare il driver GRID in Ubuntu con avvio protetto abilitato
Il processo di installazione del driver GRID non offre opzioni per ignorare la compilazione e l'installazione del modulo kernel e per selezionare un'altra origine di moduli kernel firmati, quindi l'avvio protetto deve essere disabilitato nelle macchine virtuali Linux per poterle usare con GRID dopo l'installazione dei moduli kernel firmati.
CentOS o Red Hat Enterprise Linux
Aggiornare il kernel e il DKMS (consigliato). Se si sceglie di non aggiornare il kernel, assicurarsi che le versioni di
kernel-devel
edkms
siano adeguate per il kernel.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
Disabilitare il driver del kernel Nouveau, che è incompatibile con il driver NVIDIA. Usare solo il driver NVIDIA nelle macchine virtuali NV o NV3. A tale scopo, creare un file in
/etc/modprobe.d
denominatonouveau.conf
con il contenuto seguente:blacklist nouveau blacklist lbm-nouveau
Riavviare la macchina virtuale e installare i servizi di integrazione di Linux più recenti per Hyper-V e Azure. Controllare se LIS è richiesto verificando i risultati di lspci. Se tutti i dispositivi GPU sono elencati come previsto, l'installazione di LIS non è necessaria.
Ignorare questo passaggio se si prevede di usare CentOS/RHEL 7.8 (o versioni successive) perché LIS non è più necessario per queste versioni.
wget https://aka.ms/lis tar xvzf lis cd LISISO sudo ./install.sh sudo reboot
Ristabilire la connessione alla macchina virtuale ed eseguire il comando
lspci
. Verificare che la scheda o le schede NVIDIA M60 siano visualizzate come dispositivi PCI.Scaricare e installare il driver 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
Quando viene chiesto se si vuole eseguire l'utilità nvidia-xconfig per aggiornare il file di configurazione di X, selezionare Yes (Sì).
Al termine dell'installazione, copiare /etc/nvidia/gridd.conf.template in un nuovo file gridd.conf nel percorso /etc/nvidia/
sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
Aggiungere due righe a
/etc/nvidia/gridd.conf
:IgnoreSP=FALSE EnableUI=FALSE
Rimuovere una riga da
/etc/nvidia/gridd.conf
se presente:FeatureType=0
Riavviare la VM e procedere a verificare l'installazione.
Verificare l'installazione del driver
Per controllare lo stato del dispositivo GPU, eseguire una connessione SSH alla VM ed eseguire l'utilità della riga di comando nvidia-smi installata con il driver.
Se il driver è installato, Nvidia SMI elenca GPU-Util come 0% fino a quando non si esegue un carico di lavoro GPU nella macchina virtuale. La versione del driver e i dettagli GPU possono essere diversi da quelli riportati.
Server X11
Se è necessario un server X11 per le connessioni da remoto a una macchina virtuale NV o nVv2, è consigliabile usare x11vnc perché consente l'accelerazione hardware della grafica. Il BusID del dispositivo M60 deve essere aggiunto manualmente al file di configurazione X11 file (in genere etc/X11/xorg.conf
). Aggiungere una sezione "Device"
simile alla seguente:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Tesla M60"
BusID "PCI:0@your-BusID:0:0"
EndSection
Aggiornare anche la sezione "Screen"
per l'uso del dispositivo.
Per individuare il BusID decimale, eseguire
nvidia-xconfig --query-gpu-info | awk '/PCI BusID/{print $4}'
Il BusID può cambiare quando una macchina virtuale viene riallocata o riavviata. Pertanto, è consigliabile creare uno script per aggiornare il BusID nella configurazione di X11 quando una macchina virtuale viene riavviata. Creare ad esempio uno script denominato busidupdate.sh
(o un altro nome scelto) con contenuto simile al seguente:
#!/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
Creare quindi una voce per lo script di aggiornamento in /etc/rc.d/rc3.d
, in modo che venga richiamato come radice all'avvio.
Risoluzione dei problemi
- È possibile impostare la modalità di persistenza tramite
nvidia-smi
. In questo modo l'output del comando sarà più veloce per l'esecuzione di query sulle schede. Per impostare la modalità di persistenza, eseguirenvidia-smi -pm 1
. Si noti che se la macchina virtuale viene riavviata, l'impostazione della modalità scompare. È sempre possibile generare script che impostino la modalità affinché venga eseguita all'avvio. - Se i driver NVIDIA CUDA sono stati aggiornati alla versione più recente e si rileva che la connettività RDMA non funziona più, reinstallare i driver RDMA per ristabilire la connettività.
- Durante l'installazione di LIS, se una determinata versione del sistema operativo CentOS/RHEL (o kernel) non è supportata per LIS, viene generato un errore “Versione del kernel” non supportata. Segnalare questo errore insieme alle versioni del sistema operativo e del kernel.
- Se i processi vengono interrotti da errori ECC nella GPU (correggibili o meno), verificare prima di tutto se la GPU soddisfa uno dei criteri RMA NVIDIA per gli errori ECC. Se la GPU è idonea per RMA, contattare il supporto tecnico per la manutenzione; in caso contrario, riavviare la macchina virtuale per ricollegare la GPU come descritto qui. Metodi meno invasivi, ad esempio
nvidia-smi -r
, non funzionano con la soluzione di virtualizzazione distribuita in Azure.
Passaggi successivi
- Se si intende acquisire un'immagine di una VM Linux in cui sono installati driver NVIDIA, vedere Come generalizzare e acquisire una macchina virtuale Linux.