Kako prenesti NVIDIA GPU v vsebnike Proxmox VE 8 za pospeševanje CUDA/AI in prekodiranje medijev

Kako Prenesti Nvidia Gpu V Vsebnike Proxmox Ve 8 Za Pospesevanje Cuda Ai In Prekodiranje Medijev



Če imate na strežniku Proxmox VE nameščen NVIDIA GPE, ga lahko posredujete vsebniku Proxmox VE LXC in ga uporabite v vsebniku za pospeševanje CUDA/AI (tj. TensorFlow, PyTorch). GPE NVIDIA lahko uporabite tudi za prekodiranje medijev, pretakanje videa itd. v vsebniku Proxmox VE LXC z nameščenim Plex Media Server ali NextCloud (na primer).

V tem članku vam bomo pokazali, kako prenesti grafični procesor NVIDIA v vsebnik Proxmox VE 8 LXC, da ga lahko uporabite za pospeševanje CUDA/AI, prekodiranje medijev ali druga opravila, ki zahtevajo grafični procesor NVIDIA.







Tema vsebine:

Namestitev gonilnikov NVIDIA GPU na Proxmox VE 8

Če želite prenesti NVIDIA GPE v vsebnik Proxmox VE LXC, morate imeti nameščene gonilnike NVIDIA GPU na strežniku Proxmox VE 8. Če potrebujete kakršno koli pomoč pri namestitvi najnovejše različice uradnih gonilnikov NVIDIA GPU na vaš strežnik Proxmox VE 8, preberi ta članek .



Prepričanje, da so moduli jedra NVIDIA GPU samodejno naloženi v Proxmox VE 8

Ko imate na strežniku Proxmox VE 8 nameščene gonilnike NVIDIA GPU, se morate prepričati, da se moduli jedra NVIDIA GPU samodejno naložijo ob zagonu.



Najprej ustvarite novo datoteko, kot je »nvidia.conf« v imeniku »/etc/modules-load.d/« in jo odprite z nano urejevalnikom besedila.





$ nano / itd / moduli-load.d / nvidia.conf

Dodajte naslednje vrstice in pritisnite + X sledi 'Y' in da shranite datoteko »nvidia.conf«:



nvidia

nvidia_uvm

Da bodo spremembe začele veljati, posodobite datoteko »initramfs« z naslednjim ukazom:

$ posodobitev-initramfs -in

Iz nekega razloga Proxmox VE 8 ne ustvari zahtevanih datotek naprave NVIDIA GPU v imeniku »/dev/«. Brez teh datotek naprave vsebniki Promox VE 8 LXC ne bodo mogli uporabljati GPE NVIDIA.

Če želite zagotoviti, da Proxmox VE 8 ob zagonu ustvari datoteke naprave NVIDIA GPE v imeniku »/dev/«, ustvarite datoteko pravil udev »70-nvidia.rules« v »/etc/udev/rules.d/« imenik in ga odprite z nano urejevalnikom besedila, kot sledi:

$ nano / itd / udev / pravila.d / 70 -nvidia.rules

V datoteko »70-nvidia.rules« vnesite naslednje vrstice in pritisnite + X sledi 'Y' in da shranite datoteko:

# ustvari potrebne datoteke naprave NVIDIA v /dev/*

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

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

Da bodo spremembe začele veljati, znova zaženite strežnik Proxmox VE 8, kot sledi:

$ ponovni zagon

Ko se vaš strežnik Proxmox VE 8 zažene, bi se morali moduli jedra NVIDIA samodejno naložiti, kot lahko vidite na naslednjem posnetku zaslona:

$ lsmod | prijem nvidia

Zahtevane datoteke naprave NVIDIA je treba vnesti tudi v imenik »/dev« vašega strežnika Proxmox VE 8. Upoštevajte ID-je CGroup datotek naprav NVIDIA. Te ID-je CGroup morate dovoliti v vsebniku LXC, kjer želite prehajati skozi grafične procesorje NVIDIA iz vašega strežnika Proxmox VE 8. V našem primeru so ID-ji CGroup 195, 237 in 226.

$ ls -lh / razv / nvidia *

$ ls -lh / razv / dri

Ustvarjanje vsebnika Proxmox VE 8 LXC za NVIDIA GPU Passthrough

V tem članku smo za predstavitev uporabili vsebnik Ubuntu 22.04 LTS Proxmox VE 8 LXC, saj je knjižnici NVIDIA CUDA in NVIDIA cuDNN enostavno namestiti v Ubuntu 22.04 LTS iz repozitorijev paketov Ubuntu in je lažje preizkusiti, ali pospešek NVIDIA CUDA deluje . Če želite, lahko uporabite tudi druge distribucije Linuxa. V tem primeru se namestitvena ukaza NVIDIA CUDA in NVIDIA cuDNN razlikujeta. Upoštevajte navodila za namestitev NVIDIA CUDA in NVIDIA cuDNN za želeno distribucijo Linuxa.

Če potrebujete pomoč pri ustvarjanju vsebnika Proxmox VE 8 LXC, preberi ta članek .

Konfiguriranje vsebnika LXC za NVIDIA GPU Passthrough na Promox VE 8

Če želite konfigurirati vsebnik LXC (recimo vsebnik 102) za prehod GPU NVIDIA, odprite konfiguracijsko datoteko vsebnika LXC iz lupine Proxmox VE z urejevalnikom nano besedila, kot sledi:

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

Na koncu konfiguracijske datoteke vsebnika LXC vnesite naslednje vrstice:

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

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

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

lxc.mount.entry: / razv / nvidia0          dev / nvidia0          nič vezati ,neobvezno, ustvariti = mapa

lxc.mount.entry: / razv / nvidiactl        dev / nvidiactl        brez vezati ,neobvezno, ustvariti = mapa

lxc.mount.entry: / razv / nvidia-modeset   dev / nvidia-modeset   brez vezati ,neobvezno, ustvariti = mapa

lxc.mount.entry: / razv / nvidia-uvm       dev / nvidia-uvm       brez vezati ,neobvezno, ustvariti = mapa

lxc.mount.entry: / razv / nvidia-uvm-tools dev / nvidia-uvm-orodja brez vezati ,neobvezno, ustvariti = mapa

lxc.mount.entry: / razv / dri              dev / dri              nobena vezati ,neobvezno, ustvariti = ti

Zamenjajte ID-je CGroup v vrsticah »lxc.cgroup.devices.allow« konfiguracijske datoteke vsebnika LXC. Ko končate, pritisnite + X sledi »Y« in da shranite konfiguracijsko datoteko vsebnika LXC.

Zdaj zaženite posodo LXC z nadzorne plošče Proxmox VE 8.

Če je prehod GPU NVIDIA uspešen, bi se moral vsebnik LXC zagnati brez kakršne koli napake in v imeniku »/dev« vsebnika bi morali videti datoteke naprave NVIDIA.

$ ls -lh / razv / nvidia *

$ ls -lh / razv / dri

Namestitev gonilnikov NVIDIA GPU na vsebnik Proxmox VE 8 LXC

Za predstavitev uporabljamo vsebnik Ubuntu 22.04 LTS LXC na našem strežniku Proxmox VE 8. Če uporabljate drugo distribucijo Linuxa na vsebniku LXC, se bodo vaši ukazi nekoliko razlikovali od naših. Zato se prepričajte, da prilagodite ukaze glede na distribucijo Linuxa, ki jo uporabljate v vsebniku.

Različico gonilnikov NVIDIA GPU, ki ste jih namestili na strežnik Proxmox VE 8, lahko najdete z ukazom »nvidia-smi«. Kot lahko vidite, imamo na našem strežniku Proxmox VE 8 nameščene gonilnike NVIDIA GPU različice 535.146.02. Torej moramo namestiti gonilnike NVIDIA GPE različice 535.146.02 tudi v naš vsebnik LXC.

$ nvidia-smi

Najprej namestite CURL na vsebnik LXC, kot sledi:

$ primerna posodobitev && apt namestite curl -in

CURL je treba namestiti na posodo LXC.

Če želite namestiti gonilnike NVIDIA GPU različice 535.146.02 (recimo), izvozite spremenljivko okolja NVIDIA_VERSION in zaženite ukaz CURL (na vsebniku), da prenesete zahtevano različico namestitvene datoteke gonilnikov NVIDIA GPU.

$ izvoz NVIDIA_VERSION = '535.146.02'

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

Pravilno različico namestitvene datoteke gonilnikov NVIDIA GPU je treba prenesti v vsebnik LXC, kot lahko vidite na naslednjem posnetku zaslona:

Zdaj dodajte izvršljivo dovoljenje v namestitveno datoteko gonilnikov NVIDIA GPU v vsebniku, kot sledi:

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

Če želite namestiti gonilnike NVIDIA GPU v vsebnik, zaženite namestitveno datoteko gonilnikov NVIDIA GPU z »–no-kernel-module« možnost kot sledi:

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

Ko vidite to možnost, izberite »V redu« in pritisnite .

Izberite “OK” in pritisnite .

Izberite 'Da' in pritisnite .

Izberite “OK” in pritisnite .

Gonilniki GPU NVIDIA se nameščajo v posodo LXC. Za dokončanje traja nekaj sekund.

Ko vidite ta poziv, izberite »Da« in pritisnite .

Izberite “OK” in pritisnite . Gonilniki GPU NVIDIA morajo biti nameščeni na vsebniku LXC.

Če želite preveriti, ali so gonilniki NVIDIA GPE nameščeni in delujejo, zaženite ukaz »nvidia-smi« v vsebniku LXC. Kot lahko vidite, je različica gonilnika NVIDIA GPU 535.146.02 (enaka različica, kot je nameščena na strežniku Proxmox VE 8) nameščena na vsebniku LXC in je pravilno zaznala našo GPE NVIDIA RTX 4070.

$ nvidia-smi

Namestitev NVIDIA CUDA in cuDNN na vsebnik Proxmox VE 8 LXC

Za predstavitev uporabljamo vsebnik Ubuntu 22.04 LTS LXC na našem strežniku Proxmox VE 8. Če uporabljate drugo distribucijo Linuxa na vsebniku LXC, se bodo vaši ukazi nekoliko razlikovali od naših. Zato se prepričajte, da prilagodite ukaze glede na distribucijo Linuxa, ki jo uporabljate v vsebniku.

Če želite namestiti NVIDIA CUDA in cuDNN v vsebnik Ubuntu 22.04 LTS Proxmox VE 8, zaženite naslednji ukaz v vsebniku:

$ apt namestite build-essential nvidia-cuda-toolkit nvidia-cudnn

Za potrditev namestitve pritisnite “Y” in nato pritisnite .

Zahtevani paketi se prenašajo in nameščajo. Za dokončanje traja nekaj časa.

Ko vidite to okno, izberite »V redu« in pritisnite .

Izberite 'Strinjam se' in pritisnite .

Namestitev se mora nadaljevati.

Namestitveni program prenaša arhiv knjižnice NVIDIA cuDNN iz NVIDIA. Datoteka je velika, zato traja dolgo, da se dokonča.

Ko je arhiv knjižnice NVIDIA cuDNN prenesen, bi se morala namestitev nadaljevati kot običajno.

Na tej točki bi morala biti NVIDIA CUDA in cuDNN nameščena na vsebniku Ubuntu 22.04 LTS Proxmox VE 8 LXC.

Preverjanje, ali pospeševanje NVIDIA CUDA deluje na vsebniku Proxmox VE 8 LXC

Če želite preveriti, ali je NVIDIA CUDA pravilno nameščena, preverite, ali je ukaz »nvcc« na voljo v vsebniku Proxmox VE 8, kot sledi:

$ nvcc --različica

Kot lahko vidite, imamo NVIDIA CUDA 11.5 nameščeno na našem vsebniku Proxmox VE 8.

Zdaj pa napišimo, prevedimo in zaženimo preprost program CUDA C in preverimo, ali vse deluje po pričakovanjih.

Najprej ustvarite imenik projekta »~/code« v vsebniku Proxmox VE 8, da bodo datoteke organizirane.

$ mkdir ~ / Koda

Pomaknite se do imenika projekta »~/code«, kot sledi:

$ cd `/ Koda

Ustvarite novo datoteko, kot je »hello.cu« v imeniku »~/code« vsebnika Proxmox VE 8 in jo odprite z nano urejevalnikom besedila:

$ nano pozdravljeni.cu

V datoteko »hello.cu« vnesite naslednje vrstice kode:

#include

__global__ void reciHello ( ) {
printf ( 'Pozdravljen svet iz GPU-ja! \n ' ) ;
}

int main ( ) {
printf ( 'Pozdravljen svet iz procesorja! \n ' ) ;

reci živijo << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

vrnitev 0 ;
}

Ko končate, pritisnite + X sledi 'Y' in da shranite datoteko »hello.cu«.

Če želite prevesti program CUDA »hello.cu« v vsebniku Proxmox VE 8, zaženite naslednje ukaze:

$ nvcc pozdravljeni.cu -O zdravo

Zdaj lahko zaženete program CUDA »zdravo« na vsebniku Proxmox VE 8, kot sledi:

$ . / zdravo

Če lahko vsebnik Proxmox VE 8 uporablja grafični procesor NVIDIA za pospeševanje NVIDIA CUDA, bo program natisnil dve vrstici, kot je prikazano na naslednjem posnetku zaslona.

Če GPE NVIDIA ni dostopen iz vsebnika Proxmox VE 8, bo program natisnil samo prvo vrstico, ki je »Hello world from the CPU!«, ne druge vrstice.

Zaključek

V tem članku smo vam pokazali, kako prenesti grafični procesor NVIDIA iz gostitelja Proxmox VE 8 v vsebnik Proxmox VE 8 LXC. Pokazali smo vam tudi, kako namestiti isto različico gonilnikov NVIDIA GPU na posodo Proxmox VE 8 kot gostitelja Proxmox VE. Na koncu smo vam pokazali, kako namestiti NVIDIA CUDA in NVIDIA cuDNN na vsebnik Ubuntu 22.04 LTS Proxmox VE 8 ter prevesti in zagnati preprost program NVIDIA CUDA na vsebniku Proxmox VE 8.

Reference: