← Back

name: video-gen description: Use when the user asks about video generation, YouTube "Past & Possible" channel, Vast.ai GPU rental, ComfyUI workflows, Flux Schnell or Flux Dev image generation, LTX 2.3 video generation, upscale pipeline, video-gen dashboard, runner.sh, generate.py, batch generation, prompts for video clips, or anything related to the video-gen-vast project at /home/app/video-gen-vast/.

Video Gen Skill (Past & Possible)

Генерация видео для YouTube канала "Past & Possible" через Vast.ai GPU. Pipeline: Qwen-Image-2512 fp8 (30 steps, 1280x720) → LTX 2.3 2-pass I2V (640x360 → upscale+refine 1280x720) + audio 2-phase PHASED mode: all images (без SageAttention) → restart ComfyUI → all videos (с SageAttention) 11 total steps (8+3), distilled LoRA, ~2.3x быстрее старого 25-step pipeline Target: ~$1 per 10 clips on RTX 4090

Расположение проекта

/home/app/video-gen-vast/

Архитектура

Файл / Папка Назначение
generate.py Основной скрипт генерации (Python, ComfyUI API)
runner.sh Автономный раннер: SSH -> Vast.ai -> setup -> generate -> destroy
setup-server.sh Setup ComfyUI + модели на Vast.ai (8 шагов, ~50GB)
run-generate.sh Аварийный скрипт: tunnel + generate (если runner упал)
monitor-setup.sh Мониторинг setup стадий с remote лога
start-comfyui.sh Запуск ComfyUI сервера
runner.log Лог раннера (НЕ коммитить)
batch.json Текущий batch config (НЕ коммитить)
prompts/ Файлы с промптами (img | vid формат, по строке на клип). Макс 3 пары (6 файлов), авто-очистка при upload
workflows/ ComfyUI workflows (JSON)
dashboard/ Express dashboard (port 3230)
output/ Сгенерированные видео (по батчам)
brain/decisions/log.md Лог архитектурных решений

Pipeline

Phased mode (дефолт, 2 фазы)

Phase 1: все картинки (Qwen-Image-2512 fp8 в VRAM, 30 steps, БЕЗ SageAttention — fp8 overflow!) → restart ComfyUI с --use-sage-attention Phase 2: все видео 2-pass I2V + audio (LTX 2.3 fp8 + Gemma 3 12B fp4 + distilled LoRA)

Resume/Recovery (2026-05-27)

🔴 Resume = "ComfyUI not reachable" → инстанс мёртв (1 Jun 2026)

🔴 "Connection reset by peer" при upload — сетевой сбой (1 Jun 2026)

🔴 "no kernel image is available" — torch/GPU arch mismatch (1 Jun 2026)

🔴 OOM в видео-фазе (30 May 2026)

🔴 Resume через дашборд СТИРАЕТ картинки (30 May 2026)

Ускоритель вместо SageAttention (sage 1.0.6 = битая заглушка)

Combined mode (--combined, legacy)

IMG→VIDEO→UPSCALE в одном ComfyUI queue. flux_ltx_combined.json. ~140с/пару — модели перезагружаются каждый клип.

GPU варианты (dashboard: 10 типов, топ-20)

GPU $/hr ~с/клип Примечание
RTX 5090 ~$1.00 ~60s Самый быстрый
RTX 4090 ~$0.40 ~90s Основной
RTX 3090 ~$0.16 ~140s Бюджетный, тот же 24GB
L40S ~$0.50 ~95s Датацентр

Refine pass (Phase 3, отдельный workflow)

Текущий подход (проверенный)

❌ Отвергнутые подходы

Критические правила

  1. НИКОГДА --highvram — OOM: Flux(17G)+LTX(22G)+Gemma(12G)=51G > 32G VRAM
  2. </dev/null в SSH nohup — иначе SSH зависает навсегда
  3. mkdir -p /workspace перед SCP — nvidia/cuda не имеет /workspace
  4. encodeURIComponent() для кириллических batch names в URL

Quality Settings (текущие)

Параметр Значение
Video Steps 20
Video CFG 5
Video STG 2
Sampler euler
Negative prompt blurry, low quality, distorted, watermark, jittery, morphing, melting, disappearing objects, flickering, artifacts, deformed, glitch, static noise
Video resolution 768x432 (16:9)
Image model Qwen-Image-2512 fp8 (default, 30 steps, SageAttention fp16 patch)
Image resolution 1280x720 (settings.json)
Image VAE ae.safetensors (fp16, отдельный от fp8 checkpoint — убирает мыльность)
Frame rate 24 fps
Video length 97 frames (~4 sec)
LoRA style none (тестируем базовое качество)

Quality Improvement Plan (2026-05-20)

Фидбек Бороды + ресёрч LTX 2.3 доки.

# Что Статус Описание
1 Latent upscale Unified workflow: sampling → upscale → refine → decode
2 FPS fix 24fps generation = 24fps output
3 STG guider STGGuiderNode (cfg=3.5, stg=1.2, rescale=0.7)
4 Negative prompt Safety + quality terms в generate.py
5 LoRA Стили через dashboard settings
6 Refine denoise 10 steps, denoise=0.4 после upscale (Node 32)

Доступные ноды LTX (из доки ComfyUI-LTXVideo)

Ключевые технические решения

Dashboard

Функционал

API Endpoints (server.js)

Method Path Auth Описание
POST /api/login No JWT login (поле user)
GET /api/status Yes Phase, progress, GPU, cost, elapsed, ETA, currentStage
GET /api/logs?lines=N Yes Последние N строк runner.log
GET /api/instances Yes Vast.ai active instances
GET /api/output?batch=name Yes Список generated files (по batch)
GET /api/batches Yes Список всех батчей + текущий
GET /api/balance Yes Vast.ai credit баланс
GET /api/prompts Yes Список prompt файлов
GET /api/prompts/:file Yes Содержимое prompt файла
POST /api/prompts/upload Yes Загрузка prompt файла (кириллица ОК)
GET /api/offers?clips=N Yes Multi-GPU offers + est time/cost
GET /api/download/:filename Yes Скачать один файл
GET /api/download-all?batch=name Yes Скачать все upscaled как tar.gz
POST /api/start Yes Rent GPU + start pipeline
POST /api/stop Yes Stop runner (GPU stays)
POST /api/rerun Yes Re-run on same GPU (different settings/prompts)
POST /api/resume Yes Resume interrupted batch (auto-detect phase)
GET /api/batch-state Yes batch_state.json — resume progress
POST /api/destroy Yes Destroy GPU instance
PUT /api/settings Yes Update generation settings
GET /api/styles Yes Available LoRA styles

Формат промптов

Файл .txt в prompts/, одна строка на клип:

IMAGE_PROMPT | VIDEO_PROMPT

Пример:

A panoramic view of Manhattan in the 1920s, sepia tones | Camera slowly pans across the skyline as smoke rises from factories

Стоимость (реальные данные)

GPU Цена Setup 18 clips Total
RTX 4090 ~$0.76/hr ~10 мин ~30 мин (99s/clip) ~$0.50
RTX 5090 ~$1.05/hr ~10 мин ~26 мин (87s/clip) ~$0.63

Завершённые батчи

Батч Клипов GPU Время Стоимость
america-history 36 RTX 4090 59 мин ~$0.75
jungle cities 18 RTX 5090 26 мин ~$0.63

Решённые баги (21)

  1. python vs python3 — Docker image без python
  2. _comment в workflow JSON — ComfyUI не принимает
  3. ComfyUI порт не экспонирован — SSH tunnel
  4. LTX 2.3 CLIP=None — LTXAVTextEncoderLoader
  5. Gemma + LTX + Flux = OOM — убрать --highvram
  6. LTXVSpatioTemporalTiledVAEDecode tensor mismatch — LTXVTiledVAEDecode
  7. per_batch=16 потеря кадров — per_batch=256
  8. Upscale model wrong dir — latent_upscale_models/
  9. step_upscale видео не на сервере — upload_file()
  10. Dashboard Download nginx path — API endpoint
  11. PM2 restart video-gen — рестартил старый run-batch.sh
  12. runner.sh Stage 4 — хардкод america-history
  13. progress.percent — деление на 0
  14. $TUNNEL_PID не инициализирована
  15. elapsed time — timezone mismatch
  16. Phase stuck on "booting" — error checks BEFORE booting
  17. Cost overcount — freeze таймер на done/error
  18. SSH disconnect during setup — ServerAliveInterval=30
  19. /workspace/ не существует на nvidia/cuda — mkdir -p
  20. SSH nohup зависает — </dev/null &
  21. Download кириллица — encodeURIComponent()

Завершённые батчи (обновлено)

Батч Клипов GPU Время Стоимость Pipeline
america-history 36 RTX 4090 59 мин ~$0.75 base (no refine)
jungle cities 18 RTX 5090 26 мин ~$0.63 base (no refine)
картинки_merged 10 RTX 5090 50 мин ~$1.20 +refine +SageAttn

Dashboard Research Tab (2026-05-29)

Вкладка Research для анализа YouTube-каналов и поиска контента.

Flow: Channel Analysis

  1. Вбить URL канала → кнопка "Smart Search" (или Enter)
  2. Автоматически: определяет нишу → ищет trending → ищет конкурентов
  3. Результат: Channel Analysis карточка + Trending Videos + Competitors

Ключевые механики

Грабли Research

Dashboard live data

Ключевые грабли

  1. SSH tunnel = primary (direct IP виснет — curl ifconfig.me без таймаута)
  2. runner.log bloat (wget progress bars → 104MB → dashboard 35s, 772MB RAM)
  3. generation.log vs runner.log рассинхрон (grep >> дубликаты)
  4. download-all искал upscaled, а новый pipeline сохраняет video.mp4
  5. Combined workflow: download_output хватал PNG (SaveImage) вместо MP4 (VHS_VideoCombine) → битые файлы. Fix: gifs > images priority
  6. JS "\n" is truthy → .trim() check
  7. PM2 --update-env обязателен при изменении ecosystem env vars
  8. ComfyUI sqlalchemy — новые версии требуют sqlalchemy (asset management)
  9. CUDA 12.8 + default PyTorch = crash. 3-tier: cu121/cu124/default
  10. ssh|grep $? = grep exit code, не ssh. Fix: set -o pipefail
  11. fp8 VAE = мыльные картинки. Fix: отдельный ae.safetensors (fp16) через VAELoader
  12. Workflow ссылается на удалённую модель → HTTP 400 на все prompts
  13. SageAttention fp8 CUDA kernel на sm89 (RTX 4090) = чёрные картинки с Qwen fp8. Fix: patch core.py fp8→fp16
  14. VHS_LoadVideo combo dropdown валидация = 400 на uploaded файлы. Fix: VHS_LoadVideoPath (STRING input)
  15. OOM между фазами (Qwen→LTX, 24GB VRAM). Fix: free_vram() POST /free API
  16. Docker Hub rate limit на vast.ai. Fix: toomanyrequests|rate limit в grep детектор runner.sh

Что осталось