So übergeben Sie eine NVIDIA-GPU an Proxmox VE 8-Container für CUDA/AI-Beschleunigung und Medientranskodierung

So Ubergeben Sie Eine Nvidia Gpu An Proxmox Ve 8 Container Fur Cuda Ai Beschleunigung Und Medientranskodierung



Wenn auf Ihrem Proxmox VE-Server eine NVIDIA-GPU installiert ist, können Sie diese an einen Proxmox VE LXC-Container übergeben und im Container für die CUDA/AI-Beschleunigung (z. B. TensorFlow, PyTorch) verwenden. Sie können die NVIDIA-GPU auch für Medientranskodierung, Videostreaming usw. in einem Proxmox VE LXC-Container mit installiertem Plex Media Server oder NextCloud (z. B.) verwenden.

In diesem Artikel zeigen wir Ihnen, wie Sie eine NVIDIA-GPU an einen Proxmox VE 8 LXC-Container weiterleiten, damit Sie ihn für CUDA/AI-Beschleunigung, Medientranskodierung oder andere Aufgaben verwenden können, die eine NVIDIA-GPU erfordern.







Inhaltsthema:

Installieren der NVIDIA GPU-Treiber auf Proxmox VE 8

Um eine NVIDIA-GPU an einen Proxmox VE LXC-Container weiterzuleiten, müssen die NVIDIA-GPU-Treiber auf Ihrem Proxmox VE 8-Server installiert sein. Wenn Sie Hilfe bei der Installation der neuesten Version der offiziellen NVIDIA-GPU-Treiber auf Ihrem Proxmox VE 8-Server benötigen, wenden Sie sich an uns. Lesen Sie diesen Artikel .



Sicherstellen, dass die NVIDIA GPU-Kernelmodule automatisch in Proxmox VE 8 geladen werden

Sobald Sie die NVIDIA-GPU-Treiber auf Ihrem Proxmox VE 8-Server installiert haben, müssen Sie sicherstellen, dass die NVIDIA-GPU-Kernelmodule beim Booten automatisch geladen werden.



Erstellen Sie zunächst eine neue Datei wie „nvidia.conf“ im Verzeichnis „/etc/modules-load.d/“ und öffnen Sie sie mit dem Nano-Texteditor.





$ Nano / usw / module-load.d / nvidia.conf

Fügen Sie die folgenden Zeilen hinzu und drücken Sie + X gefolgt von „Y“ und So speichern Sie die Datei „nvidia.conf“:



NVIDIA

nvidia_uvm

Damit die Änderungen wirksam werden, aktualisieren Sie die Datei „initramfs“ mit dem folgenden Befehl:

$ update-initramfs -In

Aus irgendeinem Grund erstellt Proxmox VE 8 nicht die erforderlichen NVIDIA GPU-Gerätedateien im Verzeichnis „/dev/“. Ohne diese Gerätedateien können die Promox VE 8 LXC-Container die NVIDIA-GPU nicht verwenden.

Um sicherzustellen, dass Proxmox VE 8 beim Booten die NVIDIA-GPU-Gerätedateien im Verzeichnis „/dev/“ erstellt, erstellen Sie eine udev-Regeldatei „70-nvidia.rules“ im Verzeichnis „/etc/udev/rules.d/“. Verzeichnis und öffnen Sie es mit dem Nano-Texteditor wie folgt:

$ Nano / usw / udev / Regeln.d / 70 -nvidia.rules

Geben Sie die folgenden Zeilen in die Datei „70-nvidia.rules“ ein und drücken Sie + X gefolgt von „Y“ und So speichern Sie die Datei:

# Erstelle die erforderlichen NVIDIA-Gerätedateien in /dev/*

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

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

Damit die Änderungen wirksam werden, starten Sie Ihren Proxmox VE 8 Server wie folgt neu:

$ neu starten

Sobald Ihr Proxmox VE 8-Server startet, sollten die NVIDIA-Kernelmodule automatisch geladen werden, wie Sie im folgenden Screenshot sehen können:

$ lsmod | Griff NVIDIA

Die erforderlichen NVIDIA-Gerätedateien sollten auch im Verzeichnis „/dev“ Ihres Proxmox VE 8-Servers abgelegt werden. Notieren Sie sich die CGroup-IDs der NVIDIA-Gerätedateien. Sie müssen diese CGroup-IDs auf dem LXC-Container zulassen, durch den Sie die NVIDIA-GPUs von Ihrem Proxmox VE 8-Server weiterleiten möchten. In unserem Fall lauten die CGroup-IDs 195, 237 und 226.

$ ls -lh / Entwickler / NVIDIA *

$ ls -lh / Entwickler / dri

Erstellen eines Proxmox VE 8 LXC-Containers für NVIDIA GPU Passthrough

Wir haben in diesem Artikel für die Demonstration einen Ubuntu 22.04 LTS Proxmox VE 8 LXC-Container verwendet, da die NVIDIA CUDA- und NVIDIA cuDNN-Bibliotheken aus den Ubuntu-Paket-Repositories einfach auf Ubuntu 22.04 LTS installiert werden können und es einfacher ist zu testen, ob die NVIDIA CUDA-Beschleunigung funktioniert . Wenn Sie möchten, können Sie auch andere Linux-Distributionen verwenden. In diesem Fall variieren die Installationsbefehle für NVIDIA CUDA und NVIDIA cuDNN. Befolgen Sie unbedingt die Installationsanweisungen für NVIDIA CUDA und NVIDIA cuDNN für Ihre gewünschte Linux-Distribution.

Wenn Sie Hilfe beim Erstellen eines Proxmox VE 8 LXC-Containers benötigen, Lesen Sie diesen Artikel .

Konfigurieren eines LXC-Containers für NVIDIA GPU Passthrough auf Promox VE 8

Um einen LXC-Container (z. B. Container 102) für NVIDIA GPU-Passthrough zu konfigurieren, öffnen Sie die LXC-Container-Konfigurationsdatei aus der Proxmox VE-Shell mit dem Nano-Texteditor wie folgt:

$ Nano / usw / pve / lxc / 102 .conf

Geben Sie am Ende der LXC-Container-Konfigurationsdatei die folgenden Zeilen ein:

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

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

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

lxc.mount.entry: / Entwickler / nvidia0          dev / nvidia0          keine binden ,Optional, erstellen = Datei

lxc.mount.entry: / Entwickler / nvidiactl        dev / nvidiactl        keine binden ,Optional, erstellen = Datei

lxc.mount.entry: / Entwickler / nvidia-modeset   dev / nvidia-modeset   none binden ,Optional, erstellen = Datei

lxc.mount.entry: / Entwickler / nvidia-uvm       dev / nvidia-uvm       keine binden ,Optional, erstellen = Datei

lxc.mount.entry: / Entwickler / nvidia-uvm-tools dev / nvidia-uvm-tools keine binden ,Optional, erstellen = Datei

lxc.mount.entry: / Entwickler / dri              dev / dri              keine binden ,Optional, erstellen = Du

Stellen Sie sicher, dass Sie die CGroup-IDs in den „lxc.cgroup.devices.allow“-Zeilen der LXC-Container-Konfigurationsdatei ersetzen. Wenn Sie fertig sind, drücken Sie + X gefolgt von „Y“ und um die LXC-Container-Konfigurationsdatei zu speichern.

Starten Sie nun den LXC-Container über das Proxmox VE 8-Dashboard.

Wenn der NVIDIA-GPU-Passthrough erfolgreich ist, sollte der LXC-Container ohne Fehler starten und Sie sollten die NVIDIA-Gerätedateien im Verzeichnis „/dev“ des Containers sehen.

$ ls -lh / Entwickler / NVIDIA *

$ ls -lh / Entwickler / dri

Installieren der NVIDIA GPU-Treiber auf dem Proxmox VE 8 LXC Container

Zur Demonstration verwenden wir einen Ubuntu 22.04 LTS LXC-Container auf unserem Proxmox VE 8 Server. Wenn Sie eine andere Linux-Distribution im LXC-Container verwenden, weichen Ihre Befehle geringfügig von unseren ab. Stellen Sie daher sicher, dass Sie die Befehle an die Linux-Distribution anpassen, die Sie im Container verwenden.

Mit dem Befehl „nvidia-smi“ können Sie die NVIDIA-GPU-Treiberversion finden, die Sie auf Ihrem Proxmox VE 8-Server installiert haben. Wie Sie sehen können, haben wir die NVIDIA-GPU-Treiberversion 535.146.02 auf unserem Proxmox VE 8-Server installiert. Daher müssen wir auch die NVIDIA GPU-Treiberversion 535.146.02 auf unserem LXC-Container installieren.

$ nvidia-smi

Installieren Sie zunächst CURL wie folgt im LXC-Container:

$ passendes Update && geeignet Installieren Locken -Und

CURL sollte auf dem LXC-Container installiert sein.

Um beispielsweise die NVIDIA-GPU-Treiberversion 535.146.02 zu installieren, exportieren Sie die Umgebungsvariable NVIDIA_VERSION und führen Sie den CURL-Befehl (im Container) aus, um die erforderliche Version der Installationsdatei für die NVIDIA-GPU-Treiber herunterzuladen.

$ Export NVIDIA_VERSION = „535.146.02“

$ Curl „https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .laufen'

Die richtige Version der NVIDIA GPU-Treiber-Installationsdatei sollte auf den LXC-Container heruntergeladen werden, wie Sie im folgenden Screenshot sehen können:

Fügen Sie nun wie folgt eine ausführbare Berechtigung zur Installationsdatei der NVIDIA GPU-Treiber im Container hinzu:

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

Um die NVIDIA-GPU-Treiber im Container zu installieren, führen Sie die Installationsdatei für die NVIDIA-GPU-Treiber mit dem Befehl „–no-kernel-module“ aus. Option wie folgt:

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

Sobald Sie diese Option sehen, wählen Sie „OK“ und drücken Sie .

Wählen Sie „OK“ und drücken Sie .

Wählen Sie „Ja“ und drücken Sie .

Wählen Sie „OK“ und drücken Sie .

Die NVIDIA-GPU-Treiber werden im LXC-Container installiert. Der Vorgang dauert einige Sekunden.

Sobald Sie diese Eingabeaufforderung sehen, wählen Sie „Ja“ und drücken Sie .

Wählen Sie „OK“ und drücken Sie . Die NVIDIA-GPU-Treiber sollten auf dem LXC-Container installiert werden.

Um zu bestätigen, ob die NVIDIA-GPU-Treiber installiert sind und funktionieren, führen Sie den Befehl „nvidia-smi“ im LXC-Container aus. Wie Sie sehen können, ist die NVIDIA-GPU-Treiberversion 535.146.02 (die gleiche Version, die auf dem Proxmox VE 8-Server installiert ist) auf dem LXC-Container installiert und hat unsere NVIDIA RTX 4070-GPU korrekt erkannt.

$ nvidia-smi

Installation von NVIDIA CUDA und cuDNN auf dem Proxmox VE 8 LXC Container

Zur Demonstration verwenden wir einen Ubuntu 22.04 LTS LXC-Container auf unserem Proxmox VE 8 Server. Wenn Sie eine andere Linux-Distribution im LXC-Container verwenden, weichen Ihre Befehle geringfügig von unseren ab. Stellen Sie daher sicher, dass Sie die Befehle an die Linux-Distribution anpassen, die Sie im Container verwenden.

Um NVIDIA CUDA und cuDNN auf dem Ubuntu 22.04 LTS Proxmox VE 8-Container zu installieren, führen Sie den folgenden Befehl auf dem Container aus:

$ geeignet Installieren build-essential nvidia-cuda-toolkit nvidia-cudnn

Um die Installation zu bestätigen, drücken Sie „Y“ und dann drücken .

Die erforderlichen Pakete werden heruntergeladen und installiert. Es dauert eine Weile, bis es fertig ist.

Sobald Sie dieses Fenster sehen, wählen Sie „OK“ und drücken Sie .

Wählen Sie „Ich stimme zu“ und drücken Sie .

Die Installation sollte fortgesetzt werden.

Das Installationsprogramm lädt das NVIDIA cuDNN-Bibliotheksarchiv von NVIDIA herunter. Da es sich um eine große Datei handelt, dauert die Fertigstellung lange.

Sobald das NVIDIA cuDNN-Bibliotheksarchiv heruntergeladen wurde, sollte die Installation wie gewohnt fortgesetzt werden.

Zu diesem Zeitpunkt sollten NVIDIA CUDA und cuDNN auf dem Ubuntu 22.04 LTS Proxmox VE 8 LXC-Container installiert sein.

Überprüfen, ob die NVIDIA CUDA-Beschleunigung auf dem Proxmox VE 8 LXC-Container funktioniert

Um zu überprüfen, ob NVIDIA CUDA korrekt installiert ist, prüfen Sie wie folgt, ob der Befehl „nvcc“ im Proxmox VE 8-Container verfügbar ist:

$ nvcc --Ausführung

Wie Sie sehen können, haben wir NVIDIA CUDA 11.5 auf unserem Proxmox VE 8-Container installiert.

Lassen Sie uns nun ein einfaches CUDA-C-Programm schreiben, kompilieren und ausführen und prüfen, ob alles wie erwartet funktioniert.

Erstellen Sie zunächst ein „~/code“-Projektverzeichnis im Proxmox VE 8-Container, um die Dateien organisiert zu halten.

$ mkdir ~ / Code

Navigieren Sie wie folgt zum Projektverzeichnis „~/code“:

$ CD `/ Code

Erstellen Sie eine neue Datei wie „hello.cu“ im Verzeichnis „~/code“ des Proxmox VE 8-Containers und öffnen Sie sie mit dem Nano-Texteditor:

$ Nano hallo.cu

Geben Sie die folgenden Codezeilen in die Datei „hello.cu“ ein:

#include

__global__ void sayHello ( ) {
printf ( „Hallo Welt von der GPU! \N ' ) ;
}

int main ( ) {
printf ( „Hallo Welt von der CPU! \N ' ) ;

sag Hallo << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

zurückkehren 0 ;
}

Wenn Sie fertig sind, drücken Sie + X gefolgt von „Y“ Und um die Datei „hello.cu“ zu speichern.

Führen Sie die folgenden Befehle aus, um das CUDA-Programm „hello.cu“ auf dem Proxmox VE 8-Container zu kompilieren:

$ nvcc hallo.cu Hallo

Jetzt können Sie das „Hallo“-CUDA-Programm auf dem Proxmox VE 8-Container wie folgt ausführen:

$ . / Hallo

Wenn der Proxmox VE 8-Container die NVIDIA-GPU für die NVIDIA CUDA-Beschleunigung nutzen kann, druckt das Programm zwei Zeilen, wie im folgenden Screenshot gezeigt.

Wenn die NVIDIA-GPU nicht über den Proxmox VE 8-Container zugänglich ist, druckt das Programm nur die erste Zeile, die „Hallo Welt von der CPU!“ lautet, nicht die zweite Zeile.

Abschluss

In diesem Artikel haben wir Ihnen gezeigt, wie Sie eine NVIDIA-GPU vom Proxmox VE 8-Host an einen Proxmox VE 8 LXC-Container weiterleiten. Außerdem haben wir Ihnen gezeigt, wie Sie auf dem Proxmox VE 8-Container die gleiche Version der NVIDIA-GPU-Treiber installieren wie auf dem Proxmox VE-Host. Abschließend haben wir Ihnen gezeigt, wie Sie NVIDIA CUDA und NVIDIA cuDNN auf einem Ubuntu 22.04 LTS Proxmox VE 8-Container installieren und ein einfaches NVIDIA CUDA-Programm auf dem Proxmox VE 8-Container kompilieren und ausführen.

Verweise: