Upload training/NOTES.md with huggingface_hub
Browse files- training/NOTES.md +40 -1
training/NOTES.md
CHANGED
|
@@ -6,6 +6,45 @@ Fase 1 ("quick"): 2 épocas nos ~3.9k clipes do `mega_curated` para validar o pi
|
|
| 6 |
Fase 2: treino com o dataset completo (`loopcut_000..005`, ~49 GB) ou o que couber.
|
| 7 |
Foco de uso: image2video (primeiro frame → vídeo). Task de treino: `i2va`.
|
| 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
## Ambiente (medido em 2026-08-10)
|
| 10 |
- Vast.ai, RTX 5090 32 GB (sm_120), 124 GB RAM, 32 vCPU, disco 600 GB (overlay, **não persistente**)
|
| 11 |
- Python 3.12.13 em `/venv/main`, torch 2.10.0+cu130 (combinação validada pela comunidade)
|
|
@@ -96,7 +135,7 @@ folga de VRAM protege contra freeze near-OOM, e o custo do swap no H3 é ~5% —
|
|
| 96 |
no início dos steps (dimensionado pelos itens mais pesados nos smoke buckets)
|
| 97 |
- Sampling 124f: 35s (512×288) / 62s (640×384) / 108s (832×480) de denoising por vídeo;
|
| 98 |
pico 16,7 GiB; ~3,5 min por evento de sampling (a cada 500 steps → overhead ~1%)
|
| 99 |
-
- 05:42 lançado tmux `h3quick`: cache completo (3.885 itens
|
| 100 |
- Log: /workspace/logs/quick_pipeline.log
|
| 101 |
|
| 102 |
## Medições de cache (10/08 06:00-06:40)
|
|
|
|
| 6 |
Fase 2: treino com o dataset completo (`loopcut_000..005`, ~49 GB) ou o que couber.
|
| 7 |
Foco de uso: image2video (primeiro frame → vídeo). Task de treino: `i2va`.
|
| 8 |
|
| 9 |
+
## RUNBOOK — caminho das pedras (para o próximo agente/treino)
|
| 10 |
+
|
| 11 |
+
Sequência exata que funcionou, com os custos medidos. Scripts em `scripts/`, configs em `configs/`.
|
| 12 |
+
|
| 13 |
+
1. **Ambiente**: usar /venv/main (torch 2.10.0+cu130 — NÃO troque torch; nightly quebra CUBLAS).
|
| 14 |
+
`uv pip install -e .` no fork Akane commit c4b84fa. `uv pip install tensorboard` (não vem).
|
| 15 |
+
Se o venv der Permission denied: `sudo chown -R claude:claude /venv/main`.
|
| 16 |
+
2. **Downloads** (hf CLI com xet, muito rápido): pesos Comfy-Org/MiniMax-H3 (DiT bf16 66 GB +
|
| 17 |
+
TE nvfp4 15 GB + 2 VAEs) e dataset. TE bf16 (48 GB) é desnecessário — nvfp4 funciona em
|
| 18 |
+
Blackwell para cache E sampling do trainer.
|
| 19 |
+
3. **Análise quantitativa do dataset ANTES de tudo** (ffprobe em paralelo): fps real, SAR/DAR
|
| 20 |
+
(DVDs 720×480 são anamórficos!), nb_frames, áudio. Sem isso o treino sai distorcido/errado.
|
| 21 |
+
4. **Normalização** (`normalize_videos.py`, ~30 jobs, ~15 min/4k clipes): 24 fps CFR + setsar=1
|
| 22 |
+
+ scale por SAR. Nunca treinar fonte com fps misto (uncanny motion) ou pixel anamórfico.
|
| 23 |
+
5. **Extensão de loops** (`extend_loops.py`): tiling do ciclo até escada 124/90/73/56
|
| 24 |
+
(canvas do H3 começa em ~124f; treinar 22f não é validado por ninguém). Loops = tiling limpo.
|
| 25 |
+
6. **Buckets multi-res** (`assign_buckets.py`): 3 áreas (512×288 / 640×384 / 832×480, 55/28/17),
|
| 26 |
+
symlinks, sem upscale. Multi-res é OBRIGATÓRIA no H3 (RoPE por área) + jitter 0.2 no treino.
|
| 27 |
+
7. **Smoke test** (`smoke_train.sh`): 10 steps + sampling + checkpoint + resume (leg 2 com
|
| 28 |
+
--max_train_steps 15 valida autoresume de verdade). Incluir os itens MAIS PESADOS por bucket.
|
| 29 |
+
8. **Cache** (`cache_quick.sh`): batch 24 + workers 16, SERIAL (latents → TE). Medido na 5090:
|
| 30 |
+
latents ~4,5 h + TE ~1,5 h para 3.885 itens ≈ 31,7 GB. NUNCA rodar TE em paralelo com latents
|
| 31 |
+
na mesma GPU (medido: piora ambos). Batch >24 não ajuda (VAE é o gargalo, GPU 100%).
|
| 32 |
+
9. **Treino** (`train_quick.sh` via tmux + tee log): receita anti-destilação completa (ver seção
|
| 33 |
+
Receita). ~13 s/it na 5090 no regime 124f multi-res. Sampling+checkpoint a cada 500 steps.
|
| 34 |
+
10. **Uploader HF** (`hf_uploader.py`) ativo DESDE o smoke; repo gated manual, nunca "minimax" no nome.
|
| 35 |
+
11. **Monitorar**: loss média SOBE com preservation ligada — é normal, olhar val/loss de vídeo;
|
| 36 |
+
watchdog de stall (freeze silencioso near-OOM = step 10x mais lento, não crasha).
|
| 37 |
+
|
| 38 |
+
**Armadilhas que já custaram tempo aqui:**
|
| 39 |
+
- ffmpeg pesado em paralelo durante CARGA do DiT → 6× mais lento (carga é CPU-bound); durante
|
| 40 |
+
steps de treino, ok.
|
| 41 |
+
- Jupyter cria `.ipynb_checkpoints` root-owned dentro de output/ quando o usuário navega —
|
| 42 |
+
`rm -rf` falha; usar `sudo rm` ou ignorar.
|
| 43 |
+
- Nunca `pkill -f` com padrão que casa com o próprio comando composto; matar por PID exato.
|
| 44 |
+
- Nunca apagar cache com processo de treino/cache vivo apontando para ele.
|
| 45 |
+
- Cache TOML separado do train TOML (batch alto só no cache; treino EXIGE batch_size=1).
|
| 46 |
+
- `--save_last_n_steps_state 1500` limita states em disco (cada state = 859 MB).
|
| 47 |
+
|
| 48 |
## Ambiente (medido em 2026-08-10)
|
| 49 |
- Vast.ai, RTX 5090 32 GB (sm_120), 124 GB RAM, 32 vCPU, disco 600 GB (overlay, **não persistente**)
|
| 50 |
- Python 3.12.13 em `/venv/main`, torch 2.10.0+cu130 (combinação validada pela comunidade)
|
|
|
|
| 135 |
no início dos steps (dimensionado pelos itens mais pesados nos smoke buckets)
|
| 136 |
- Sampling 124f: 35s (512×288) / 62s (640×384) / 108s (832×480) de denoising por vídeo;
|
| 137 |
pico 16,7 GiB; ~3,5 min por evento de sampling (a cada 500 steps → overhead ~1%)
|
| 138 |
+
- 05:42 lançado tmux `h3quick`: cache completo (3.885 itens; batch final 24) → treino 2 épocas encadeado
|
| 139 |
- Log: /workspace/logs/quick_pipeline.log
|
| 140 |
|
| 141 |
## Medições de cache (10/08 06:00-06:40)
|