AdwolfCzar commited on
Commit
df76dc7
·
verified ·
1 Parent(s): adae17f

Upload training/NOTES.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. training/NOTES.md +64 -0
training/NOTES.md ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # MiniMax H3 LoRA — anime loop i2v (projeto h3_loop)
2
+
3
+ ## Objetivo
4
+ LoRA de MiniMax H3 (FL2VA) no dataset `AdwolfCzar/anime_loop_2d_dataset_captioned_29-07`.
5
+ Fase 1 ("quick"): 2 épocas nos ~3.9k clipes do `mega_curated` para validar o pipeline completo.
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)
12
+ - Trainer: fork `AkaneTendo25/musubi-tuner`, branch `minimax-h3`, commit **c4b84fa** (pin do relatório 2026-08-10)
13
+ - Instalação: `uv pip install -e .` (torch não é tocado — extras cu130 não instalados)
14
+ - ffmpeg 6.1.1 do sistema
15
+
16
+ ## Pesos
17
+ `Comfy-Org/MiniMax-H3` → `/workspace/models/MiniMax-H3/`
18
+ - `diffusion_models/minimax_h3_fl2va_bf16.safetensors` (~66 GB; int8 convrot na carga)
19
+ - `text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors` (~15 GB; Blackwell OK)
20
+ - `vae/minimax_h3_video_vae_fp16.safetensors`, `vae/minimax_h3_audio_vae_fp32.safetensors`
21
+
22
+ ## Dataset — fatos medidos (mega_curated)
23
+ - 3.889 mp4 + 3.889 .txt (captions sidecar dentro do zip; jsonl tem 6.855 linhas, 2.966 com caption nula — os .txt do zip estão completos)
24
+ - **Áudio: nenhum clipe tem trilha** → `h3_target_mode = "video"` (sem audio VAE no cache, sequência menor)
25
+ - fps caótico: ~24 (2239), 25 (341), ~30 (182), centenas de variantes 22–29 (VFR/telecine)
26
+ - Resoluções: 720×480 anamórfico (SAR 853:720 e 186:157, ambos DAR ~16:9) ×1852; 1920×1080 ×1093; 1280×720 ×354; 704×396 ×245; 1270×720 ×104; 960×720 ×35; 640×480 ×7
27
+ - Frames pós-conversão 24fps, snap 17n+5: 22×1706, 39×875, 56×480, 73×199, 90×173, 107×114, 124×139; 4 itens < 22 frames (descartados)
28
+
29
+ ## Normalização (não-destrutiva)
30
+ `scripts/normalize_videos.py`: fonte `/workspace/datasets/mega_curated` (intocada) →
31
+ `/workspace/datasets/mega_24`: 24 fps CFR (`fps=24`), pixels quadrados (scale por SAR + `setsar=1`),
32
+ libx264 crf 15 preset fast, sem áudio. Clipes com <22 frames pós-conversão são pulados.
33
+
34
+ ## Buckets multi-resolução (obrigatório no H3 — RoPE normalizado por área)
35
+ Diretiva do usuário (10/08): resolução pequena/média, 1024×576 é alto demais.
36
+ `scripts/assign_buckets.py` (seed 42, sem upscale, estratificado por resolução de origem):
37
+ - `v288` [512×288] ×2138 (~55%) — movimento barato
38
+ - `v384` [640×384] ×1087 (~28%) — bucket principal
39
+ - `v480` [832×480] ×660 (~17%) — âncora de densidade média
40
+ (v576 descartado; caches v384/v480 de smoke reaproveitados, cache v576 removido)
41
+ Views por symlink em `/workspace/datasets/train_quick/`; manifest em `configs/bucket_manifest_quick.csv`.
42
+
43
+ ## Receita de treino (relatórios info/ de 09-10/08 + docs do fork)
44
+ - guidance 4 + schedule sigma + form normalized; preservation 0.02; spatial density jitter 0.2
45
+ - SEM adapter do Ostris; SDPA (flash_attn quebra int8 convrot); int8 convrot fwd bf16; AdaLN rank 16
46
+ - rank/alpha 32 (estilo amplo), LR 1e-4 AdamW8bit (recomendação do trainer), warmup 50
47
+ - batch físico 1 (obrigatório no H3), **gradient_accumulation = 1**
48
+ - 5090 32 GB: blocks_to_swap 24 h2d_only ring 2 pinned; PYTORCH_ALLOC_CONF=expandable_segments:True
49
+ - Sampling i2v durante treino: 3 primeiros-frames do próprio dataset + captions como estão (`--i`), TE nvfp4
50
+ - max_frames 73 na fase quick (mediana do dataset é 42 frames; fase 2 avalia 124)
51
+
52
+ ## Fase 2 — dimensionamento (medido)
53
+ - loopcut_000..005: **19.747 mp4** (~50 GB descomprimido), zero overlap de nomes com mega_curated
54
+ - Dataset completo fase 2 = loopcut (19.7k) + mega_curated (3.9k) ≈ 23,6k clipes
55
+
56
+ ## Log de execução
57
+ - 2026-08-10 04:1x: downloads iniciados (modelos ~86 GB, dataset completo ~52 GB) — xet, muito rápido
58
+ - 2026-08-10 04:2x: normalização 3.889 clipes lançada (30 jobs paralelos)
59
+
60
+ ## Incidentes
61
+ - 2026-08-10 04:47: smoke #1 (buckets antigos c/ v576) caiu no step 1 com FileNotFoundError — causa: remoção do cache v576 com o processo ainda vivo (erro operacional meu, não bug do trainer). Antes de cair validou: carga DiT bf16→int8 convrot (~2 min), sampling i2v 3/3 (pico 14,8 GiB), 1 step com loss 0.546 a 4,8 s/it. Smoke #2 relançado com buckets novos.
62
+
63
+ ## Pendências
64
+ - Nome do repositório HF para publicação dos checkpoints (workflow exige nome dado pelo usuário)