Software Llama-CPPLocal AINvidiaProxmox

NVIDIA-GPU unter Proxmox VE für einen LXC-Container einrichten

Diese Anleitung ist die Fortsetzung meines Artikels zur Proxmox-Grundinstallation. Nachdem Proxmox VE erfolgreich eingerichtet wurde, geht es jetzt darum, die NVIDIA RTX 3060 für meinen Local-AI-Server vorzubereiten und anschließend für den LXC-Container 101 verfügbar zu machen.

nvidia llamacpp proxmox
1 Schritte 40 Views

Nachdem wir im vorherigen Artikel Proxmox VE als Grundlage für unseren Local-AI-Server installiert haben, geht es jetzt an einen der wichtigsten Schritte: Wir bringen die NVIDIA RTX 3060 dazu, innerhalb unseres LXC-Containers verwendet werden zu können.

Zum Einsatz kommt eine NVIDIA RTX 3060 mit 12 GB VRAM. Als Host läuft Proxmox VE 9.2.20. Der LXC-Container mit der ID 101 wird später unsere Umgebung für Docker, Docker Compose und llama.cpp bereitstellen.

Wie funktioniert der Aufbau 🤔❓

Die grundlegende Aufteilung ist dabei relativ einfach:

Der Proxmox-Host übernimmt die GPU.

Hier installieren wir den vollständigen NVIDIA-Treiber inklusive der benötigten Kernel-Module. Der Proxmox-Kernel ist für die Kommunikation mit der Grafikkarte verantwortlich und stellt die entsprechenden NVIDIA-Geräte bereit.

Der LXC-Container bekommt Zugriff auf diese GPU.

Im Container installieren wir anschließend den NVIDIA-Treiber erneut, allerdings ausdrücklich ohne Kernel-Module. Der Container verwendet damit die vom Host bereitgestellte GPU und deren Kernel-Schnittstelle, während die benötigten NVIDIA-Userspace-Komponenten innerhalb des Containers vorhanden sind.

Damit schaffen wir die Grundlage dafür, dass später auch Anwendungen innerhalb des Containers, insbesondere Docker und llama.cpp, auf die RTX 3060 zugreifen können.

Warum installieren wir den Treiber zweimal❓

Das wirkt auf den ersten Blick etwas ungewöhnlich. Auf dem Host benötigen wir den Treiber, damit der Linux-Kernel die Grafikkarte überhaupt verwalten kann.

Im Container benötigen Anwendungen dagegen die passenden NVIDIA-Bibliotheken und Werkzeuge, um mit dieser GPU kommunizieren zu können. Deshalb wird der NVIDIA-Treiber dort ebenfalls installiert, aber ohne die Kernel-Module.

Genau diese Trennung ist für unseren Aufbau entscheidend:

Proxmox Host: NVIDIA-Treiber + Kernel-Module
LXC 101: NVIDIA-Treiber ohne Kernel-Module
GPU: RTX 3060 mit 12 GB VRAM
Später: Docker + Docker Compose + llama.cpp

Ausblick: Multi-GPU

Der hier gezeigte Aufbau funktioniert grundsätzlich nicht nur mit einer einzelnen NVIDIA-GPU. Werden mehrere kompatible NVIDIA-Grafikkarten im Proxmox-Host betrieben, können auch mehrere GPUs für einen LXC-Container verfügbar gemacht werden.

Der entscheidende Punkt bleibt dabei derselbe: Die NVIDIA-Kernel-Module werden auf dem Proxmox-Host installiert und verwalten dort die vorhandenen Grafikkarten. Im LXC-Container werden die NVIDIA-Treiber weiterhin ohne eigene Kernel-Module installiert. Anschließend werden die benötigten GPU-Geräte des Hosts für den Container freigegeben.

Bei mehreren GPUs müssen entsprechend die zusätzlichen NVIDIA-Geräte berücksichtigt und dem Container zur Verfügung gestellt werden. Anwendungen wie llama.cpp können anschließend, abhängig von der jeweiligen Anwendung und deren GPU-Unterstützung, mehrere GPUs nutzen.

Damit ist der grundsätzliche Aufbau auch für einen späteren Multi-GPU-Local-AI-Server geeignet. Die eigentliche Konfiguration und Nutzung mehrerer GPUs, beispielsweise für größere Sprachmodelle, werde ich in einem späteren Schritt noch genauer zeigen.

Wir gehen jetzt Schritt für Schritt vor und überprüfen nach jedem wichtigen Abschnitt, ob die GPU weiterhin korrekt funktioniert.

1

NVIDIA-Treiber auf dem Proxmox-Host installieren

Alle Befehle in diesem Abschnitt werden auf dem Proxmox-Host ausgeführt.

1.1 Proxmox aktualisieren

Melde dich über die Proxmox-Weboberfläche an und öffne die Shell des Hosts. Alternativ kannst du dich per SSH verbinden.

Prüfe zunächst die installierte Version:

pveversion -v

Aktualisiere anschließend die Paketlisten und installiere verfügbare Updates:

apt update && apt full-upgrade -y

Falls ein Kernel-Update installiert wurde, ist ein Neustart erforderlich, damit der neue Kernel tatsächlich läuft.

1.2 NVIDIA GPU erkennen

Bevor wir irgendwelche NVIDIA-Treiber installieren, prüfen wir zunächst,
ob Proxmox die Grafikkarte überhaupt erkennt.

lspci | grep -i nvidia

Wenn die RTX 3060 korrekt erkannt wird, sollte eine Ausgabe ähnlich dieser erscheinen:

01:00.0 VGA compatible controller: NVIDIA Corporation GA106 [GeForce RTX 3060]
01:00.1 Audio device: NVIDIA Corporation GA106 High Definition Audio Controller

Damit wissen wir, dass die Grafikkarte auf PCIe-Ebene erkannt wird.

Für eine detailliertere Ausgabe können wir zusätzlich die PCI-IDs anzeigen:

lspci -nn | grep -i nvidia

1.3 Benötigte Pakete installieren

Für die Installation der NVIDIA-Kernel-Module werden unter anderem Compiler-Werkzeuge und passende Kernel-Header benötigt.

apt install build-essential dkms

Prüfe, welchen Kernel dein Host gerade verwendet:

uname -r

Installiere die dazu passenden Header. Auf Proxmox VE 9 können die Paketnamen je nach installiertem Kernel und Repository-Konfiguration variieren. Prüfe deshalb zunächst:

apt search pve-headers

Wenn das passende Header-Paket verfügbar ist, installiere es. Anschließend kannst du kontrollieren, ob das Header-Verzeichnis vorhanden ist:

ls -ld /lib/modules/$(uname -r)/build

Wenn dieses Verzeichnis fehlt, solltest du nicht mit der NVIDIA-Installation fortfahren.

1.4 NVIDIA-Treiber herunterladen

Lade den passenden Linux-Treiber für deine RTX 3060 von der offiziellen NVIDIA-Seite herunter:

NVIDIA – Treiber herunterladen

Wähle dort deine Grafikkarte und Linux als Betriebssystem aus. Speichere die heruntergeladene .run-Datei auf dem Proxmox-Host, beispielsweise im Verzeichnis /root.

Wechsle in das Verzeichnis:

cd /root

Mache die Datei ausführbar. Ersetze den Dateinamen durch den tatsächlichen Namen der heruntergeladenen Datei:

chmod +x NVIDIA-Linux-x86_64-*.run

Achtung: Der Platzhalter * ist nur für eine passende einzelne Datei geeignet. Wenn mehrere NVIDIA-Dateien im Verzeichnis liegen, verwende den exakten Dateinamen.

1.5 NVIDIA-Treiber mit DKMS installieren

Starte den Installer:

./NVIDIA-Linux-x86_64-<VERSION>.run --dkms

Ersetze <VERSION> durch die Version deiner heruntergeladenen Datei.

Während der Installation:

Stimme der Lizenz zu.

Wähle die Registrierung des Kernel-Moduls mit DKMS, falls der Installer danach fragt.

Wenn du gefragt wirst, ob ein vorhandenes Nouveau-Modul deaktiviert werden soll, folge der NVIDIA-Installer-Anleitung.

Installiere keine unnötigen grafischen Komponenten auf dem reinen Server.

Die Option --dkms sorgt dafür, dass das Kernel-Modul über DKMS verwaltet wird. Das kann den Wiederaufbau nach Kernel-Updates erleichtern, ersetzt aber nicht die Prüfung, ob der Treiber mit dem neuen Kernel kompatibel ist.
NVIDIA Download
+1

1.6 Initramfs aktualisieren und neu starten

Nach erfolgreicher Installation:

update-initramfs -u -k all
reboot

Warte, bis Proxmox wieder erreichbar ist, und öffne erneut die Host-Shell.

1.7 Treiber überprüfen

Prüfe zunächst, ob NVIDIA die Grafikkarte erkennt:

nvidia-smi

Die Ausgabe sollte die RTX 3060 mit ungefähr 12 GB Grafikspeicher anzeigen.

Prüfe zusätzlich, ob das Kernel-Modul geladen ist:

lsmod | grep nvidia

Wenn nvidia-smi einen Fehler meldet, fahre nicht mit der Container-Konfiguration fort. Prüfe zuerst die Kernel- und Treiberversion sowie die DKMS-Ausgabe.

1.8 GPU-Auslastung mit nvtop beobachten

Installiere nvtop, sofern es in deinen aktivierten Paketquellen verfügbar ist:

apt install nvtop

Starte es:

nvtop

Damit kannst du später beobachten, ob dein LXC-Container die GPU verwendet.

← Zurück zu den Local AI-Anleitungen