PLAN.md + homelab.conf + MASTER_INDEX: 4x RTX 3080 als primaerer Worker, AMD-Rig als Reserve

This commit is contained in:
root 2026-03-16 11:35:07 +07:00
parent d9323423f3
commit b389552c8b
3 changed files with 116 additions and 60 deletions

View file

@ -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

View file

@ -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

View file

@ -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