Published on

Proxmox: GPU an die KI-VM durchreichen

Authors

Proxmox: GPU an die KI-VM durchreichen

TL;DR

PCI-Passthrough gibt einer VM eine physische GPU. Der Proxmox-Host kann dieselbe Karte danach nicht für sich nutzen. Das lohnt, wenn die Firma Proxmox schon betreibt und die GPU eine eigene IOMMU-Gruppe hat. Für den ersten KI-Server ohne bestehende Virtualisierung ist Ubuntu auf dem Blech der kürzere Weg. Die Befehle, die sich mit der Kernel-Version ändern, stehen im Proxmox-Wiki, nicht hier als zweite Kopie.

Treiber in der VM, nachdem die Karte sichtbar ist: NVIDIA-Treiber und CUDA.

Wann die VM, wann das Blech

LageWeg
Proxmox läuft, andere VMs teilen sich den Host, die GPU soll nur die KI-VMPassthrough
Ein Rechner, eine Aufgabe, niemand betreibt ProxmoxUbuntu auf der Hardware
Die GPU sitzt in einer IOMMU-Gruppe mit Netzwerkkarte oder SATAAnderer Slot, oder kein Passthrough
Zwei Gäste sollen dieselbe Karte gleichzeitig rechnenGeht mit einer Consumer-GPU nicht. Eine Karte, eine VM

Passthrough ist kein Leistungsmodus. Die VM sieht die Karte fast wie ein eigener Rechner. Der Preis ist Betrieb: IOMMU, VFIO, und ein Host, der ohne diese GPU auskommen muss. Wer den Host nur über diese eine Karte am Monitor hat, verliert die lokale Konsole. Verwaltung dann per SSH, wie das Wiki für den Fall „einzige GPU“ voraussetzt.

Was das Wiki verlangt

CPU und Board müssen IOMMU können. Im Firmware-Setup heißt das VT-d oder IOMMU / AMD-Vi. Ab Kernel 6.8 schaltet Proxmox die Intel-IOMMU von sich aus an, AMD schon länger. Auf älteren Kerneln braucht Intel zusätzlich intel_iommu=on. Die genaue Zeile hängt am Bootloader des Hosts. Das Wiki, nicht ein Blog von vor drei Kernel-Versionen.

Die Module, die der Host laden muss, nennt das Wiki so:

vfio
vfio_iommu_type1
vfio_pci

Die GPU und ihre Audio-Funktion gehören an vfio-pci, über die IDs aus lspci -nn dieser Maschine. Eine fremde Geräte-ID aus einer anderen Anleitung bindet die falsche Karte oder keine.

Die ganze IOMMU-Gruppe geht mit. Teilen sich GPU, Onboard-Netzwerk und ein USB-Controller eine Gruppe, zieht der Gast Geräte mit, die der Host noch braucht. Ein anderer PCIe-Slot ändert die Gruppe oft. Das ist eine Eigenschaft des Boards, kein Schalter in der VM.

Für die VM nennt Proxmox die beste Verträglichkeit so: Maschinentyp q35, BIOS OVMF (UEFI), Gerät als PCIe und nicht als PCI. OVMF setzt ein UEFI-fähiges GPU-ROM voraus. Ohne das ROM bleibt SeaBIOS.

Der Host-Treiber darf die Karte nicht behalten. Das Wiki lässt dafür nouveau und nvidia auf dem Host sperren. Der Treiber zieht in den Gast, nicht auf Proxmox.

Danach ist es ein normaler KI-Server

nvidia-smi in der VM ist der Test, nicht die Proxmox-Oberfläche. Ab dort gilt dieselbe Reihenfolge wie auf Blech: Treiber, dann bei Docker das Container Toolkit, dann das Modell. Die VM ändert die VRAM-Menge nicht. Eine 24-GB-Karte bleibt 24 GB, auch wenn der Datastore daneben größer ist.

Slot und zweite Karte, bevor eine weitere GPU in dieselbe VM soll: PCIe-Lanes. Modelle nicht auf die Systemplatte der VM: Ollama auf die NVMe.

Quellen & Weiterführende Links

📖 Verwandte Artikel

Weitere interessante Beiträge zu ähnlichen Themen