Inventar mit pve44–pve61 und den Ada-Rechnern gode-pc-05/06 (M4000 weiter disabled). Registry-ops auf gpu-pve44/gpu-pve48/infra laut Placement, bei den Ada-Slots entfallen pve_node und vmid (Worker-Registry v2, Task 6.4). Tests: neuer test_site_knaster_matches_real_nodes, Konsistenztest auf gpus-Liste umgestellt. ADR-Nachträge zu D1 (Variante B), D2 (eine GPU-VM pro Knoten) und D3 (Ada bleibt Windows, vorgeschlagen). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 lines
2.4 KiB
Markdown
27 lines
2.4 KiB
Markdown
# ADR-0001: GPU-Nodes als VM, Infrastruktur als LXC
|
||
|
||
- Status: angenommen
|
||
- Datum: 2026-10-11
|
||
|
||
## Kontext
|
||
Im Cluster stecken GPUs aus drei Generationen: Maxwell (M4000), Pascal (P2000) und Ada (RTX 4000 Ada). Maxwell und Pascal werden von CUDA 13 nicht mehr unterstützt, vLLM verlangt Compute Capability ≥ 7.0. Ein LXC nutzt immer den Treiber des Hosts.
|
||
|
||
## Entscheidung
|
||
- Jede GPU-Rolle läuft in einer **VM mit PCI-Passthrough** und eigenem, fest gepinntem Treiber. Ada bekommt einen aktuellen Treiber, Maxwell und Pascal einen Treiber der Reihe CUDA 12.x.
|
||
- GPUs werden über **Proxmox Resource Mappings** angesprochen (`gpu-ada-1`, `gpu-p2000-1`, …), nicht über PCI-Adressen.
|
||
- CPU-Dienste (n8n, LiteLLM, Router, Postgres, Monitoring) laufen in **LXC** bzw. einer kleinen VM, jeweils mit Docker Compose.
|
||
|
||
## Folgen
|
||
- Der VM-RAM ist bei Passthrough vollständig reserviert. Er wird deshalb knapp bemessen: llama.cpp-VMs 6–8 GB, vLLM-VMs 24–32 GB.
|
||
- Keine Live-Migration für GPU-VMs. Bei einem Ausfall springt der Router auf einen anderen Slot oder auf Stufe 0.
|
||
- Treiber-Updates laufen pro VM, abgesichert durch einen Snapshot.
|
||
|
||
## Nachtrag 2026-10-12: eine GPU-VM pro Knoten (D2)
|
||
- Statt einer VM pro Rolle bekommt jeder GPU-Knoten **eine** Ubuntu-24.04-VM, an die alle Karten des Knotens durchgereicht werden: `gpu-pve44` (vmid 244), `gpu-pve46` (246), `gpu-pve48` (248), `gpu-pve52` (252). Darin läuft pro Rolle ein Docker-Container.
|
||
- Gründe:
|
||
- **RAM:** Passthrough pinnt den gesamten VM-RAM. Eine VM mit 12 GB pro Knoten lässt auf 32 GB mehr für Container und Failover übrig als mehrere kleine VMs.
|
||
- **Nur Maxwell/Pascal im Cluster:** Die Ada-Karten bleiben in den Windows-Rechnern (ADR-0006, Nachtrag). M4000 und P2000 laufen mit demselben Legacy-Treiber (R580, CUDA 12.x) und passen deshalb in eine VM. Getrennte Treiber je Generation sind nicht mehr nötig.
|
||
- **Host-Kernel ohne NVIDIA:** Der Treiber (R580) kommt als Ubuntu-Paket in der VM und ist per Snapshot rückrollbar. Proxmox-Kernel-Updates berühren ihn nicht.
|
||
- Mappings heißen `gpu-<karte>-<knoten>` (z. B. `gpu-m4000-pve44`), Quelle ist `sites/knaster/proxmox.yaml`. Die M4000 werden mit durchgereicht, bleiben im Inventar aber `disabled` (ADR-0006).
|
||
- Folgen: Ein Neustart der GPU-VM trifft alle Rollen des Knotens. Der Router weicht dann auf die zweite `gpu-embed`-Instanz bzw. auf Stufe 0 aus. Die RAM-Richtwerte oben (6–8 GB, 24–32 GB) gelten nicht mehr.
|