Ako prejsť GPU NVIDIA do kontajnerov Proxmox VE 8 pre akceleráciu CUDA/AI a prekódovanie médií

Ako Prejst Gpu Nvidia Do Kontajnerov Proxmox Ve 8 Pre Akceleraciu Cuda Ai A Prekodovanie Medii



Ak máte na svojom serveri Proxmox VE nainštalovaný GPU NVIDIA, môžete ho odovzdať kontajneru Proxmox VE LXC a použiť ho v kontajneri na akceleráciu CUDA/AI (t. j. TensorFlow, PyTorch). GPU NVIDIA môžete použiť aj na prekódovanie médií, streamovanie videa atď. v kontajneri Proxmox VE LXC s nainštalovaným serverom Plex Media Server alebo NextCloud (napríklad).

V tomto článku vám ukážeme, ako prejsť GPU NVIDIA do kontajnera Proxmox VE 8 LXC, aby ste ho mohli použiť na akceleráciu CUDA/AI, prekódovanie médií alebo iné úlohy, ktoré vyžadujú GPU NVIDIA.







Téma obsahu:

Inštalácia ovládačov GPU NVIDIA na Proxmox VE 8

Ak chcete preniesť GPU NVIDIA do kontajnera Proxmox VE LXC, musíte mať na serveri Proxmox VE 8 nainštalované ovládače GPU NVIDIA. Ak potrebujete pomoc pri inštalácii najnovšej verzie oficiálnych ovládačov GPU NVIDIA na server Proxmox VE 8, prečítajte si tento článok .



Uistite sa, že moduly jadra NVIDIA GPU sa načítajú do Proxmox VE 8 automaticky

Po nainštalovaní ovládačov NVIDIA GPU na server Proxmox VE 8 sa musíte uistiť, že moduly jadra NVIDIA GPU sa načítajú automaticky pri zavádzaní systému.



Najprv vytvorte nový súbor ako „nvidia.conf“ v adresári „/etc/modules-load.d/“ a otvorte ho v textovom editore nano.





$ nano / atď / moduly-zaťaženie.d / nvidia.conf

Pridajte nasledujúce riadky a stlačte + X nasleduje „Y“ a na uloženie súboru „nvidia.conf“:



nvidia

nvidia_uvm

Aby sa zmeny prejavili, aktualizujte súbor „initramfs“ nasledujúcim príkazom:

$ update-initramfs -v

Z nejakého dôvodu Proxmox VE 8 nevytvára požadované súbory zariadenia NVIDIA GPU v adresári „/dev/“. Bez týchto súborov zariadenia nebudú kontajnery Promox VE 8 LXC môcť používať GPU NVIDIA.

Aby ste sa uistili, že Proxmox VE 8 vytvorí súbory zariadenia NVIDIA GPU v adresári „/dev/“ v čase zavádzania, vytvorte súbor pravidiel udev „70-nvidia.rules“ v súbore „/etc/udev/rules.d/“. adresár a otvorte ho pomocou textového editora nano takto:

$ nano / atď / udev / pravidlá.d / 70 -nvidia.pravidlá

Zadajte nasledujúce riadky do súboru „70-nvidia.rules“ a stlačte + X nasleduje „Y“ a na uloženie súboru:

# vytvorte potrebné súbory zariadenia NVIDIA v /dev/*

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

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

Aby sa zmeny prejavili, reštartujte server Proxmox VE 8 takto:

$ reštartovať

Po spustení servera Proxmox VE 8 by sa moduly jadra NVIDIA mali načítať automaticky, ako môžete vidieť na nasledujúcom obrázku:

$ lsmod | priľnavosť nvidia

Požadované súbory zariadenia NVIDIA by sa mali nachádzať aj v adresári „/dev“ vášho servera Proxmox VE 8. Všimnite si ID CGroup súborov zariadenia NVIDIA. Tieto ID CGroup musíte povoliť v kontajneri LXC, kde chcete prechádzať GPU NVIDIA zo servera Proxmox VE 8. V našom prípade sú ID CGroup 195, 237 a 226.

$ ls -lh / dev / nvidia *

$ ls -lh / dev / dri

Vytvorenie kontajnera Proxmox VE 8 LXC pre NVIDIA GPU Passthrough

V tomto článku sme na demonštráciu použili kontajner Ubuntu 22.04 LTS Proxmox VE 8 LXC, pretože knižnice NVIDIA CUDA a NVIDIA cuDNN sa ľahko inštalujú na Ubuntu 22.04 LTS z repozitárov balíkov Ubuntu a je jednoduchšie otestovať, či NVIDIA acceleration CU funguje. . Ak chcete, môžete použiť aj iné distribúcie Linuxu. V takom prípade sa inštalačné príkazy NVIDIA CUDA a NVIDIA cuDNN budú líšiť. Uistite sa, že postupujete podľa pokynov na inštaláciu NVIDIA CUDA a NVIDIA cuDNN pre požadovanú distribúciu Linuxu.

Ak potrebujete pomoc pri vytváraní kontajnera Proxmox VE 8 LXC, prečítajte si tento článok .

Konfigurácia LXC kontajnera pre NVIDIA GPU Passthrough na Promox VE 8

Ak chcete nakonfigurovať kontajner LXC (povedzme kontajner 102) pre priechod GPU NVIDIA, otvorte konfiguračný súbor kontajnera LXC z prostredia Proxmox VE pomocou textového editora nano takto:

$ nano / atď / pve / lxc / 102 .conf

Napíšte nasledujúce riadky na koniec konfiguračného súboru kontajnera LXC:

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          žiadne viazať ,voliteľné, vytvoriť = súbor

lxc.mount.entry: / dev / nvidiactl        dev / nvidiactl        žiadne viazať ,voliteľné, vytvoriť = súbor

lxc.mount.entry: / dev / nvidia-modeset   dev / nvidia-modeset   žiadne viazať ,voliteľné, vytvoriť = súbor

lxc.mount.entry: / dev / nvidia-uvm       dev / nvidia-uvm       žiadne viazať ,voliteľné, vytvoriť = súbor

lxc.mount.entry: / dev / nvidia-uvm-tools dev / nvidia-uvm-tools žiadne viazať ,voliteľné, vytvoriť = súbor

lxc.mount.entry: / dev / dri              vývoj / dri              žiadne viazať ,voliteľné, vytvoriť = vy

Nezabudnite nahradiť identifikátory CGroup v riadkoch „lxc.cgroup.devices.allow“ konfiguračného súboru kontajnera LXC. Po dokončení stlačte + X nasleduje „Y“ a na uloženie konfiguračného súboru kontajnera LXC.

Teraz spustite kontajner LXC z prístrojovej dosky Proxmox VE 8.

Ak je prechod GPU NVIDIA úspešný, kontajner LXC by sa mal spustiť bez chyby a mali by ste vidieť súbory zariadenia NVIDIA v adresári „/dev“ kontajnera.

$ ls -lh / dev / nvidia *

$ ls -lh / dev / dri

Inštalácia ovládačov GPU NVIDIA na kontajner Proxmox VE 8 LXC

Na ukážku používame kontajner Ubuntu 22.04 LTS LXC na našom serveri Proxmox VE 8. Ak v kontajneri LXC používate inú distribúciu Linuxu, vaše príkazy sa budú mierne líšiť od našich. Nezabudnite teda upraviť príkazy v závislosti od distribúcie Linuxu, ktorú v kontajneri používate.

Verziu ovládačov GPU NVIDIA, ktorú ste nainštalovali na server Proxmox VE 8, nájdete pomocou príkazu „nvidia-smi“. Ako vidíte, na našom serveri Proxmox VE 8 máme nainštalované ovládače GPU NVIDIA verzie 535.146.02. Takže musíme nainštalovať ovládače GPU NVIDIA verzie 535.146.02 aj do nášho kontajnera LXC.

$ nvidia-smi

Najprv nainštalujte CURL na kontajner LXC takto:

$ apt update && apt Inštalácia curl -a

CURL by mal byť nainštalovaný na kontajneri LXC.

Ak chcete nainštalovať ovládače GPU NVIDIA verzie 535.146.02 (povedzme), exportujte premennú prostredia NVIDIA_VERSION a spustite príkaz CURL (na kontajneri), aby ste stiahli požadovanú verziu inštalačného súboru ovládačov GPU NVIDIA.

$ export 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'

Správna verzia inštalačného súboru ovládačov NVIDIA GPU by sa mala stiahnuť do kontajnera LXC, ako môžete vidieť na nasledujúcej snímke obrazovky:

Teraz pridajte spustiteľné povolenie do inštalačného súboru ovládačov NVIDIA GPU v kontajneri takto:

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

Ak chcete nainštalovať ovládače GPU NVIDIA do kontajnera, spustite inštalačný súbor ovládačov GPU NVIDIA s modulom „–no-kernel-module“ možnosť takto:

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

Keď uvidíte túto možnosť, vyberte „OK“ a stlačte .

Zvoľte „OK“ a stlačte .

Vyberte „Áno“ a stlačte .

Zvoľte „OK“ a stlačte .

Ovládače GPU NVIDIA sa inštalujú do kontajnera LXC. Dokončenie trvá niekoľko sekúnd.

Keď uvidíte túto výzvu, vyberte „Áno“ a stlačte .

Zvoľte „OK“ a stlačte . Ovládače GPU NVIDIA by mali byť nainštalované na kontajneri LXC.

Ak chcete overiť, či sú ovládače GPU NVIDIA nainštalované a fungujú, spustite príkaz „nvidia-smi“ v kontajneri LXC. Ako vidíte, verzia ovládača NVIDIA GPU 535.146.02 (rovnaká verzia, aká je nainštalovaná na serveri Proxmox VE 8) je nainštalovaná v kontajneri LXC a správne rozpoznala náš GPU NVIDIA RTX 4070.

$ nvidia-smi

Inštalácia NVIDIA CUDA a cuDNN na kontajner Proxmox VE 8 LXC

Na ukážku používame kontajner Ubuntu 22.04 LTS LXC na našom serveri Proxmox VE 8. Ak v kontajneri LXC používate inú distribúciu Linuxu, vaše príkazy sa budú mierne líšiť od našich. Nezabudnite teda upraviť príkazy v závislosti od distribúcie Linuxu, ktorú v kontajneri používate.

Ak chcete nainštalovať NVIDIA CUDA a cuDNN do kontajnera Ubuntu 22.04 LTS Proxmox VE 8, spustite na kontajneri nasledujúci príkaz:

$ apt Inštalácia build-essential nvidia-cuda-toolkit nvidia-cudnn

Na potvrdenie inštalácie stlačte „Y“ a potom stlačte .

Požadované balíky sa sťahujú a inštalujú. Dokončenie chvíľu trvá.

Keď uvidíte toto okno, vyberte „OK“ a stlačte .

Vyberte „Súhlasím“ a stlačte .

Inštalácia by mala pokračovať.

Inštalátor sťahuje archív knižnice NVIDIA cuDNN od spoločnosti NVIDIA. Je to veľký súbor, takže jeho dokončenie trvá dlho.

Po stiahnutí archívu knižnice NVIDIA cuDNN by inštalácia mala pokračovať ako zvyčajne.

V tomto bode by mali byť NVIDIA CUDA a cuDNN nainštalované na kontajneri Ubuntu 22.04 LTS Proxmox VE 8 LXC.

Kontrola, či akcelerácia NVIDIA CUDA funguje na kontajneri Proxmox VE 8 LXC

Ak chcete overiť, či je NVIDIA CUDA nainštalovaná správne, skontrolujte, či je v kontajneri Proxmox VE 8 k dispozícii príkaz „nvcc“ takto:

$ nvcc --verzia

Ako môžete vidieť, na našom kontajneri Proxmox VE 8 máme nainštalovanú NVIDIA CUDA 11.5.

Teraz napíšme, skompilujeme a spustíme jednoduchý program CUDA C a uvidíme, či všetko funguje podľa očakávania.

Najprv vytvorte projektový adresár „~/code“ v kontajneri Proxmox VE 8, aby ste mali súbory usporiadané.

$ mkdir ~ / kód

Prejdite do adresára projektu „~/code“ takto:

$ cd `/ kód

Vytvorte nový súbor ako „hello.cu“ v adresári „~/code“ kontajnera Proxmox VE 8 a otvorte ho pomocou textového editora nano:

$ nano ahoj.cu

Do súboru „hello.cu“ zadajte nasledujúce riadky kódu:

#include

__global__ void pozdrav ( ) {
printf ( „Ahoj svet z GPU! \n ' ) ;
}

int main ( ) {
printf ( „Ahoj svet z CPU! \n ' ) ;

povedz ahoj << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

vrátiť 0 ;
}

Po dokončení stlačte + X nasleduje „Y“ a uložte súbor „hello.cu“.

Ak chcete skompilovať program CUDA „hello.cu“ na kontajneri Proxmox VE 8, spustite nasledujúce príkazy:

$ nvcc ahoj.cu -O Ahoj

Teraz môžete spustiť program CUDA „ahoj“ na kontajneri Proxmox VE 8 takto:

$ . / Ahoj

Ak kontajner Proxmox VE 8 môže použiť GPU NVIDIA na zrýchlenie NVIDIA CUDA, program vytlačí dva riadky, ako je znázornené na nasledujúcom obrázku.

Ak GPU NVIDIA nie je prístupné z kontajnera Proxmox VE 8, program vytlačí iba prvý riadok, ktorý je „Ahoj svet z CPU!“, nie druhý riadok.

Záver

V tomto článku sme vám ukázali, ako prejsť GPU NVIDIA z hostiteľa Proxmox VE 8 do kontajnera Proxmox VE 8 LXC. Tiež sme vám ukázali, ako nainštalovať rovnakú verziu ovládačov GPU NVIDIA do kontajnera Proxmox VE 8 ako hostiteľa Proxmox VE. Nakoniec sme vám ukázali, ako nainštalovať NVIDIA CUDA a NVIDIA cuDNN na kontajner Ubuntu 22.04 LTS Proxmox VE 8 a skompilovať a spustiť jednoduchý program NVIDIA CUDA na kontajneri Proxmox VE 8.

Referencie: