Hvis du har en NVIDIA GPU installeret på din Proxmox VE-server, kan du videregive den til en Proxmox VE LXC-container og bruge den i containeren til CUDA/AI-acceleration (dvs. TensorFlow, PyTorch). Du kan også bruge NVIDIA GPU'en til medietranskodning, videostreaming osv. i en Proxmox VE LXC-beholder med den installerede Plex Media Server eller NextCloud (for eksempel).
I denne artikel viser vi dig, hvordan du overfører en NVIDIA GPU til en Proxmox VE 8 LXC-beholder, så du kan bruge den til CUDA/AI-acceleration, medietranskodning eller andre opgaver, der kræver en NVIDIA GPU.
Emne for indhold:
Installation af NVIDIA GPU-drivere på Proxmox VE 8
For at overføre en NVIDIA GPU til en Proxmox VE LXC-beholder skal du have NVIDIA GPU-driverne installeret på din Proxmox VE 8-server. Hvis du har brug for hjælp til at installere den seneste version af de officielle NVIDIA GPU-drivere på din Proxmox VE 8-server, læs denne artikel .
Sørg for, at NVIDIA GPU-kernemodulerne indlæses i Proxmox VE 8 automatisk
Når du har installeret NVIDIA GPU-driverne på din Proxmox VE 8-server, skal du sikre dig, at NVIDIA GPU-kernemodulerne indlæses automatisk ved opstart.
Først skal du oprette en ny fil som 'nvidia.conf' i mappen '/etc/modules-load.d/' og åbne den med nano-teksteditoren.
$ nano / etc / moduler-load.d / nvidia.conf
Tilføj følgende linjer og tryk
nvidia
nvidia_uvm
For at ændringerne træder i kraft, skal du opdatere filen 'initramfs' med følgende kommando:
$ update-initramfs -i
Af en eller anden grund opretter Proxmox VE 8 ikke de nødvendige NVIDIA GPU-enhedsfiler i mappen '/dev/'. Uden disse enhedsfiler vil Promox VE 8 LXC-beholderne ikke være i stand til at bruge NVIDIA GPU.
For at sikre, at Proxmox VE 8 opretter NVIDIA GPU-enhedsfilerne i '/dev/'-mappen ved opstart, skal du oprette en udev-regelfil '70-nvidia.rules' i '/etc/udev/rules.d/' mappe og åbn den med nano-teksteditoren som følger:
$ nano / etc / udev / regler.d / 70 -nvidia.regler
Indtast følgende linjer i filen '70-nvidia.rules', og tryk på
KERNE == 'nvidia' , RUN+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''
KERNE == 'nvidia_uvm' , RUN+= '/bin/bash -c '/usr/bin/nvidia-modtest -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*''
For at ændringerne træder i kraft, skal du genstarte din Proxmox VE 8-server som følger:
$ genstart
Når din Proxmox VE 8-server starter, skal NVIDIA-kernemodulerne indlæses automatisk, som du kan se på følgende skærmbillede:
$ lsmod | greb nvidia
De nødvendige NVIDIA-enhedsfiler skal også udfyldes i mappen '/dev' på din Proxmox VE 8-server. Bemærk gruppe-id'erne for NVIDIA-enhedsfilerne. Du skal tillade de CGroup ID'er på LXC-beholderen, hvor du vil passere gennem NVIDIA GPU'erne fra din Proxmox VE 8-server. I vores tilfælde er CGroup ID'erne 195, 237 og 226.
$ ls -lh / dev / nvidia *$ ls -lh / dev / dri
Oprettelse af en Proxmox VE 8 LXC-beholder til NVIDIA GPU Passthrough
Vi brugte en Ubuntu 22.04 LTS Proxmox VE 8 LXC-beholder i denne artikel til demonstrationen, da NVIDIA CUDA- og NVIDIA cuDNN-bibliotekerne er nemme at installere på Ubuntu 22.04 LTS fra Ubuntu-pakkelagrene, og det er lettere at teste, om NVIDIA CUDA-accelerationen virker . Hvis du vil, kan du også bruge andre Linux-distributioner. I så fald vil installationskommandoerne for NVIDIA CUDA og NVIDIA cuDNN variere. Sørg for at følge NVIDIA CUDA og NVIDIA cuDNN installationsinstruktionerne for din ønskede Linux-distribution.
Hvis du har brug for hjælp til at skabe en Proxmox VE 8 LXC container, læs denne artikel .
Konfiguration af en LXC-beholder til NVIDIA GPU Passthrough på Promox VE 8
For at konfigurere en LXC container (container 102, lad os sige) til NVIDIA GPU passthrough, skal du åbne LXC container konfigurationsfilen fra Proxmox VE shell med nano tekst editoren som følger:
$ nano / etc / pve / lxc / 102 .conf
Indtast følgende linjer i slutningen af LXC-beholderens 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 binde ,valgfri, skab = fil
lxc.mount.entry: / dev / nvidiactl dev / nvidiactl ingen binde ,valgfri, skab = fil
lxc.mount.entry: / dev / nvidia-modeset dev / nvidia-modeset ingen binde ,valgfri, skab = fil
lxc.mount.entry: / dev / nvidia-uvm dev / nvidia-uvm ingen binde ,valgfri, skab = fil
lxc.mount.entry: / dev / nvidia-uvm-tools dev / nvidia-uvm-værktøjer ingen binde ,valgfri, skab = fil
lxc.mount.entry: / dev / dri dev / dri ingen binde ,valgfri, skab = du
Sørg for at erstatte CGroup-id'erne i 'lxc.cgroup.devices.allow'-linjerne i LXC-beholderens konfigurationsfil. Når du er færdig, skal du trykke på
Start nu LXC-beholderen fra Proxmox VE 8-dashboardet.
Hvis NVIDIA GPU-passthrough lykkes, bør LXC-beholderen starte uden fejl, og du bør se NVIDIA-enhedsfilerne i '/dev'-mappen i beholderen.
$ ls -lh / dev / nvidia *$ ls -lh / dev / dri
Installation af NVIDIA GPU-drivere på Proxmox VE 8 LXC-beholderen
Vi bruger en Ubuntu 22.04 LTS LXC container på vores Proxmox VE 8 server til demonstration. Hvis du bruger en anden Linux-distribution på LXC-containeren, vil dine kommandoer afvige lidt fra vores. Så sørg for at justere kommandoerne afhængigt af den Linux-distribution, du bruger på containeren.
Du kan finde NVIDIA GPU-driverversionen, som du har installeret på din Proxmox VE 8-server med 'nvidia-smi'-kommandoen. Som du kan se, har vi NVIDIA GPU-drivere version 535.146.02 installeret på vores Proxmox VE 8-server. Så vi skal også installere NVIDIA GPU-drivere version 535.146.02 på vores LXC-beholder.
$ nvidia-smi
Først skal du installere CURL på LXC-beholderen som følger:
$ passende opdatering && passende installere krølle -og
CURL skal installeres på LXC-beholderen.
For at installere NVIDIA GPU-drivere version 535.146.02 (lad os sige), eksporter NVIDIA_VERSION-miljøvariablen og kør CURL-kommandoen (på beholderen) for at downloade den nødvendige version af NVIDIA GPU-driverens installationsfil.
$ eksport NVIDIA_VERSION = '535.146.02'$ krølle -O 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .løb'
Den korrekte version af NVIDIA GPU-driverens installationsfil skal downloades på LXC-beholderen, som du kan se på følgende skærmbillede:
Tilføj nu en eksekverbar tilladelse til NVIDIA GPU-driverens installationsfil på beholderen som følger:
$ chmod +x NVIDIA-Linux-x86_64-535.146.02.runFor at installere NVIDIA GPU-driverne på beholderen skal du køre installationsfilen til NVIDIA GPU-drivere med '–no-kernel-module' mulighed som følger:
$ . / NVIDIA-Linux-x86_64-535.146.02.run --no-kernel-modul Når du ser denne mulighed, skal du vælge 'OK' og trykke på
Vælg 'OK' og tryk på
Vælg 'Ja', og tryk på
Vælg 'OK' og tryk på
NVIDIA GPU-driverne er ved at blive installeret på LXC-beholderen. Det tager et par sekunder at fuldføre.
Når du ser denne prompt, skal du vælge 'Ja' og trykke på
Vælg 'OK' og tryk på
For at bekræfte, om NVIDIA GPU-driverne er installeret og fungerer, skal du køre kommandoen 'nvidia-smi' på LXC-beholderen. Som du kan se, er NVIDIA GPU-driveren version 535.146.02 (samme version som installeret på Proxmox VE 8-serveren) installeret på LXC-beholderen, og den registrerede vores NVIDIA RTX 4070 GPU korrekt.
$ nvidia-smi
Installation af NVIDIA CUDA og cuDNN på Proxmox VE 8 LXC Container
Vi bruger en Ubuntu 22.04 LTS LXC container på vores Proxmox VE 8 server til demonstration. Hvis du bruger en anden Linux-distribution på LXC-containeren, vil dine kommandoer afvige lidt fra vores. Så sørg for at justere kommandoerne afhængigt af den Linux-distribution, du bruger på containeren.
For at installere NVIDIA CUDA og cuDNN på Ubuntu 22.04 LTS Proxmox VE 8-beholderen skal du køre følgende kommando på beholderen:
$ passende installere build-essentiel nvidia-cuda-værktøjssæt nvidia-cudnn For at bekræfte installationen skal du trykke på 'Y' og derefter trykke på
De nødvendige pakker downloades og installeres. Det tager et stykke tid at fuldføre.
Når du ser dette vindue, skal du vælge 'OK' og trykke på
Vælg 'Jeg accepterer', og tryk på
Installationen bør fortsætte.
Installationsprogrammet downloader NVIDIA cuDNN-biblioteksarkivet fra NVIDIA. Det er en stor fil, så det tager lang tid at færdiggøre.
Når NVIDIA cuDNN-biblioteksarkivet er downloadet, skal installationen fortsætte som normalt.
På dette tidspunkt skal NVIDIA CUDA og cuDNN være installeret på Ubuntu 22.04 LTS Proxmox VE 8 LXC-beholderen.
Kontrollerer, om NVIDIA CUDA-accelerationen virker på Proxmox VE 8 LXC-beholderen
For at kontrollere, om NVIDIA CUDA er installeret korrekt, skal du kontrollere, om 'nvcc'-kommandoen er tilgængelig på Proxmox VE 8-beholderen som følger:
$ nvcc --versionSom du kan se, har vi NVIDIA CUDA 11.5 installeret på vores Proxmox VE 8 container.
Lad os nu skrive, kompilere og køre et simpelt CUDA C-program og se, om alt fungerer som forventet.
Først skal du oprette en '~/code'-projektmappe på Proxmox VE 8-beholderen for at holde filerne organiseret.
$ mkdir ~ / kodeNaviger til '~/code' projektbiblioteket som følger:
$ cd `/ kodeOpret en ny fil som 'hello.cu' i mappen '~/code' i Proxmox VE 8-beholderen, og åbn den med nano-teksteditoren:
$ nano hej.cuIndtast følgende kodelinjer i 'hello.cu'-filen:
#include__global__ void sig Hej ( ) {
printf ( 'Hej verden fra GPU'en! \n ' ) ;
}
int main ( ) {
printf ( 'Hej verden fra CPU'en! \n ' ) ;
sig hej << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;
Vend tilbage 0 ;
}
Når du er færdig, skal du trykke på
For at kompilere 'hello.cu' CUDA-programmet på Proxmox VE 8-beholderen, skal du køre følgende kommandoer:
$ nvcc hello.cu -O HejNu kan du køre 'hej' CUDA-programmet på Proxmox VE 8-beholderen som følger:
$ . / HejHvis Proxmox VE 8-beholderen kan bruge NVIDIA GPU'en til NVIDIA CUDA-acceleration, vil programmet udskrive to linjer som vist på det følgende skærmbillede.
Hvis NVIDIA GPU'en ikke er tilgængelig fra Proxmox VE 8-beholderen, vil programmet kun udskrive den første linje, som er 'Hello world from the CPU!', ikke den anden linje.
Konklusion
I denne artikel viste vi dig, hvordan du overfører en NVIDIA GPU fra Proxmox VE 8-værten til en Proxmox VE 8 LXC-beholder. Vi viste dig også, hvordan du installerer den samme version af NVIDIA GPU-driverne på Proxmox VE 8-beholderen som Proxmox VE-værten. Til sidst viste vi dig, hvordan du installerer NVIDIA CUDA og NVIDIA cuDNN på en Ubuntu 22.04 LTS Proxmox VE 8-beholder og kompilerer og kører et simpelt NVIDIA CUDA-program på Proxmox VE 8-beholderen.