From b389552c8bde76966b84daf7c0eb965b3324562e Mon Sep 17 00:00:00 2001 From: root Date: Mon, 16 Mar 2026 11:35:07 +0700 Subject: [PATCH] PLAN.md + homelab.conf + MASTER_INDEX: 4x RTX 3080 als primaerer Worker, AMD-Rig als Reserve --- MASTER_INDEX.md | 3 +- homelab.conf | 23 ++++++-- ki-video/PLAN.md | 150 ++++++++++++++++++++++++++++++----------------- 3 files changed, 116 insertions(+), 60 deletions(-) diff --git a/MASTER_INDEX.md b/MASTER_INDEX.md index 58f7ba85..b9f35ed8 100644 --- a/MASTER_INDEX.md +++ b/MASTER_INDEX.md @@ -41,7 +41,8 @@ | Ramsin | helmut-pve | **pve-he** | 100.87.235.11 | Bei Helmut, Backup-Agent | | Muldenstein | PBS | **pbs-mu** | 100.99.139.22 | Proxmox Backup Server | | Muldenstein | KI-Tower | **ki-tower** | — | Geplant: RTX 3090 (24 GB) — Haupt-KI, Vision, schwere Inferenz | -| Muldenstein | Mining-Rig | **gpu-worker** | — | Geplant: mehrere RX 6600 XT (je 8 GB) — Embeddings, Whisper, Batch-Worker | +| Muldenstein | NVIDIA-Rig | **gpu-worker** | — | Geplant: 4x RTX 3080 (je 10 GB) — SDXL, XTTS, SadTalker, Whisper, Embeddings | +| Muldenstein | AMD-Rig | **gpu-reserve** | — | Reserve: 8x RX 6600 XT (je 8 GB) — Nebenrolle, ggf. verkaufen | ## Telegram Bots diff --git a/homelab.conf b/homelab.conf index 25881a89..18a694bd 100644 --- a/homelab.conf +++ b/homelab.conf @@ -224,15 +224,26 @@ TUNNEL_601_MU3="rss-manager|:8080|standby" # Projekt: ki-video/PLAN.md # Status: geplant -# --- Mining-Rig / GPU-Worker-Pool (Muldenstein, geplant) --- +# --- NVIDIA Worker-Rig (Muldenstein, geplant) --- PRIMAERER WORKER # Logischer Name: gpu-worker -# GPUs: mehrere AMD Radeon RX 6600 XT Dual (je 8 GB GDDR6, PCIe 4.0 x8) +# GPUs: 4x NVIDIA RTX 3080 (je 10 GB GDDR6X, PCIe 4.0 x16) +# CUDA: voll unterstuetzt, selber Stack wie ki-tower (3090) +# Funktion: Produktiver Worker-Pool — SDXL Batch, XTTS v2, SadTalker, +# Whisper, Upscaling, kleine LLMs (bis 10B), Embeddings +# OS: geplant Debian 12 + Docker + CUDA +# Architektur: 1 Container pro GPU, feste Zuordnung +# Status: geplant +# +# --- AMD Mining-Rig (Muldenstein, Reserve) --- NEBENROLLE +# Logischer Name: gpu-reserve +# GPUs: 8x AMD Radeon RX 6600 XT Dual (je 8 GB GDDR6, PCIe 4.0 x8) # Chip: Navi 23 (gfx1032), RDNA 2 # ROCm: inoffiziell (HSA_OVERRIDE_GFX_VERSION=10.3.0 noetig) -# Funktion: Worker-Pool fuer Embeddings, Whisper STT, kleine LLMs (1-7B), Batch-Jobs -# OS: geplant Debian 12 + Docker + ROCm (kein Proxmox) -# Architektur: 1 Container pro GPU, feste Zuordnung -# Status: geplant, 1-Karten-Test steht aus +# Funktion: Reserve/Nebenrolle — Whisper (whisper.cpp), CPU-Batch-Jobs +# Prioritaet: Niedrig. Nur einsetzen wenn 3080-Rig ausgelastet. +# Alternative: Verkaufen und Erloese in Storage/RAM investieren. +# OS: geplant Debian 12 + Docker + ROCm (falls benoetigt) +# Status: zurueckgestellt, Entscheidung nach 3080-Rig-Aufbau # ============================================================ # NAMENS-MAPPING (Alt → Neu) — Referenz für Migration diff --git a/ki-video/PLAN.md b/ki-video/PLAN.md index 80c373bd..9cb40461 100644 --- a/ki-video/PLAN.md +++ b/ki-video/PLAN.md @@ -47,17 +47,26 @@ Kein Spielzeug-Demo, kein Forschungsprojekt: Thema rein → fertiges Video raus. | **Logischer Name** | ki-tower | | **Rolle** | Chef. Alle schweren Aufgaben, Orchestrierung, Hauptpfad. | -### gpu-worker — AMD-Rig (Muldenstein, geplant) +### gpu-worker — NVIDIA-Rig (Muldenstein, geplant) — PRIMAERER WORKER + +| Eigenschaft | Wert | +|---|---| +| **GPUs** | 4x NVIDIA RTX 3080 (je 10 GB GDDR6X, PCIe 4.0 x16) | +| **CUDA** | Voll unterstuetzt, identischer Stack wie ki-tower | +| **OS** | Debian 12 + Docker + CUDA | +| **Logischer Name** | gpu-worker | +| **Rolle** | Produktiver Worker-Pool. CUDA-nativ, kein Workaround noetig. | +| **Vorteil** | Selber Code wie auf der 3090 — kein Portierungsaufwand. | + +### gpu-reserve — AMD-Rig (Muldenstein, Reserve) | Eigenschaft | Wert | |---|---| | **GPUs** | 8x AMD RX 6600 XT Dual (je 8 GB GDDR6, PCIe 4.0 x8) | -| **Chip** | Navi 23 (gfx1032), RDNA 2 | -| **ROCm** | Inoffiziell (HSA_OVERRIDE_GFX_VERSION=10.3.0 noetig) | -| **OS** | Debian 12 + Docker + ROCm (kein Proxmox) | -| **Logischer Name** | gpu-worker | -| **Rolle** | Arbeiterkolonne. Nur Nebenjobs, nichts Produktionskritisches. | -| **Status** | 1-Karten-Test steht aus. Kein Aufbau vor positivem Test. | +| **ROCm** | Inoffiziell (gfx1032, Workaround noetig) | +| **Logischer Name** | gpu-reserve | +| **Rolle** | Reserve/Nebenrolle. Nur Whisper + CPU-Batch wenn 3080-Rig ausgelastet. | +| **Status** | Zurueckgestellt. Entscheidung nach 3080-Rig-Aufbau. Alternative: verkaufen. | ## Rollenverteilung — Was laeuft wo @@ -77,44 +86,77 @@ Kein Spielzeug-Demo, kein Forschungsprojekt: Thema rein → fertiges Video raus. Wichtig: Schritte laufen SEQUENTIELL. Nur eine schwere GPU-Aufgabe gleichzeitig. 14B statt 32B als Default — laesst 12 GB VRAM frei, kein Flush zwischen Schritten noetig. -### gpu-worker (RX 6600 XT) — Nebenjobs +### gpu-worker (4x RTX 3080) — Produktive Worker-Jobs | Aufgabe | VRAM | Karten | Anmerkung | |---|---|---|---| -| **Whisper** (Untertitel) | ~1.5 GB | 1 | whisper.cpp + HIP, gut getestet auf AMD | -| **Real-ESRGAN** (Upscaling) | ~2 GB | 1 | Einfache Inference, ROCm-Support vorhanden | -| **SDXL** (Nebenbilder, Batch) | ~7 GB | 1-2 | NUR wenn ROCm-Test erfolgreich | -| **Piper TTS** | CPU | 0 | Braucht keine GPU, nutzt CPU/RAM des Rigs | -| **Embeddings** (lokale) | ~1 GB | 1 | Fuer Jarvis/RAG, nicht Video-Pipeline | +| **SDXL** (Batch-Bilder) | ~7 GB | 1-2 | CUDA-nativ, schnell, parallel moeglich | +| **XTTS v2** (TTS-Batch) | ~4 GB | 1 | Voice-Cloning Batch-Produktion | +| **SadTalker** (Avatar) | ~6 GB | 1 | CUDA-only, hier nativ lauffaehig | +| **Whisper** (Untertitel) | ~1.5 GB | 1 | faster-whisper mit CUDA | +| **Real-ESRGAN** (Upscaling) | ~2 GB | 1 | 4K-Upscale fuer Thumbnails/Szenen | +| **Kleine LLMs** (7-10B) | ~8 GB | 1 | Hilfs-LLM fuer Zusammenfassungen, Tags | +| **Embeddings** | ~1 GB | 1 | Fuer Jarvis/RAG, nicht Video-Pipeline | -Realistisch nutzbar: 3-4 von 8 Karten. Rest idle lassen oder ausbauen (Strom sparen). -Das Rig wird NICHT 24/7 laufen — nur einschalten wenn Batch-Jobs anstehen. +Kernvorteil: Identischer CUDA-Stack wie ki-tower. Code einmal schreiben, ueberall deployen. +4 Karten = 4 parallele Jobs moeglich. Einschalten wenn Batch-Jobs anstehen. -### NICHT auf das Rig +### gpu-reserve (8x RX 6600 XT) — Reserve/Nebenrolle + +| Aufgabe | VRAM | Karten | Anmerkung | +|---|---|---|---| +| **Whisper** (whisper.cpp) | ~1.5 GB | 1-2 | Einziger gut getesteter AMD-Usecase | +| **CPU-Batch-Jobs** | — | — | Piper TTS, FFmpeg, Text-Vorverarbeitung | + +Realistisch nutzbar: 1-2 Karten fuer Whisper, Rest bringt kaum Mehrwert. +Empfehlung: Erst aufbauen wenn 3080-Rig voll ausgelastet. Alternative: verkaufen. + +### NICHT auf das AMD-Rig | Aufgabe | Warum nicht | |---|---| -| Qwen (jede Groesse) | PyTorch + ROCm + Textgen auf inoffizieller HW = Frust | -| FLUX.1-dev | >8 GB VRAM, CUDA-optimiert | -| SadTalker | CUDA-only in der Praxis | -| XTTS v2 | PyTorch + ROCm ungetestet — erst v2 wenn ROCm stabil | -| Irgendwas im Hauptpfad | Rig-Absturz darf Produktion nicht blockieren | +| SDXL / Bildgenerierung | ROCm inoffiziell, CUDA-Version laeuft auf 3080 besser | +| XTTS v2 | PyTorch + ROCm ungetestet, auf 3080 CUDA-nativ | +| SadTalker | CUDA-only | +| Qwen / LLMs | PyTorch + ROCm + Textgen = Frust auf inoffizieller HW | +| Irgendwas Produktionskritisches | Workaround-basierte HW darf Produktion nicht blockieren | + +## Hardware-Priorisierung: 3080 vs. 6600 XT + +**Klare Rangfolge:** + +| Rang | Hardware | Rolle | Begruendung | +|---|---|---|---| +| 1 | **RTX 3090** (ki-tower) | Chef | 24 GB VRAM, schwere Modelle, Orchestrierung | +| 2 | **4x RTX 3080** (gpu-worker) | Produktiver Worker | CUDA-nativ = selber Code wie ki-tower. 10 GB VRAM pro Karte reicht fuer SDXL, XTTS, SadTalker, Whisper. Kein Portierungsaufwand. | +| 3 | **8x RX 6600 XT** (gpu-reserve) | Reserve / ggf. verkaufen | ROCm inoffiziell. Jeder Usecase, den die 6600 XT kann, kann die 3080 besser + einfacher. Einziger Vorteil: Kartenanzahl fuer massiv-paralleles Whisper. Realistisch nicht gebraucht. | + +**Warum 4x 3080 > 8x 6600 XT:** +- Gleicher Software-Stack wie ki-tower (CUDA). Code einmal schreiben, ueberall deployen. +- 10 GB VRAM vs. 8 GB VRAM. Klingt wenig, macht bei SDXL/SadTalker den Unterschied. +- PyTorch + CUDA ist getestet, stabil, dokumentiert. ROCm auf Navi 23 ist Kampf. +- Weniger Karten = weniger Strom, weniger Kuehlung, weniger moegliche Fehlerquellen. +- 4 parallele CUDA-Worker decken den gesamten Bedarf ab. + +**Empfehlung AMD-Rig:** +Nicht aktiv aufbauen. Falls 3080-Rig irgendwann an Kapazitaetsgrenzen stoesst: 1-Karten-Test mit Whisper. +Wenn selbst das nicht lohnt: verkaufen und in NVMe-Storage oder RAM investieren. ## Worker-Architektur ``` -ki-tower (3090, Chef) gpu-worker (RX 6600 XT, Arbeiter) -┌─────────────────────────┐ ┌──────────────────────────────┐ -│ Orchestrator (Python) │ │ Debian 12 + Docker + ROCm │ +ki-tower (3090, Chef) gpu-worker (4x 3080, Worker) gpu-reserve (RX 6600 XT) +┌─────────────────────────┐ ┌──────────────────────────────┐ ┌──────────────────┐ +│ Orchestrator (Python) │ │ Debian 12 + Docker + CUDA │ │ Reserve/Whisper │ │ ├── Job Queue (SQLite) │ Tailscale │ │ -│ ├── /api/submit-job │◄────────────►│ GPU #0: whisper-worker :8501 │ -│ ├── /api/job-status │ │ GPU #1: upscale-worker :8502 │ -│ └── /api/get-result │ │ GPU #2: sdxl-worker :8503 │ -│ │ │ (GPU #3-7: idle/aus) │ +│ ├── /api/submit-job │◄────────────►│ GPU #0: sdxl-worker :8501 │ │ Whisper :8601 │ +│ ├── /api/job-status │ │ GPU #1: xtts-worker :8502 │ │ CPU-Batch :8602 │ +│ └── /api/get-result │ Tailscale │ GPU #2: sadtalker :8503 │ │ (nur bei Bedarf)│ +│ │ │ GPU #3: whisper/embed :8504 │ └──────────────────┘ │ Qwen 14B (vLLM) :8401 │ │ │ -│ FLUX.1 (ComfyUI):8402 │ │ piper-tts (CPU) :8504 │ -│ FFmpeg (lokal) │ └──────────────────────────────┘ -└─────────────────────────┘ +│ FLUX.1 (ComfyUI):8402 │ │ 10 GB VRAM pro Karte │ +│ FFmpeg (lokal) │ │ CUDA-nativ, kein Workaround │ +└─────────────────────────┘ └──────────────────────────────┘ ``` Prinzipien: @@ -181,10 +223,11 @@ Erfolgskriterium v1: Ein 10-Minuten-Video komplett lokal produziert. | Feature | Abhaengigkeit | |---|---| -| **XTTS v2** statt Piper | Auf ki-tower (3090), bessere Stimme | -| **SadTalker Avatar** | Auf ki-tower, optional pro Video | -| **GPU-Worker-Rig** | ROCm 1-Karten-Test muss positiv sein | +| **XTTS v2** statt Piper | Auf ki-tower (3090) oder 3080-Worker | +| **SadTalker Avatar** | Auf 3080-Worker (6 GB VRAM reicht) | +| **3080 Worker-Rig** | Aufbau parallel zu v1, CUDA-Stack identisch | | **Python-Orchestrator** | Erst manuell verstehen, dann automatisieren | +| **SDXL-Batch auf 3080** | Nebenbilder parallel generieren | | **Qwen 32B** statt 14B | Nur wenn 14B-Skripte nachweislich zu schwach | ## v3+ — Spaeter @@ -220,23 +263,23 @@ PHASE 4 — Polieren + erstes echtes Video (Woche 6) ├── Erstes Video auf YouTube hochladen └── Ergebnis: "v1 steht und produziert" -PHASE 5 — RX 6600 XT 1-Karten-Test (Woche 7-8) -├── Eine Karte in Testrechner -├── Debian + ROCm + whisper.cpp + Real-ESRGAN testen -├── Go/No-Go Entscheidung fuer Rig-Aufbau -└── Ergebnis: "Weiss ob das Rig sich lohnt" +PHASE 5 — 3080-Rig Aufbau (Woche 7-8, parallel moeglich) +├── Debian 12 + NVIDIA-Treiber + CUDA + Docker (selber Stack wie ki-tower) +├── SDXL-Worker, Whisper-Worker, XTTS-Worker aufsetzen +├── Tailscale + Job-API anbinden +└── Ergebnis: "4 parallele CUDA-Worker laufen" -PHASE 6 — Rig-Integration (nur wenn Phase 5 positiv) -├── Rig aufbauen (3-4 Karten, Debian + Docker + ROCm) -├── Whisper-Worker + Upscale-Worker aufsetzen -├── In Pipeline einbinden via Tailscale -└── Ergebnis: "Nebenjobs laufen parallel auf dem Rig" - -PHASE 7 — v2 Features (nach stabiler Produktion) -├── XTTS v2 auf ki-tower (bessere Stimme) -├── SadTalker Avatar (optional pro Video) +PHASE 6 — v2 Features (nach stabiler Produktion) +├── XTTS v2 auf 3080-Worker (bessere Stimme, Batch) +├── SadTalker Avatar auf 3080-Worker ├── Python-Orchestrator (automatische Verkettung) -└── Ergebnis: "Semi-automatische Videoproduktion" +└── Ergebnis: "Semi-automatische Videoproduktion mit Worker-Pool" + +PHASE 7 — AMD-Rig Entscheidung (optional, spaeter) +├── Bewertung ob 3080-Rig Kapazitaet reicht +├── Falls nicht: 1-Karten-Test mit RX 6600 XT + Whisper +├── Falls ja: AMD-Rig verkaufen, Erloese in Storage investieren +└── Ergebnis: "Klare Entscheidung ueber AMD-Hardware" ``` ## Entscheidungen (getroffen) @@ -244,12 +287,13 @@ PHASE 7 — v2 Features (nach stabiler Produktion) | Frage | Entscheidung | Begruendung | |---|---|---| | OS ki-tower | **Debian 12** | Einfacher fuer GPU, Docker, kein Hypervisor-Overhead | -| OS gpu-worker | **Debian 12** | GPU-Passthrough in Proxmox auf AMD = Kampf | +| OS gpu-worker | **Debian 12** | Identisch mit ki-tower, CUDA-nativ, kein Sonderweg | +| Worker-Rig | **4x RTX 3080** | CUDA-nativ > 8x RX 6600 XT mit ROCm-Workarounds | | LLM-Modell | **Qwen 14B** (Default) | 12 GB VRAM, laesst Platz. 32B nur als Upgrade. | | LLM-Server | **vLLM** | Schneller als llama.cpp bei Batch, Model-Unloading | | Bildgenerierung | **ComfyUI + FLUX.1-dev** | Flexibel, Workflow-basiert, gute Qualitaet | | TTS v1 | **Piper TTS** (CPU) | Kein GPU-Verbrauch, sofort einsatzbereit | -| TTS v2 | **XTTS v2** (3090) | Voice-Cloning, natuerlichere Stimme | +| TTS v2 | **XTTS v2** (3090 oder 3080) | Voice-Cloning, natuerlichere Stimme. 4 GB VRAM, passt auf 3080. | | Avatar | **Nicht in v1** | Nice-to-have, nicht Kernprodukt | | Job-Queue | **SQLite** | Ein User, kein Redis/RabbitMQ noetig | | Netzwerk | **Tailscale** | Verbindet ki-tower + gpu-worker, fertig | @@ -258,11 +302,11 @@ PHASE 7 — v2 Features (nach stabiler Produktion) | # | Risiko | Wahrscheinlichkeit | Impact | Mitigation | |---|---|---|---|---| -| 1 | **ROCm auf RX 6600 XT instabil** | Hoch | Mittel | 1-Karten-Test VOR Rig-Aufbau. Fallback: alles auf 3090. | +| 1 | **ROCm auf RX 6600 XT instabil** | Hoch | **Niedrig** | Betrifft nur Reserve-Rig. 3080-Worker ist CUDA-nativ. | | 2 | **Piper TTS deutsch zu robotisch** | Mittel | Hoch | Testen. Wenn zu schlecht: OpenAI TTS als Bruecke (~0.50 EUR/Video). XTTS in v2. | | 3 | **VRAM-Tetris auf 3090** | Mittel | Mittel | 14B statt 32B. Sequentiell. vLLM Model-Unloading. | | 4 | **Pipeline wird zu komplex vor v1** | Hoch | Hoch | v1 brutal einfach. Bash-Scripts, keine Frameworks. | -| 5 | **Stromkosten Rig vs. Nutzen** | Mittel | Niedrig | Nur 3-4 Karten bestuecken. Rig nur bei Batch-Jobs einschalten. | +| 5 | **Stromkosten Rig vs. Nutzen** | Mittel | Niedrig | 3080-Rig nur bei Batch-Jobs einschalten. AMD-Rig im Zweifel verkaufen. | ## Kosten-Schaetzung