Download PROGRESSO_gameprod.md from AdwolfCzar/minih33-smoothloopv3: direct link, hf CLI and curl.
- Browser
- Download file 5.82 kB
-
https://huggingface.co/AdwolfCzar/minih33-smoothloopv3/resolve/main/PROGRESSO_gameprod.md
- Command line
-
hf download hf://AdwolfCzar/minih33-smoothloopv3/PROGRESSO_gameprod.md
-
curl -L -o PROGRESSO_gameprod.md https://huggingface.co/AdwolfCzar/minih33-smoothloopv3/resolve/main/PROGRESSO_gameprod.md
gameprod — diário de bordo (LoRA MiniMax H3, assets de jogo)
Início: 2026-09-20. Sucede o smoothloopv3 na mesma instância (Vast 51594339, RTX 5090).
Disco: overlay 250 GB, NÃO é volume persistente. Tudo que importa vai para o HF.
Decisões fixadas
- Trainer: mesmo pin
ede9ed9f(fork AkaneTendo25/musubi-tuner, branch minimax-h3). - Receita: idêntica à v3 do smoothloopv3 (rank/alpha 32, LR 5e-5, AdamW8bit, guidance 4/sigma/normalized, jitter 0.2, swap 32, SDPA, convrot int8, AdaLN 16, fused qk/rope).
- Modo:
fl2va(first-last), como o run anterior. - HF:
AdwolfCzar/minih33-gameprod, público + gated manual. --no-comfyé o padrão (ver PROGRESSO_smoothloopv3.md, descobertas 38-40): usar sempre o checkpoint nativo, sem sufixo.
O dataset
Mega UNBnWLCR, 37.069 arquivos / 4,15 GB. Baixado sem _inspect/_logs/_registry
(QA, 13.727 arquivos): 23.342 arquivos, 3,10 GB, 0 erros, 8m37s a ~5,5 MB/s.
- 6.422 vídeos (5.973 mp4 + 226 gif + 223 webm) em 722 packs de assets (pokemon_g1..g9, rpgmaker_spriteface, fx_gigapack, approved_r34, vfx, ...).
- 5.638 sidecars
.txtcom metadata estruturada: duração, resolução, fundo, e a lista de animações com timestamps e contagem de repetições. É exatamente o que o perfilgame_productionconsome via{{existing_caption}}. - Área: p10 0,279 / mediana 0,364 / p90 0,588 / máx 10,1 MP.
- Duração: p10 5,00 / mediana 7,68 / p75 10,00 / máx 156 s.
- fps: 5.643 a 24; 779 NÃO estão a 24 (10, 12.5, 100, 8.333 fps).
Descobertas
| # | Achado |
|---|---|
| 1 | O dataset já vinha majoritariamente normalizado (24 fps, 5–12 s). Os limites batem com o perfil smoothloop_min124 que criei em setembro — já passou por um captioner convert. Economizou a etapa de conversão. |
| 2 | Listar pasta do Mega: para nós de ARQUIVO a chave do atributo é a XOR-dobrada de 32 bytes (file_key()), não nk[:16] como nos nós de pasta. Usar nk[:16] num arquivo faz 100% dos nomes falharem a decifrar. |
| 3 | frame_extraction = "full" pega os primeiros F frames (F = maior valor do grid 17k+5 ≤ min(max_frames, frames_do_video)), crop_pos=0. Não é o vídeo inteiro. |
| 4 | Por isso é obrigatório cortar ANTES de captionar. Caption escrita sobre 8,3 s com treino vendo 3 s promete animações que não existem. Pior aqui: o sidecar traz timestamps autoritativos. Solução: corte + nota prefixada no sidecar avisando o recorte. |
| 5 | Custo por step: tokens ≈ 0,00689 × duração_s × área_px. Medido no dataset inteiro: 384×384 → 7.827 tokens (0,99× do smoothloopv3); 640×640 "480p" → 19.030 (2,42×). 480p e duração inteira são mutuamente exclusivos. |
| 6 | Relatório seção 7.1 contradiz a premissa dos 5 s: "a faixa de 5–15 s não é um mínimo obrigatório de duração de todo exemplo de treino". O grid aceita 56/73/90/107 frames. |
| 7 | Frames disponíveis têm que sair da duração × 24, não do nb_frames da fonte — senão os 779 vídeos a 10/12,5 fps são subestimados e caem num bucket curto errado. |
| 8 | O container não tem sqlite3 CLI. O state do captioner (.captioner.sqlite) só é legível via Python. Monitor que dependia do CLI ficava mudo. |
| 9 | Contar *.txt no diretório não mede progresso de caption: os sidecars de metadata já são .txt. Usar a tabela items do sqlite. |
Desenho das views (escada inversa, seção 7.2 do relatório)
Área maior ⇄ clipe mais curto, para manter T_latente × tokens espaciais constante.
Com bucket_no_upscale = true as dimensões são orçamento, não esticamento.
| view | orçamento | frames | duração | n | tokens |
|---|---|---|---|---|---|
| v384 | 448×448 (0,20 MP) | 141 | 5,88 s | 1.750 | 7.665 |
| v480 | 640×640 (0,41 MP) | 73 | 3,04 s | 2.750 | 8.783 |
| v780 | 896×896 (0,80 MP) | 56 | 2,33 s | 500 | 13.163 |
Média ponderada 8.828 tokens/item vs 7.869 do smoothloopv3 (11,84 s/it) → estimativa ~13 s/it, a ser medida pela sonda antes do cache completo.
Atribuição por área da fonte (ordenada), seed 42, seleção round-robin entre os 722
packs para diversidade. Manifesto congelado em manifest_views.csv — o cache é
indexado por stem, então re-sortear invalidaria o cache (lição do smoothloopv3).
Estimativas de custo
- Cache: ~74 GB, ~8,8 h de GPU (latentes VAE-bound ~5,6 s/item + TE ~1 h).
- Treino: 5.000 steps × ~13 s ≈ 18 h.
- Total ~27 h. O run anterior foi 2,9 h de cache + 19,7 h de treino = 22,6 h. Se o objetivo for bater o tempo total, o botão é o número de steps.
Pipeline (scripts)
| script | o que faz |
|---|---|
gp_analyze.py |
ffprobe de todos os vídeos → manifest_source.csv |
gp_assign_views.py |
seleciona N, atribui view, corta com ffmpeg, prefixa nota no sidecar |
gp_make_tomls.py |
TOMLs de cache/treino a partir da MESMA definição de views |
gp_build_probe.py |
conjunto-sonda por hardlink + TOMLs da sonda |
gp_pick_samples.py |
escolhe 3 clipes (1 por view, packs distintos, SAR 1:1) |
gp_prepare_samples.py |
primeiro frame → PNG na grade de 32, sample_prompts.txt |
gp_chain.sh |
encadeia tudo destacado; GPU nunca ociosa |
gp_caption_progress.py |
progresso do captioning via sqlite |
Armadilhas reconfirmadas
nohup ... &dentro do Bash tool morre junto com a chamada. Usarsetsid.pgrep -f/pkill -fcom padrão que casa a própria linha de comando: auto-detecção. Sempre PID exato viakill -0./workspace/.envnão existia nesta máquina; recriado com as 3 chaves.- O script de treino aborta se o repo do trainer tiver edições locais — o patch do
convert_lora.pyfoi movido para/workspace/scripts/convert_lora_h3fix.py.