Come trasferire la GPU NVIDIA ai contenitori Proxmox VE 8 per l'accelerazione CUDA/AI e la transcodifica multimediale

Come Trasferire La Gpu Nvidia Ai Contenitori Proxmox Ve 8 Per L Accelerazione Cuda Ai E La Transcodifica Multimediale



Se hai una GPU NVIDIA installata sul tuo server Proxmox VE, puoi passarla a un contenitore Proxmox VE LXC e utilizzarla nel contenitore per l'accelerazione CUDA/AI (ad esempio TensorFlow, PyTorch). Puoi anche utilizzare la GPU NVIDIA per la transcodifica multimediale, lo streaming video, ecc. in un contenitore Proxmox VE LXC con Plex Media Server o NextCloud installato (ad esempio).

In questo articolo ti mostreremo come passare una GPU NVIDIA a un contenitore Proxmox VE 8 LXC in modo da poterlo utilizzare per l'accelerazione CUDA/AI, la transcodifica multimediale o altre attività che richiedono una GPU NVIDIA.







Argomento dei contenuti:

Installazione dei driver GPU NVIDIA su Proxmox VE 8

Per passare attraverso una GPU NVIDIA a un contenitore Proxmox VE LXC, è necessario che i driver GPU NVIDIA siano installati sul server Proxmox VE 8. Se hai bisogno di assistenza per installare l'ultima versione dei driver GPU NVIDIA ufficiali sul tuo server Proxmox VE 8, leggi questo articolo .



Assicurarsi che i moduli kernel della GPU NVIDIA vengano caricati automaticamente in Proxmox VE 8

Una volta installati i driver della GPU NVIDIA sul tuo server Proxmox VE 8, devi assicurarti che i moduli del kernel della GPU NVIDIA vengano caricati automaticamente all'avvio.



Innanzitutto, crea un nuovo file come 'nvidia.conf' nella directory '/etc/modules-load.d/' e aprilo con l'editor di testo nano.





$ nano / eccetera / moduli-carico.d / nvidia.conf

Aggiungi le seguenti righe e premi + X seguito da “Y” e per salvare il file 'nvidia.conf':



nvidia

nvidia_uvm

Affinché le modifiche abbiano effetto, aggiornare il file “initramfs” con il seguente comando:

$ aggiornamento-initramfs -In

Per qualche motivo, Proxmox VE 8 non crea i file del dispositivo GPU NVIDIA richiesti nella directory '/dev/'. Senza questi file del dispositivo, i contenitori Promox VE 8 LXC non saranno in grado di utilizzare la GPU NVIDIA.

Per assicurarti che Proxmox VE 8 crei i file del dispositivo GPU NVIDIA nella directory '/dev/' al momento dell'avvio, crea un file di regole udev '70-nvidia.rules' in '/etc/udev/rules.d/' directory e aprirla con l'editor di testo nano come segue:

$ nano / eccetera / udev / regole.d / 70 -nvidia.rules

Digitare le seguenti righe nel file “70-nvidia.rules” e premere + X seguito da “Y” e per salvare il file:

# crea i file del dispositivo NVIDIA necessari in /dev/*

NOCCIOLO == 'nvidia' , CORRI+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''

NOCCIOLO == 'nvidia_uvm' , CORRI+= '/bin/bash -c '/usr/bin/nvidia-modtest -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*''

Affinché le modifiche abbiano effetto, riavviare il server Proxmox VE 8 come segue:

$ riavviare

Una volta avviato il server Proxmox VE 8, i moduli del kernel NVIDIA dovrebbero essere caricati automaticamente, come puoi vedere nello screenshot seguente:

$ lsmod | presa nvidia

I file del dispositivo NVIDIA richiesti devono essere inseriti anche nella directory '/dev' del tuo server Proxmox VE 8. Prendere nota degli ID CGroup dei file del dispositivo NVIDIA. Devi consentire gli ID CGroup sul contenitore LXC in cui desideri far passare le GPU NVIDIA dal tuo server Proxmox VE 8. Nel nostro caso, gli ID CGroup sono 195, 237 e 226.

$ l -sx / dev / nvidia *

$ l -sx / dev / dri

Creazione di un contenitore Proxmox VE 8 LXC per il passthrough GPU NVIDIA

In questo articolo abbiamo utilizzato un contenitore Ubuntu 22.04 LTS Proxmox VE 8 LXC per la dimostrazione poiché le librerie NVIDIA CUDA e NVIDIA cuDNN sono facili da installare su Ubuntu 22.04 LTS dai repository dei pacchetti Ubuntu ed è più semplice verificare se l'accelerazione NVIDIA CUDA funziona . Se lo desideri, puoi utilizzare anche altre distribuzioni Linux. In tal caso, i comandi di installazione NVIDIA CUDA e NVIDIA cuDNN varieranno. Assicurati di seguire le istruzioni di installazione di NVIDIA CUDA e NVIDIA cuDNN per la distribuzione Linux desiderata.

Se hai bisogno di assistenza nella creazione di un contenitore Proxmox VE 8 LXC, leggi questo articolo .

Configurazione di un contenitore LXC per il passthrough GPU NVIDIA su Promox VE 8

Per configurare un contenitore LXC (contenitore 102, diciamo) per il passthrough GPU NVIDIA, aprire il file di configurazione del contenitore LXC dalla shell Proxmox VE con l'editor di testo nano come segue:

$ nano / eccetera / pve / lxc / 102 .conf

Digita le seguenti righe alla fine del file di configurazione del contenitore LXC:

lxc.cgroup.devices.allow: c 195 : * rwm

lxc.cgroup.devices.allow: c 237 : * rwm

lxc.cgroup.devices.allow: c 226 : * rwm

lxc.mount.voce: / dev / nvidia0          dev / nvidia0          nessuno legamento ,opzionale, creare = file

lxc.mount.voce: / dev / nvidiactl        dev / nvidiactl        nessuno legamento ,opzionale, creare = file

lxc.mount.voce: / dev / nvidia-modeset  dev / nvidia-modeset  nessuno legamento ,opzionale, creare = file

lxc.mount.voce: / dev / nvidia-uvm       dev / nvidia-uvm       nessuno legamento ,opzionale, creare = file

lxc.mount.voce: / dev / nvidia-uvm-tools dev / nvidia-uvm-tools nessuno legamento ,opzionale, creare = file

lxc.mount.voce: / dev / dri              dev / dri              nessuno legamento ,opzionale, creare = Voi

Assicurati di sostituire gli ID CGroup nelle righe 'lxc.cgroup.devices.allow' del file di configurazione del contenitore LXC. Una volta finito, premi + X seguito da 'Y' e per salvare il file di configurazione del contenitore LXC.

Ora avvia il contenitore LXC dalla dashboard di Proxmox VE 8.

Se il passthrough della GPU NVIDIA ha esito positivo, il contenitore LXC dovrebbe avviarsi senza errori e dovresti vedere i file del dispositivo NVIDIA nella directory '/dev' del contenitore.

$ l -sx / dev / nvidia *

$ l -sx / dev / dri

Installazione dei driver GPU NVIDIA sul contenitore Proxmox VE 8 LXC

Stiamo utilizzando un contenitore Ubuntu 22.04 LTS LXC sul nostro server Proxmox VE 8 per la dimostrazione. Se stai utilizzando un'altra distribuzione Linux sul contenitore LXC, i tuoi comandi varieranno leggermente dai nostri. Quindi, assicurati di regolare i comandi in base alla distribuzione Linux che stai utilizzando nel contenitore.

Puoi trovare la versione dei driver GPU NVIDIA che hai installato sul tuo server Proxmox VE 8 con il comando 'nvidia-smi'. Come puoi vedere, sul nostro server Proxmox VE 8 sono installati i driver GPU NVIDIA versione 535.146.02. Dobbiamo quindi installare i driver GPU NVIDIA versione 535.146.02 anche sul nostro container LXC.

$ nvidia-smi

Innanzitutto, installa CURL sul contenitore LXC come segue:

$ aggiornamento adeguato && adatto installare arricciare -E

CURL deve essere installato sul contenitore LXC.

Per installare la versione dei driver della GPU NVIDIA 535.146.02 (diciamo), esporta la variabile di ambiente NVIDIA_VERSION ed esegui il comando CURL (sul contenitore) per scaricare la versione richiesta del file di installazione dei driver della GPU NVIDIA.

$ esportare NVIDIA_VERSIONE = '535.146.02'

$ ricciolo -O 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .correre'

La versione corretta del file di installazione dei driver della GPU NVIDIA deve essere scaricata nel contenitore LXC, come puoi vedere nello screenshot seguente:

Ora aggiungi un'autorizzazione eseguibile al file di installazione dei driver GPU NVIDIA sul contenitore come segue:

$ chmod +x NVIDIA-Linux-x86_64-535.146.02.run

Per installare i driver della GPU NVIDIA sul contenitore, esegui il file di installazione dei driver della GPU NVIDIA con '–no-kernel-module' opzione come segue:

$ . / NVIDIA-Linux-x86_64-535.146.02.run --no-modulo-kernel

Una volta visualizzata questa opzione, seleziona 'OK' e premi .

Selezionare 'OK' e premere .

Selezionare 'Sì' e premere .

Selezionare 'OK' e premere .

I driver della GPU NVIDIA vengono installati sul contenitore LXC. Sono necessari alcuni secondi per il completamento.

Una volta visualizzato questo messaggio, seleziona 'Sì' e premi .

Selezionare 'OK' e premere . I driver della GPU NVIDIA devono essere installati sul contenitore LXC.

Per verificare se i driver della GPU NVIDIA sono installati e funzionanti, esegui il comando 'nvidia-smi' sul contenitore LXC. Come puoi vedere, la versione del driver GPU NVIDIA 535.146.02 (la stessa versione installata sul server Proxmox VE 8) è installata sul contenitore LXC e ha rilevato correttamente la nostra GPU NVIDIA RTX 4070.

$ nvidia-smi

Installazione di NVIDIA CUDA e cuDNN sul contenitore Proxmox VE 8 LXC

Stiamo utilizzando un contenitore Ubuntu 22.04 LTS LXC sul nostro server Proxmox VE 8 per la dimostrazione. Se stai utilizzando un'altra distribuzione Linux sul contenitore LXC, i tuoi comandi varieranno leggermente dai nostri. Quindi, assicurati di regolare i comandi in base alla distribuzione Linux che stai utilizzando nel contenitore.

Per installare NVIDIA CUDA e cuDNN sul contenitore Ubuntu 22.04 LTS Proxmox VE 8, esegui il seguente comando sul contenitore:

$ adatto installare build-essential nvidia-cuda-toolkit nvidia-cudnn

Per confermare l'installazione, premere “Y” e poi premere .

I pacchetti richiesti vengono scaricati e installati. Ci vuole un po' di tempo per completarlo.

Una volta visualizzata questa finestra, seleziona 'OK' e premi .

Selezionare 'Accetto' e premere .

L'installazione dovrebbe continuare.

Il programma di installazione sta scaricando l'archivio della libreria NVIDIA cuDNN da NVIDIA. È un file di grandi dimensioni, quindi richiede molto tempo per essere completato.

Una volta scaricato l'archivio della libreria NVIDIA cuDNN, l'installazione dovrebbe continuare normalmente.

A questo punto, NVIDIA CUDA e cuDNN dovrebbero essere installati sul contenitore Ubuntu 22.04 LTS Proxmox VE 8 LXC.

Verifica se l'accelerazione NVIDIA CUDA funziona sul contenitore Proxmox VE 8 LXC

Per verificare se NVIDIA CUDA è installato correttamente, controlla se il comando 'nvcc' è disponibile sul contenitore Proxmox VE 8 come segue:

$ nvcc --versione

Come puoi vedere, abbiamo NVIDIA CUDA 11.5 installato sul nostro container Proxmox VE 8.

Ora scriviamo, compiliamo ed eseguiamo un semplice programma CUDA C e vediamo se tutto funziona come previsto.

Innanzitutto, crea una directory di progetto '~/code' sul contenitore Proxmox VE 8 per mantenere i file organizzati.

$ mkdir ~ / codice

Passare alla directory del progetto '~/code' come segue:

$ CD `/ codice

Crea un nuovo file come 'hello.cu' nella directory '~/code' del contenitore Proxmox VE 8 e aprilo con l'editor di testo nano:

$ nano ciao.cu

Digita le seguenti righe di codice nel file 'hello.cu':

#include

__global__ void sayCiao ( ) {
printf ( 'Ciao mondo dalla GPU! \N ' ) ;
}

int principale ( ) {
printf ( 'Ciao mondo dalla CPU! \N ' ) ;

di Ciao << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

ritorno 0 ;
}

Una volta finito, premi + X seguito da “Y” E per salvare il file 'ciao.cu'.

Per compilare il programma CUDA 'hello.cu' sul contenitore Proxmox VE 8, esegui i seguenti comandi:

$ nvcc ciao.cu -O Ciao

Ora puoi eseguire il programma CUDA 'ciao' sul contenitore Proxmox VE 8 come segue:

$ . / Ciao

Se il contenitore Proxmox VE 8 può utilizzare la GPU NVIDIA per l'accelerazione NVIDIA CUDA, il programma stamperà due righe come mostrato nello screenshot seguente.

Se la GPU NVIDIA non è accessibile dal contenitore Proxmox VE 8, il programma stamperà solo la prima riga che è 'Hello world from the CPU!', non la seconda riga.

Conclusione

In questo articolo, ti abbiamo mostrato come passare una GPU NVIDIA dall'host Proxmox VE 8 a un container Proxmox VE 8 LXC. Ti abbiamo anche mostrato come installare la stessa versione dei driver GPU NVIDIA sul contenitore Proxmox VE 8 dell'host Proxmox VE. Infine, ti abbiamo mostrato come installare NVIDIA CUDA e NVIDIA cuDNN su un contenitore Ubuntu 22.04 LTS Proxmox VE 8 e compilare ed eseguire un semplice programma NVIDIA CUDA sul contenitore Proxmox VE 8.

Riferimenti: