Sådan overføres NVIDIA GPU til Proxmox VE 8-beholdere til CUDA/AI-acceleration og medietranskodning

Sadan Overfores Nvidia Gpu Til Proxmox Ve 8 Beholdere Til Cuda Ai Acceleration Og Medietranskodning



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 + x efterfulgt af 'Y' og for at gemme filen 'nvidia.conf':



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å + x efterfulgt af 'Y' og for at gemme filen:

# opret nødvendige NVIDIA-enhedsfiler i /dev/*

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 : * rwm

lxc.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å + x efterfulgt af 'Y' og for at gemme LXC-beholderens konfigurationsfil.

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.run

For 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å . NVIDIA GPU-driverne skal installeres på LXC-beholderen.

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 --version

Som 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 ~ / kode

Naviger til '~/code' projektbiblioteket som følger:

$ cd `/ kode

Opret en ny fil som 'hello.cu' i mappen '~/code' i Proxmox VE 8-beholderen, og åbn den med nano-teksteditoren:

$ nano hej.cu

Indtast 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å + x efterfulgt af 'Y' og for at gemme 'hello.cu'-filen.

For at kompilere 'hello.cu' CUDA-programmet på Proxmox VE 8-beholderen, skal du køre følgende kommandoer:

$ nvcc hello.cu -O Hej

Nu kan du køre 'hej' CUDA-programmet på Proxmox VE 8-beholderen som følger:

$ . / Hej

Hvis 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.

Referencer: