# KI-Video — Lokale Produktionspipeline **Stand: 16.03.2026** ## Ziel Lokale, praktisch nutzbare Produktionsstrecke fuer YouTube-Videos im Commentary-/Erklaerstil. Kein Spielzeug-Demo, kein Forschungsprojekt: Thema rein → fertiges Video raus. ## Videoformat | Eigenschaft | Beschreibung | |---|---| | **Typ** | Commentary, Erklaervideos, Meinungs-/Analyseformate | | **Stil** | Sprecherstimme + Bilder + leichte Bewegung + Einblendungen | | **Optional** | Sprechender Avatar (SadTalker) — erst ab v2 | | **Nicht** | Realfilm, Hollywood-VFX, aufwendige 3D-Animation | ## Pipeline ``` 1. Themenfindung / Recherche (manuell) │ 2. Skript-Erstellung → Qwen 14B (ki-tower) │ 3. Bildgenerierung → FLUX.1-dev (ki-tower) │ 4. Voiceover → Piper TTS (CPU, ki-tower) │ 5. Compositing → FFmpeg + Ken-Burns (CPU, ki-tower) │ 6. Encoding → FFmpeg + NVENC (ki-tower) │ 7. Export → fertiges MP4 fuer YouTube ``` ## Hardware ### ki-tower — Hauptmaschine (Muldenstein, geplant) | Eigenschaft | Wert | |---|---| | **CPU** | AMD Ryzen 7 7700 (8C/16T) | | **RAM** | 64 GB DDR5 | | **GPU** | NVIDIA RTX 3090 (24 GB VRAM) | | **Storage** | 1 TB NVMe | | **OS** | Debian 12 + Docker + CUDA | | **Logischer Name** | ki-tower | | **Rolle** | Chef. Alle schweren Aufgaben, Orchestrierung, Hauptpfad. | ### 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) | | **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 ### ki-tower (RTX 3090) — Hauptpfad | Aufgabe | Modell | VRAM | Anmerkung | |---|---|---|---| | **Skripte** | Qwen 2.5 14B (Q5) | ~12 GB | Default. 32B nur wenn 14B nachweislich nicht reicht. | | **Hauptbilder** | FLUX.1-dev | ~12 GB | Visueller Kern der Videos | | **TTS (v1)** | Piper TTS | CPU-only | Fuer v1 ausreichend, kein VRAM-Verbrauch | | **TTS (v2)** | XTTS v2 | ~4 GB | Upgrade in v2, bessere Stimme, Voice-Cloning | | **Avatar (v2)** | SadTalker | ~6 GB | Optional, erst ab v2 | | **Compositing** | FFmpeg | CPU | Ken-Burns, Ueberblendungen, Overlays | | **Encoding** | FFmpeg + NVENC | ~1 GB | Hardware-beschleunigt | | **Orchestrator** | Python | CPU | Steuert alle Schritte | 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 (4x RTX 3080) — Produktive Worker-Jobs | Aufgabe | VRAM | Karten | Anmerkung | |---|---|---|---| | **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 | Kernvorteil: Identischer CUDA-Stack wie ki-tower. Code einmal schreiben, ueberall deployen. 4 Karten = 4 parallele Jobs moeglich. Einschalten wenn Batch-Jobs anstehen. ### 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 | |---|---| | 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 (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: 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 │ │ 10 GB VRAM pro Karte │ │ FFmpeg (lokal) │ │ CUDA-nativ, kein Workaround │ └─────────────────────────┘ └──────────────────────────────┘ ``` Prinzipien: - 1 Container = 1 GPU = 1 Aufgabe. Feste Zuordnung, kein dynamisches Scheduling. - SQLite als Job-Queue. Ein User, nicht tausend. Eine Datei reicht. - HTTP-APIs pro Worker. Orchestrator ruft per REST auf, pollt Status. - Kein Service-Mesh, kein Kubernetes. Tailscale verbindet die zwei Maschinen. ## VRAM-Budget (ki-tower, sequentiell) ``` Schritt 1: Skript → Qwen 14B → ~12 GB VRAM Schritt 2: Bilder → FLUX.1-dev → ~12 GB VRAM Schritt 3: TTS → Piper (CPU) → 0 GB VRAM Schritt 4: Compositing → FFmpeg (CPU) → 0 GB VRAM Schritt 5: Encoding → NVENC → ~1 GB VRAM ``` Mit Qwen 14B statt 32B: kein VRAM-Flush zwischen Schritt 1 und 2 noetig. Geschaetzte Produktionszeit: ~1-2 Stunden pro 10-Min-Video. ## Nicht-Ziele - Kein Forschungsprojekt - Keine Bastelwiese ohne Ergebnis - Keine Dauerabhaengigkeit von Cloud-Abos - Keine Architektur die nur auf dem Papier funktioniert - Kein sofortiger Avatar als Kernbestandteil - Keine ueberkomplizierte Proxmox-/VM-Orgie auf dem Rig - Kein Schoenreden von AMD-ROCm-Limitierungen ## v1 — Minimal Viable Pipeline (nur ki-tower) v1 beweist: die Pipeline funktioniert. Kein Rig, kein Avatar, keine Automatisierung. ``` v1 Pipeline (alles auf ki-tower): Thema (manuell) │ ▼ Qwen 14B → Skript (vLLM, :8401) │ ▼ FLUX.1-dev → 20-30 Bilder (ComfyUI, :8402) │ ▼ Piper TTS → Voiceover (CPU, :8504) │ ▼ FFmpeg → Ken-Burns + Audio + Overlays → fertiges MP4 ``` Was v1 NICHT hat: - Keinen Avatar - Kein GPU-Worker-Rig - Keine automatische Orchestrierung (Schritte manuell anstossen) - Keinen YouTube-Upload - Keine XTTS v2 (Piper reicht fuer v1) Erfolgskriterium v1: Ein 10-Minuten-Video komplett lokal produziert. ## v2 — Erweiterungen (nach funktionierender v1) | Feature | Abhaengigkeit | |---|---| | **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 | Feature | Anmerkung | |---|---| | YouTube-Upload-Automation | Manueller Upload = 2 Klicks. Lohnt erst bei >3 Videos/Woche | | Multi-User / geklonte Instanzen | Erst ein funktionierendes Produkt haben | | Prompt-Templates Bibliothek | Waechst organisch mit der Produktion | | Research-Hub-Integration | Themenvorschlaege automatisch aus RSS/News | ## Umsetzungsreihenfolge ``` PHASE 1 — ki-tower Grundinstallation (Woche 1-2) ├── Debian 12 + NVIDIA-Treiber + CUDA 12 + Docker ├── vLLM + Qwen 2.5 14B → erster Skript-Test └── Ergebnis: "Ich kann lokal ein Skript generieren" PHASE 2 — Bildgenerierung (Woche 3-4) ├── ComfyUI + FLUX.1-dev in Docker ├── Workflow: Skript-Szene → Bildprompt → Bild └── Ergebnis: "Ich kann passende Bilder zu einem Skript erzeugen" PHASE 3 — TTS + Assembly (Woche 5) ├── Piper TTS in Docker (CPU) ├── FFmpeg-Pipeline: Bilder + Audio → Video mit Ken-Burns └── Ergebnis: "Erstes komplettes Video, lokal produziert" PHASE 4 — Polieren + erstes echtes Video (Woche 6) ├── Prompt-Templates fuer Skripte verfeinern ├── FFmpeg-Presets fuer verschiedene Szenentypen ├── Erstes Video auf YouTube hochladen └── Ergebnis: "v1 steht und produziert" 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 — 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 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) | Frage | Entscheidung | Begruendung | |---|---|---| | OS ki-tower | **Debian 12** | Einfacher fuer GPU, Docker, kein Hypervisor-Overhead | | 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 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 | ## Risiken | # | Risiko | Wahrscheinlichkeit | Impact | Mitigation | |---|---|---|---|---| | 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 | 3080-Rig nur bei Batch-Jobs einschalten. AMD-Rig im Zweifel verkaufen. | ## Kosten-Schaetzung | Posten | Einmalig | Monatlich | |---|---|---| | ki-tower Hardware | vorhanden | — | | gpu-worker Hardware | vorhanden | — | | Strom ki-tower (24/7) | — | ~30-40 EUR | | Strom gpu-worker (bei Bedarf) | — | ~10-30 EUR (nicht 24/7) | | Cloud-APIs (Fallback TTS) | — | ~5-10 EUR | | **Gesamt** | 0 EUR | ~45-80 EUR | Zum Vergleich: Vollstaendig cloud-basierte Videoproduktion (Runway, ElevenLabs, GPT-4) = 100-300 EUR/Monat.