Hur man överför NVIDIA GPU till Proxmox VE 8-behållare för CUDA/AI-acceleration och mediaomkodning

Hur Man Overfor Nvidia Gpu Till Proxmox Ve 8 Behallare For Cuda Ai Acceleration Och Mediaomkodning



Om du har en NVIDIA GPU installerad på din Proxmox VE-server kan du skicka den till en Proxmox VE LXC-behållare och använda den i behållaren för CUDA/AI-acceleration (d.v.s. TensorFlow, PyTorch). Du kan också använda NVIDIA GPU för mediakodning, videoströmning etc. i en Proxmox VE LXC-behållare med den installerade Plex Media Server eller NextCloud (till exempel).

I den här artikeln kommer vi att visa dig hur du överför en NVIDIA GPU till en Proxmox VE 8 LXC-behållare så att du kan använda den för CUDA/AI-acceleration, mediakodning eller andra uppgifter som kräver en NVIDIA GPU.







Ämne för innehåll:

Installera NVIDIA GPU-drivrutiner på Proxmox VE 8

För att överföra en NVIDIA GPU till en Proxmox VE LXC-behållare måste du ha NVIDIA GPU-drivrutinerna installerade på din Proxmox VE 8-server. Om du behöver hjälp med att installera den senaste versionen av de officiella NVIDIA GPU-drivrutinerna på din Proxmox VE 8-server, läs den här artikeln .



Se till att NVIDIA GPU-kärnmodulerna laddas i Proxmox VE 8 automatiskt

När du har NVIDIA GPU-drivrutinerna installerade på din Proxmox VE 8-server måste du se till att NVIDIA GPU-kärnmodulerna laddas automatiskt vid uppstart.



Skapa först en ny fil som 'nvidia.conf' i katalogen '/etc/modules-load.d/' och öppna den med nanotextredigeraren.





$ nano / etc / modules-load.d / nvidia.conf

Lägg till följande rader och tryck + X följt av 'Y' och för att spara filen 'nvidia.conf':



nvidia

nvidia_uvm

För att ändringarna ska träda i kraft, uppdatera filen 'initramfs' med följande kommando:

$ update-initramfs -i

Av någon anledning skapar inte Proxmox VE 8 de nödvändiga NVIDIA GPU-enhetsfilerna i katalogen '/dev/'. Utan dessa enhetsfiler kommer Promox VE 8 LXC-behållarna inte att kunna använda NVIDIA GPU.

För att säkerställa att Proxmox VE 8 skapar NVIDIA GPU-enhetsfilerna i katalogen “/dev/” vid uppstart, skapa en udev-regelfil “70-nvidia.rules” i “/etc/udev/rules.d/” katalog och öppna den med nanotextredigeraren enligt följande:

$ nano / etc / udev / regler.d / 70 -nvidia.rules

Skriv in följande rader i filen '70-nvidia.rules' och tryck + X följt av 'Y' och för att spara filen:

# skapa nödvändiga NVIDIA-enhetsfiler i /dev/*

KÄRNA == 'nvidia' , KÖR+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''

KÄRNA == 'nvidia_uvm' , KÖR+= '/bin/bash -c '/usr/bin/nvidia-modtest -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*''

För att ändringarna ska träda i kraft, starta om din Proxmox VE 8-server enligt följande:

$ starta om

När din Proxmox VE 8-server startar, bör NVIDIA-kärnmodulerna laddas automatiskt som du kan se i följande skärmdump:

$ lsmod | grepp nvidia

De nödvändiga NVIDIA-enhetsfilerna bör också fyllas i i katalogen '/dev' på din Proxmox VE 8-server. Notera grupp-ID:n för NVIDIA-enhetsfilerna. Du måste tillåta de CGroup ID:n på LXC-behållaren där du vill passera genom NVIDIA GPU:erna från din Proxmox VE 8-server. I vårt fall är CG-gruppens ID 195, 237 och 226.

$ ls -lh / dev / nvidia *

$ ls -lh / dev / dri

Skapa en Proxmox VE 8 LXC-behållare för NVIDIA GPU Passthrough

Vi använde en Ubuntu 22.04 LTS Proxmox VE 8 LXC-behållare i den här artikeln för demonstrationen eftersom NVIDIA CUDA- och NVIDIA cuDNN-biblioteken är lätta att installera på Ubuntu 22.04 LTS från Ubuntu-paketförråden och det är lättare att testa om NVIDIA CUDA-accelerationen fungerar . Om du vill kan du använda andra Linux-distributioner också. I så fall kommer installationskommandona för NVIDIA CUDA och NVIDIA cuDNN att variera. Se till att följa installationsanvisningarna för NVIDIA CUDA och NVIDIA cuDNN för din önskade Linux-distribution.

Om du behöver hjälp med att skapa en Proxmox VE 8 LXC-behållare, läs den här artikeln .

Konfigurera en LXC-behållare för NVIDIA GPU-passthrough på Promox VE 8

För att konfigurera en LXC-behållare (behållare 102, låt oss säga) för NVIDIA GPU-genomföring, öppna LXC-behållarens konfigurationsfil från Proxmox VE-skalet med nanotextredigeraren enligt följande:

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

Skriv in följande rader i slutet av LXC-behållarens konfigurationsfil:

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

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

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

lxc.mount.entry: / dev / nvidia0          dev / nvidia0          ingen binda ,frivillig, skapa = fil

lxc.mount.entry: / dev / nvidiactl        dev / nvidiactl        ingen binda ,frivillig, skapa = fil

lxc.mount.entry: / dev / nvidia-modeset   dev / nvidia-modeset   ingen binda ,frivillig, skapa = fil

lxc.mount.entry: / dev / nvidia-uvm       dev / nvidia-uvm       ingen binda ,frivillig, skapa = fil

lxc.mount.entry: / dev / nvidia-uvm-tools dev / nvidia-uvm-verktyg inga binda ,frivillig, skapa = fil

lxc.mount.entry: / dev / dri              dev / dri              ingen binda ,frivillig, skapa = du

Se till att byta ut CGroup-ID:n på 'lxc.cgroup.devices.allow'-raderna i LXC-behållarens konfigurationsfil. När du är klar trycker du på + X följt av 'Y' och för att spara LXC-behållarens konfigurationsfil.

Starta nu LXC-behållaren från Proxmox VE 8-instrumentbrädan.

Om NVIDIA GPU-genomföringen lyckas ska LXC-behållaren starta utan något fel och du bör se NVIDIA-enhetsfilerna i katalogen '/dev' i behållaren.

$ ls -lh / dev / nvidia *

$ ls -lh / dev / dri

Installera NVIDIA GPU-drivrutiner på Proxmox VE 8 LXC-behållaren

Vi använder en Ubuntu 22.04 LTS LXC-behållare på vår Proxmox VE 8-server för demonstration. Om du använder en annan Linux-distribution på LXC-behållaren kommer dina kommandon att skilja sig något från våra. Så se till att justera kommandona beroende på Linux-distributionen du använder på behållaren.

Du kan hitta versionen av NVIDIA GPU-drivrutiner som du installerade på din Proxmox VE 8-server med kommandot 'nvidia-smi'. Som du kan se har vi NVIDIA GPU-drivrutinerna version 535.146.02 installerade på vår Proxmox VE 8-server. Så vi måste installera NVIDIA GPU-drivrutinerna version 535.146.02 på vår LXC-behållare också.

$ nvidia-smi

Installera först CURL på LXC-behållaren enligt följande:

$ passande uppdatering && benägen Installera ringla -och

CURL ska installeras på LXC-behållaren.

För att installera NVIDIA GPU-drivrutinerna version 535.146.02 (låt oss säga), exportera NVIDIA_VERSION-miljövariabeln och kör kommandot CURL (på behållaren) för att ladda ner den nödvändiga versionen av NVIDIA GPU-drivrutinens installationsfil.

$ exportera NVIDIA_VERSION = '535.146.02'

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

Den korrekta versionen av NVIDIA GPU-drivrutinens installationsfil bör laddas ner på LXC-behållaren som du kan se i följande skärmdump:

Lägg nu till en körbar behörighet till installationsfilen för NVIDIA GPU-drivrutiner på behållaren enligt följande:

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

För att installera NVIDIA GPU-drivrutinerna på behållaren, kör installationsfilen för NVIDIA GPU-drivrutiner med '–no-kernel-module' alternativ enligt följande:

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

När du ser det här alternativet väljer du 'OK' och trycker på .

Välj 'OK' och tryck .

Välj 'Ja' och tryck .

Välj 'OK' och tryck .

NVIDIA GPU-drivrutinerna installeras på LXC-behållaren. Det tar några sekunder att slutföra.

När du ser den här uppmaningen väljer du 'Ja' och trycker på .

Välj 'OK' och tryck . NVIDIA GPU-drivrutinerna bör installeras på LXC-behållaren.

För att bekräfta om NVIDIA GPU-drivrutinerna är installerade och fungerar, kör kommandot 'nvidia-smi' på LXC-behållaren. Som du kan se är NVIDIA GPU-drivrutinen version 535.146.02 (samma version som installerad på Proxmox VE 8-servern) installerad på LXC-behållaren och den upptäckte vår NVIDIA RTX 4070 GPU korrekt.

$ nvidia-smi

Installerar NVIDIA CUDA och cuDNN på Proxmox VE 8 LXC Container

Vi använder en Ubuntu 22.04 LTS LXC-behållare på vår Proxmox VE 8-server för demonstration. Om du använder en annan Linux-distribution på LXC-behållaren kommer dina kommandon att skilja sig något från våra. Så se till att justera kommandona beroende på Linux-distributionen du använder på behållaren.

För att installera NVIDIA CUDA och cuDNN på Ubuntu 22.04 LTS Proxmox VE 8-behållaren, kör följande kommando på behållaren:

$ benägen Installera build-essential nvidia-cuda-toolkit nvidia-cudnn

För att bekräfta installationen, tryck på 'Y' och tryck sedan på .

De nödvändiga paketen laddas ner och installeras. Det tar ett tag att slutföra.

När du ser det här fönstret, välj 'OK' och tryck .

Välj 'Jag accepterar' och tryck .

Installationen bör fortsätta.

Installationsprogrammet laddar ner NVIDIAs cuDNN-biblioteksarkiv från NVIDIA. Det är en stor fil, så det tar lång tid att slutföra.

När NVIDIA cuDNN-biblioteksarkivet har laddats ner ska installationen fortsätta som vanligt.

Vid denna tidpunkt bör NVIDIA CUDA och cuDNN installeras på Ubuntu 22.04 LTS Proxmox VE 8 LXC-behållaren.

Kontrollera om NVIDIA CUDA-accelerationen fungerar på Proxmox VE 8 LXC-behållaren

För att verifiera om NVIDIA CUDA är korrekt installerat, kontrollera om kommandot 'nvcc' är tillgängligt på Proxmox VE 8-behållaren enligt följande:

$ nvcc --version

Som du kan se har vi NVIDIA CUDA 11.5 installerat på vår Proxmox VE 8-behållare.

Låt oss nu skriva, kompilera och köra ett enkelt CUDA C-program och se om allt fungerar som förväntat.

Skapa först en '~/code'-projektkatalog på Proxmox VE 8-behållaren för att hålla filerna organiserade.

$ mkdir ~ / koda

Navigera till projektkatalogen '~/code' enligt följande:

$ CD `/ koda

Skapa en ny fil som 'hello.cu' i katalogen '~/code' i Proxmox VE 8-behållaren och öppna den med nanotextredigeraren:

$ nano hej.cu

Skriv in följande kodrader i 'hello.cu'-filen:

#include

__global__ void säg hej ( ) {
printf ( 'Hej värld från GPU! \n ' ) ;
}

int main ( ) {
printf ( 'Hej värld från CPU! \n ' ) ;

Säg hej << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

lämna tillbaka 0 ;
}

När du är klar trycker du på + X följt av 'Y' och för att spara 'hello.cu'-filen.

För att kompilera 'hello.cu' CUDA-programmet på Proxmox VE 8-behållaren, kör följande kommandon:

$ nvcc hello.cu -O Hallå

Nu kan du köra 'hej' CUDA-programmet på Proxmox VE 8-behållaren enligt följande:

$ . / Hallå

Om Proxmox VE 8-behållaren kan använda NVIDIA GPU för NVIDIA CUDA-acceleration, kommer programmet att skriva ut två rader som visas i följande skärmdump.

Om NVIDIA GPU:n inte är åtkomlig från Proxmox VE 8-behållaren, kommer programmet endast att skriva ut den första raden som är 'Hello world from the CPU!', inte den andra raden.

Slutsats

I den här artikeln visade vi hur du överför en NVIDIA GPU från Proxmox VE 8-värden till en Proxmox VE 8 LXC-behållare. Vi visade dig också hur du installerar samma version av NVIDIA GPU-drivrutinerna på Proxmox VE 8-behållaren som Proxmox VE-värden. Slutligen visade vi dig hur du installerar NVIDIA CUDA och NVIDIA cuDNN på en Ubuntu 22.04 LTS Proxmox VE 8-behållare och kompilerar och kör ett enkelt NVIDIA CUDA-program på Proxmox VE 8-behållaren.

Referenser: