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
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
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 : * rwmlxc.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å
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.runFö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
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 --versionSom 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 ~ / kodaNavigera till projektkatalogen '~/code' enligt följande:
$ CD `/ kodaSkapa en ny fil som 'hello.cu' i katalogen '~/code' i Proxmox VE 8-behållaren och öppna den med nanotextredigeraren:
$ nano hej.cuSkriv 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å
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.