Jak projít GPU NVIDIA do kontejnerů Proxmox VE 8 pro akceleraci CUDA/AI a překódování médií

Jak Projit Gpu Nvidia Do Kontejneru Proxmox Ve 8 Pro Akceleraci Cuda Ai A Prekodovani Medii



Pokud máte na svém serveru Proxmox VE nainstalovaný GPU NVIDIA, můžete jej předat kontejneru Proxmox VE LXC a použít jej v kontejneru pro akceleraci CUDA/AI (tj. TensorFlow, PyTorch). GPU NVIDIA můžete také použít pro překódování médií, streamování videa atd. v kontejneru Proxmox VE LXC s nainstalovaným serverem Plex Media Server nebo NextCloud (například).

V tomto článku vám ukážeme, jak projít GPU NVIDIA do kontejneru Proxmox VE 8 LXC, abyste jej mohli použít pro akceleraci CUDA/AI, překódování médií nebo jiné úkoly, které vyžadují GPU NVIDIA.







Téma obsahu:

Instalace ovladačů GPU NVIDIA na Proxmox VE 8

Chcete-li předat GPU NVIDIA do kontejneru Proxmox VE LXC, musíte mít na serveru Proxmox VE 8 nainstalované ovladače GPU NVIDIA. Pokud potřebujete pomoc s instalací nejnovější verze oficiálních ovladačů GPU NVIDIA na váš server Proxmox VE 8, přečtěte si tento článek .



Zajištění automatického načítání modulů jádra GPU NVIDIA do Proxmox VE 8

Jakmile budete mít na svém serveru Proxmox VE 8 nainstalované ovladače GPU NVIDIA, musíte se ujistit, že moduly jádra GPU NVIDIA se načítají automaticky při spouštění.



Nejprve vytvořte nový soubor jako „nvidia.conf“ v adresáři „/etc/modules-load.d/“ a otevřete jej pomocí textového editoru nano.





$ nano / atd / moduly-zatížení.d / nvidia.conf

Přidejte následující řádky a stiskněte + X následuje „Y“ a uložení souboru „nvidia.conf“:



nvidia

nvidia_uvm

Aby se změny projevily, aktualizujte soubor „initramfs“ následujícím příkazem:

$ update-initramfs -v

Z nějakého důvodu Proxmox VE 8 nevytváří požadované soubory zařízení NVIDIA GPU v adresáři „/dev/“. Bez těchto souborů zařízení nebudou kontejnery Promox VE 8 LXC moci používat GPU NVIDIA.

Abyste se ujistili, že Proxmox VE 8 vytvoří soubory zařízení NVIDIA GPU při spouštění v adresáři „/dev/“, vytvořte soubor pravidel udev „70-nvidia.rules“ v souboru „/etc/udev/rules.d/“. adresář a otevřete jej pomocí textového editoru nano takto:

$ nano / atd / udev / pravidla.d / 70 -nvidia.pravidla

Zadejte následující řádky do souboru „70-nvidia.rules“ a stiskněte + X následuje „Y“ a pro uložení souboru:

# vytvořte potřebné soubory zařízení NVIDIA v /dev/*

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

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

Aby se změny projevily, restartujte server Proxmox VE 8 následovně:

$ restartovat

Jakmile se váš server Proxmox VE 8 spustí, moduly jádra NVIDIA by se měly načíst automaticky, jak můžete vidět na následujícím snímku obrazovky:

$ lsmod | rukojeť nvidia

Požadované soubory zařízení NVIDIA by měly být také vyplněny v adresáři „/dev“ vašeho serveru Proxmox VE 8. Poznamenejte si ID CGroup souborů zařízení NVIDIA. Musíte povolit tato ID CGroup na kontejneru LXC, kde chcete procházet GPU NVIDIA ze serveru Proxmox VE 8. V našem případě jsou ID CGroup 195, 237 a 226.

$ ls -lh / dev / nvidia *

$ ls -lh / dev / dri

Vytvoření kontejneru Proxmox VE 8 LXC pro průchod GPU NVIDIA

V tomto článku jsme pro demonstraci použili kontejner Ubuntu 22.04 LTS Proxmox VE 8 LXC, protože knihovny NVIDIA CUDA a NVIDIA cuDNN se snadno instalují na Ubuntu 22.04 LTS z úložišť balíčků Ubuntu a je snazší otestovat, zda funguje acceleration NVIDIA CU . Pokud chcete, můžete použít i jiné distribuce Linuxu. V takovém případě se instalační příkazy NVIDIA CUDA a NVIDIA cuDNN budou lišit. Ujistěte se, že dodržujete pokyny k instalaci NVIDIA CUDA a NVIDIA cuDNN pro požadovanou distribuci Linuxu.

Pokud potřebujete pomoc při vytváření kontejneru Proxmox VE 8 LXC, přečtěte si tento článek .

Konfigurace LXC kontejneru pro NVIDIA GPU Passthrough na Promox VE 8

Chcete-li nakonfigurovat kontejner LXC (řekněme kontejner 102) pro průchod GPU NVIDIA, otevřete konfigurační soubor kontejneru LXC z prostředí Proxmox VE pomocí textového editoru nano takto:

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

Na konec konfiguračního souboru kontejneru LXC zadejte následující řádky:

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          vývoj / nvidia0          žádný svázat ,volitelný, vytvořit = soubor

lxc.mount.entry: / dev / nvidiactl        dev / nvidiactl        žádný svázat ,volitelný, vytvořit = soubor

lxc.mount.entry: / dev / nvidia-modeset   dev / nvidia-modeset   žádný svázat ,volitelný, vytvořit = soubor

lxc.mount.entry: / dev / nvidia-uvm       dev / nvidia-uvm       žádný svázat ,volitelný, vytvořit = soubor

lxc.mount.entry: / dev / nvidia-uvm-tools dev / nvidia-uvm-tools žádné svázat ,volitelný, vytvořit = soubor

lxc.mount.entry: / dev / dri              vývoj / dri              žádné svázat ,volitelný, vytvořit = vy

Ujistěte se, že jste nahradili ID CGroup v řádcích „lxc.cgroup.devices.allow“ v konfiguračním souboru kontejneru LXC. Až budete hotovi, stiskněte + X následuje „Y“ a pro uložení konfiguračního souboru kontejneru LXC.

Nyní spusťte kontejner LXC z řídicího panelu Proxmox VE 8.

Pokud je průchod GPU NVIDIA úspěšný, kontejner LXC by se měl spustit bez chyby a měli byste vidět soubory zařízení NVIDIA v adresáři „/dev“ kontejneru.

$ ls -lh / dev / nvidia *

$ ls -lh / dev / dri

Instalace ovladačů GPU NVIDIA na kontejner Proxmox VE 8 LXC

Pro ukázku používáme kontejner Ubuntu 22.04 LTS LXC na našem serveru Proxmox VE 8. Pokud v kontejneru LXC používáte jinou distribuci Linuxu, vaše příkazy se budou mírně lišit od našich. Nezapomeňte tedy upravit příkazy v závislosti na distribuci Linuxu, kterou v kontejneru používáte.

Verzi ovladačů GPU NVIDIA, kterou jste nainstalovali na svůj server Proxmox VE 8, najdete pomocí příkazu „nvidia-smi“. Jak vidíte, na našem serveru Proxmox VE 8 máme nainstalované ovladače GPU NVIDIA verze 535.146.02. Musíme tedy nainstalovat ovladače GPU NVIDIA verze 535.146.02 také do našeho kontejneru LXC.

$ nvidia-smi

Nejprve nainstalujte CURL do kontejneru LXC následovně:

$ apt aktualizace && apt Nainstalujte kučera -a

CURL by měl být nainstalován na kontejneru LXC.

Chcete-li nainstalovat ovladače GPU NVIDIA verze 535.146.02 (řekněme), exportujte proměnnou prostředí NVIDIA_VERSION a spusťte příkaz CURL (na kontejneru), abyste stáhli požadovanou verzi instalačního souboru ovladačů GPU NVIDIA.

$ vývozní NVIDIA_VERSION = '535.146.02'

$ curl 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .běh'

Správná verze instalačního souboru ovladačů GPU NVIDIA by měla být stažena do kontejneru LXC, jak můžete vidět na následujícím snímku obrazovky:

Nyní přidejte spustitelné oprávnění k instalačnímu souboru ovladačů GPU NVIDIA v kontejneru následovně:

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

Chcete-li nainstalovat ovladače GPU NVIDIA do kontejneru, spusťte instalační soubor ovladačů GPU NVIDIA s „–no-kernel-module“ možnost takto:

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

Jakmile uvidíte tuto možnost, vyberte „OK“ a stiskněte .

Vyberte „OK“ a stiskněte .

Vyberte „Ano“ a stiskněte .

Vyberte „OK“ a stiskněte .

Ovladače GPU NVIDIA se instalují do kontejneru LXC. Dokončení trvá několik sekund.

Jakmile se zobrazí tato výzva, vyberte „Ano“ a stiskněte .

Vyberte „OK“ a stiskněte . Ovladače GPU NVIDIA by měly být nainstalovány v kontejneru LXC.

Chcete-li ověřit, zda jsou ovladače GPU NVIDIA nainstalovány a fungují, spusťte v kontejneru LXC příkaz „nvidia-smi“. Jak vidíte, verze ovladače NVIDIA GPU 535.146.02 (stejná verze jako nainstalovaná na serveru Proxmox VE 8) je nainstalována na kontejneru LXC a správně detekovala náš GPU NVIDIA RTX 4070.

$ nvidia-smi

Instalace NVIDIA CUDA a cuDNN na kontejner Proxmox VE 8 LXC

Pro ukázku používáme kontejner Ubuntu 22.04 LTS LXC na našem serveru Proxmox VE 8. Pokud v kontejneru LXC používáte jinou distribuci Linuxu, vaše příkazy se budou mírně lišit od našich. Nezapomeňte tedy upravit příkazy v závislosti na distribuci Linuxu, kterou v kontejneru používáte.

Chcete-li nainstalovat NVIDIA CUDA a cuDNN na kontejner Ubuntu 22.04 LTS Proxmox VE 8, spusťte na kontejneru následující příkaz:

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

Pro potvrzení instalace stiskněte „Y“ a poté stiskněte .

Požadované balíčky se stahují a instalují. Dokončení chvíli trvá.

Jakmile uvidíte toto okno, vyberte „OK“ a stiskněte .

Vyberte „Souhlasím“ a stiskněte .

Instalace by měla pokračovat.

Instalační program stahuje archiv knihovny NVIDIA cuDNN od společnosti NVIDIA. Je to velký soubor, takže jeho dokončení trvá dlouho.

Po stažení archivu knihovny NVIDIA cuDNN by instalace měla pokračovat jako obvykle.

V tomto okamžiku by měly být NVIDIA CUDA a cuDNN nainstalovány na kontejner Ubuntu 22.04 LTS Proxmox VE 8 LXC.

Kontrola, zda akcelerace NVIDIA CUDA funguje na kontejneru Proxmox VE 8 LXC

Chcete-li ověřit, zda je NVIDIA CUDA správně nainstalována, zkontrolujte, zda je v kontejneru Proxmox VE 8 k dispozici příkaz „nvcc“ takto:

$ nvcc --verze

Jak můžete vidět, na našem kontejneru Proxmox VE 8 máme nainstalovanou NVIDIA CUDA 11.5.

Nyní napíšeme, zkompilujeme a spustíme jednoduchý program CUDA C a uvidíme, zda vše funguje podle očekávání.

Nejprve vytvořte projektový adresář „~/code“ v kontejneru Proxmox VE 8, abyste měli soubory uspořádané.

$ mkdir ~ / kód

Přejděte do adresáře projektu „~/code“ následovně:

$ CD `/ kód

Vytvořte nový soubor jako „hello.cu“ v adresáři „~/code“ kontejneru Proxmox VE 8 a otevřete jej pomocí textového editoru nano:

$ nano ahoj.cu

Do souboru „hello.cu“ zadejte následující řádky kódu:

#include

__global__ void řekni Ahoj ( ) {
printf ( „Ahoj světe z GPU! \n ' ) ;
}

int main ( ) {
printf ( „Ahoj světe z CPU! \n ' ) ;

Řekni Ahoj << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

vrátit se 0 ;
}

Až budete hotovi, stiskněte + X následuje „Y“ a k uložení souboru „hello.cu“.

Chcete-li zkompilovat program „hello.cu“ CUDA na kontejneru Proxmox VE 8, spusťte následující příkazy:

$ nvcc ahoj.cu Ahoj

Nyní můžete spustit program CUDA „ahoj“ na kontejneru Proxmox VE 8 následovně:

$ . / Ahoj

Pokud kontejner Proxmox VE 8 může používat GPU NVIDIA pro akceleraci NVIDIA CUDA, program vytiskne dva řádky, jak je znázorněno na následujícím snímku obrazovky.

Pokud není GPU NVIDIA přístupné z kontejneru Proxmox VE 8, program vytiskne pouze první řádek, který je „Ahoj světe z CPU!“, nikoli druhý řádek.

Závěr

V tomto článku jsme vám ukázali, jak projít GPU NVIDIA z hostitele Proxmox VE 8 do kontejneru Proxmox VE 8 LXC. Také jsme vám ukázali, jak nainstalovat stejnou verzi ovladačů GPU NVIDIA na kontejner Proxmox VE 8 jako hostitele Proxmox VE. Nakonec jsme vám ukázali, jak nainstalovat NVIDIA CUDA a NVIDIA cuDNN na kontejner Ubuntu 22.04 LTS Proxmox VE 8 a zkompilovat a spustit jednoduchý program NVIDIA CUDA na kontejneru Proxmox VE 8.

Reference: