Upload PROGRESSO.md with huggingface_hub
Browse files- PROGRESSO.md +256 -1
PROGRESSO.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
| 1 |
# smoothloopv3 — diário de bordo (LoRA MiniMax H3)
|
| 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
Início: 2026-09-19. GPU: RTX 5090 32 GB (driver 595.91.07, CUDA 13.2).
|
| 4 |
Disco: overlay 350 GB, **NÃO é volume persistente** (`df` mostra overlay em /workspace).
|
| 5 |
→ Tudo que importa precisa ir para o HF. Recycle/destroy apaga tudo.
|
|
@@ -119,7 +127,25 @@ Disco: overlay 350 GB, **NÃO é volume persistente** (`df` mostra overlay em /w
|
|
| 119 |
| | | e apaga states locais antigos (mantem 2). Samples do step 0 ja no HF. |
|
| 120 |
|
| 121 |
## Bugs / incidentes
|
| 122 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
|
| 124 |
## Progresso
|
| 125 |
- [x] Ler relatório + NOTES + handoff
|
|
@@ -133,3 +159,232 @@ Disco: overlay 350 GB, **NÃO é volume persistente** (`df` mostra overlay em /w
|
|
| 133 |
- [x] Smoke test + resume (leg1 10 steps + leg2 resume ate 15, ambos exit 0)
|
| 134 |
- [x] Cache completo (21,5 GB)
|
| 135 |
- [x] Treino lancado + uploader em tempo real ativo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
# smoothloopv3 — diário de bordo (LoRA MiniMax H3)
|
| 2 |
|
| 3 |
+
> **ESTADO EM 2026-09-19 09:5x** — pipeline de dados 100% concluído e espelhado no HF.
|
| 4 |
+
> Treino lançado às 08:4x, morreu no step 191 às 09:38 por **falha de host** (a GPU sumiu do
|
| 5 |
+
> barramento; `actual_status: offline` na Vast). Aguardando a GPU voltar, com watchdog armado
|
| 6 |
+
> para relançar sozinho. Nenhum checkpoint tinha sido salvo ainda.
|
| 7 |
+
>
|
| 8 |
+
> **Para retomar em outra máquina: vá direto para a seção "RETOMADA EM OUTRA MÁQUINA" no fim
|
| 9 |
+
> deste arquivo.** Não refaça captions, conversão, views nem cache — tudo está pronto no HF.
|
| 10 |
+
|
| 11 |
Início: 2026-09-19. GPU: RTX 5090 32 GB (driver 595.91.07, CUDA 13.2).
|
| 12 |
Disco: overlay 350 GB, **NÃO é volume persistente** (`df` mostra overlay em /workspace).
|
| 13 |
→ Tudo que importa precisa ir para o HF. Recycle/destroy apaga tudo.
|
|
|
|
| 127 |
| | | e apaga states locais antigos (mantem 2). Samples do step 0 ja no HF. |
|
| 128 |
|
| 129 |
## Bugs / incidentes
|
| 130 |
+
|
| 131 |
+
### 2026-09-19 09:38 — GPU caiu do barramento durante o treino (NAO resolvido de dentro)
|
| 132 |
+
Treino morreu no **step 191** (11,59 s/it, loss 0,0795). `nvidia-smi` passou a responder
|
| 133 |
+
`Unable to determine the device handle for GPU0: 0000:81:00.0: Unknown Error / No devices were found`.
|
| 134 |
+
Os device nodes (`/dev/nvidia*`) continuavam existindo, mas o driver nao falava mais com a placa.
|
| 135 |
+
`vastai show instance` reportou `actual_status: offline` com `cur_state: running` — ou seja, a
|
| 136 |
+
propria Vast perdeu contato: **falha de host, nao do treino** (nao houve OOM, nao houve erro CUDA).
|
| 137 |
+
|
| 138 |
+
Num container sem privilegios nao da para resetar a GPU, recarregar o modulo nem re-escanear o
|
| 139 |
+
barramento PCI. Unica recuperacao seria reiniciar a instancia pela API da Vast (preserva o
|
| 140 |
+
filesystem do container); o usuario optou por esperar, dizendo que isso as vezes acontece e volta.
|
| 141 |
+
|
| 142 |
+
Perda: 191 steps (~37 min). Nenhum checkpoint existia ainda porque o primeiro save era no 500.
|
| 143 |
+
**Acao tomada:** `SAVE_EVERY` baixado de 500 para **250** no relancamento, e um watchdog
|
| 144 |
+
(`/workspace/scripts/watch_gpu_relaunch.sh`) que testa a GPU a cada 60 s, exige 45 s de
|
| 145 |
+
estabilidade e relanca o treino sozinho.
|
| 146 |
+
|
| 147 |
+
Nada mais foi perdido: dataset, captions, cache (22 GB) e samples sobreviveram, e desde entao
|
| 148 |
+
estao todos espelhados no HF.
|
| 149 |
|
| 150 |
## Progresso
|
| 151 |
- [x] Ler relatório + NOTES + handoff
|
|
|
|
| 159 |
- [x] Smoke test + resume (leg1 10 steps + leg2 resume ate 15, ambos exit 0)
|
| 160 |
- [x] Cache completo (21,5 GB)
|
| 161 |
- [x] Treino lancado + uploader em tempo real ativo
|
| 162 |
+
|
| 163 |
+
---
|
| 164 |
+
|
| 165 |
+
# RETOMADA EM OUTRA MÁQUINA — runbook completo
|
| 166 |
+
|
| 167 |
+
Escrito em 2026-09-19 depois que a GPU desta instância caiu do barramento no step 191.
|
| 168 |
+
**Tudo que está abaixo já foi decidido, executado e verificado. Não refaça nada disso.**
|
| 169 |
+
|
| 170 |
+
## 0. O que NÃO precisa ser refeito
|
| 171 |
+
|
| 172 |
+
| Etapa | Situação | Onde está |
|
| 173 |
+
|---|---|---|
|
| 174 |
+
| Download do dataset do Mega | pronto | zip no HF |
|
| 175 |
+
| Normalização 24 fps CFR + tiling de loop + max_edge 1280 | pronto | dentro do zip |
|
| 176 |
+
| Correção dos 70 clipes <124f | pronto | dentro do zip |
|
| 177 |
+
| Captions H3 (1752/1752, $0,65) | pronto | dentro do zip, sidecar `.txt` |
|
| 178 |
+
| Escolha das views e quotas | **decidida** | `manifest_views.csv` |
|
| 179 |
+
| TOMLs de cache e treino | prontos | `configs/` no repo do modelo |
|
| 180 |
+
| 3 imagens de sample + prompts + seeds | prontos | `samples/` no repo do modelo |
|
| 181 |
+
| Cache de latentes + text encoder (22 GB, ~2,5 h de GPU) | pronto | tar no repo do dataset |
|
| 182 |
+
| Smoke test (10 steps + resume até 15) | passou | — |
|
| 183 |
+
|
| 184 |
+
Só falta **rodar o treino**.
|
| 185 |
+
|
| 186 |
+
## 1. Artefatos no Hugging Face
|
| 187 |
+
|
| 188 |
+
Repo do dataset — `AdwolfCzar/smoothloopv3_dataset` (público, gated manual):
|
| 189 |
+
- `smoothloopv3_dataset.zip` (3,88 GB) — 1752 mp4 já convertidos + 1752 `.txt` com as captions H3
|
| 190 |
+
- `cache/cache_smoothloopv3_pin_ede9ed9f.tar` (22,81 GB) — latentes + TE, **amarrado ao pin `ede9ed9f`**
|
| 191 |
+
- `tags_danbooru_originais.tar.gz` — tags originais que o captioner sobrescreveu (não são usadas no treino)
|
| 192 |
+
|
| 193 |
+
Repo do modelo — `AdwolfCzar/minih33-smoothloopv3` (público, gated manual):
|
| 194 |
+
- `configs/` — TOMLs, scripts de cache/treino, uploader, scripts auxiliares
|
| 195 |
+
- `samples/previews_20260919/` — 3 PNGs, `sample_prompts.txt`, `sample_manifest.json`
|
| 196 |
+
- `manifest_views.csv` — **congela qual clipe vai para qual view** (crítico, ver §4)
|
| 197 |
+
- `PROGRESSO.md` — este diário
|
| 198 |
+
|
| 199 |
+
## 2. Ambiente exato que funcionou
|
| 200 |
+
|
| 201 |
+
```
|
| 202 |
+
GPU RTX 5090 32 GB (sm_120 / cc 12.0), driver 595.91.07, CUDA 13.2
|
| 203 |
+
python 3.12.14 em /venv/main
|
| 204 |
+
torch 2.10.0+cu130 <- NÃO troque; instale com --index-url .../whl/cu130
|
| 205 |
+
transformers 4.57.6 accelerate 1.6.0 safetensors 0.4.5 hf_hub 0.34.3
|
| 206 |
+
av 14.0.1 bitsandbytes 0.50.2 diffusers 0.32.1 einops 0.7.0
|
| 207 |
+
tensorboard 2.21.0 toml 0.10.2 voluptuous 0.15.2 hf-xet 1.6.0
|
| 208 |
+
ffmpeg 6.1.1
|
| 209 |
+
trainer AkaneTendo25/musubi-tuner, branch minimax-h3, commit ede9ed9f769d605db32d37e32243d4c979f9eee3
|
| 210 |
+
```
|
| 211 |
+
|
| 212 |
+
Se `/venv/main` der `Permission denied` ao instalar: `sudo chown -R claude:claude /venv/main`.
|
| 213 |
+
|
| 214 |
+
## 3. Montagem da máquina nova
|
| 215 |
+
|
| 216 |
+
```bash
|
| 217 |
+
export HF_TOKEN=<token da conta AdwolfCzar>
|
| 218 |
+
source /venv/main/bin/activate
|
| 219 |
+
sudo chown -R claude:claude /venv/main # se necessário
|
| 220 |
+
|
| 221 |
+
# 3.1 trainer no pin auditado
|
| 222 |
+
git clone https://github.com/AkaneTendo25/musubi-tuner.git /workspace/projects/musubi-tuner
|
| 223 |
+
cd /workspace/projects/musubi-tuner
|
| 224 |
+
git fetch origin minimax-h3 && git checkout ede9ed9f769d605db32d37e32243d4c979f9eee3
|
| 225 |
+
uv pip install torch==2.10.0 torchvision --index-url https://download.pytorch.org/whl/cu130
|
| 226 |
+
uv pip install -e . && uv pip install tensorboard
|
| 227 |
+
|
| 228 |
+
# 3.2 pesos (~88 GB, xet é rápido) — SÓ estes 4 arquivos
|
| 229 |
+
python - <<'PY'
|
| 230 |
+
from huggingface_hub import hf_hub_download
|
| 231 |
+
for f in ["diffusion_models/minimax_h3_fl2va_bf16.safetensors",
|
| 232 |
+
"text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors",
|
| 233 |
+
"vae/minimax_h3_video_vae_fp16.safetensors",
|
| 234 |
+
"vae/minimax_h3_audio_vae_fp32.safetensors"]:
|
| 235 |
+
hf_hub_download("Comfy-Org/MiniMax-H3", f, local_dir="/workspace/models/MiniMax-H3")
|
| 236 |
+
PY
|
| 237 |
+
|
| 238 |
+
# 3.3 dataset pronto (NÃO recaptionar, NÃO reconverter)
|
| 239 |
+
python - <<'PY'
|
| 240 |
+
from huggingface_hub import hf_hub_download
|
| 241 |
+
hf_hub_download("AdwolfCzar/smoothloopv3_dataset","smoothloopv3_dataset.zip",
|
| 242 |
+
repo_type="dataset", local_dir="/workspace/datasets")
|
| 243 |
+
PY
|
| 244 |
+
cd /workspace/datasets && unzip -q smoothloopv3_dataset.zip # cria smoothloopv3_work/{1..6}
|
| 245 |
+
|
| 246 |
+
# 3.4 cache pronto (pula ~2,5 h de GPU)
|
| 247 |
+
python - <<'PY'
|
| 248 |
+
from huggingface_hub import hf_hub_download
|
| 249 |
+
hf_hub_download("AdwolfCzar/smoothloopv3_dataset","cache/cache_smoothloopv3_pin_ede9ed9f.tar",
|
| 250 |
+
repo_type="dataset", local_dir="/workspace/dl")
|
| 251 |
+
PY
|
| 252 |
+
mkdir -p /workspace/cache && tar xf /workspace/dl/cache/cache_smoothloopv3_pin_ede9ed9f.tar -C /workspace/cache
|
| 253 |
+
|
| 254 |
+
# 3.5 configs, scripts e samples
|
| 255 |
+
python - <<'PY'
|
| 256 |
+
from huggingface_hub import snapshot_download
|
| 257 |
+
snapshot_download("AdwolfCzar/minih33-smoothloopv3",
|
| 258 |
+
allow_patterns=["configs/*","samples/*","manifest_views.csv"],
|
| 259 |
+
local_dir="/workspace/restore")
|
| 260 |
+
PY
|
| 261 |
+
mkdir -p /workspace/projects/h3_smoothloopv3/{configs,output,samples} /workspace/scripts /workspace/notes
|
| 262 |
+
cp /workspace/restore/configs/*.toml /workspace/projects/h3_smoothloopv3/configs/
|
| 263 |
+
cp /workspace/restore/configs/*.sh /workspace/restore/configs/*.py /workspace/scripts/
|
| 264 |
+
cp /workspace/restore/manifest_views.csv /workspace/notes/
|
| 265 |
+
cp -r /workspace/restore/samples/previews_20260919 /workspace/projects/h3_smoothloopv3/samples/
|
| 266 |
+
chmod +x /workspace/scripts/*.sh
|
| 267 |
+
```
|
| 268 |
+
|
| 269 |
+
**Os caminhos acima não são sugestão, são requisito.** `sample_prompts.txt` e os TOMLs guardam
|
| 270 |
+
caminhos absolutos; se a árvore mudar, o sampling não acha as PNGs e o trainer não acha o cache.
|
| 271 |
+
|
| 272 |
+
## 4. Religar as views — o passo que não pode ser improvisado
|
| 273 |
+
|
| 274 |
+
Os arquivos de cache são indexados pelo **stem** do item (`1_8xsg9eu5sz`). Rodar
|
| 275 |
+
`assign_views.py` de novo re-sorteia a distribuição e **invalida os 22 GB de cache**.
|
| 276 |
+
Use sempre o manifesto congelado:
|
| 277 |
+
|
| 278 |
+
```bash
|
| 279 |
+
python /workspace/scripts/rebuild_views_from_manifest.py \
|
| 280 |
+
--manifest /workspace/notes/manifest_views.csv \
|
| 281 |
+
--dataset /workspace/datasets/smoothloopv3_work \
|
| 282 |
+
--out /workspace/datasets/views_smoothloopv3
|
| 283 |
+
```
|
| 284 |
+
|
| 285 |
+
Deve imprimir exatamente `v288: 963 · v384: 491 · v480: 298` (1752 itens) e sair com código 0.
|
| 286 |
+
O script falha de propósito se algum arquivo faltar, porque nesse caso o cache não casaria.
|
| 287 |
+
Verificado nesta máquina: a reconstrução pelo manifesto bate 100% com as views originais
|
| 288 |
+
(hash idêntico das três listas).
|
| 289 |
+
|
| 290 |
+
## 5. Lançar o treino
|
| 291 |
+
|
| 292 |
+
```bash
|
| 293 |
+
cd /workspace
|
| 294 |
+
DATASET_CONFIG=/workspace/projects/h3_smoothloopv3/configs/dataset_smoothloopv3_train.toml \
|
| 295 |
+
SAMPLE_PROMPTS=/workspace/projects/h3_smoothloopv3/samples/previews_20260919/sample_prompts.txt \
|
| 296 |
+
RUN_NAME=minih33_smoothloopv3 MAX_STEPS=6000 SAVE_EVERY=250 SAMPLE_EVERY=500 \
|
| 297 |
+
nohup bash /workspace/scripts/train_smoothloopv3.sh > /workspace/logs/train.log 2>&1 &
|
| 298 |
+
|
| 299 |
+
# uploader em tempo real (obrigatório: /workspace não é volume, some no recycle)
|
| 300 |
+
nohup python /workspace/scripts/hf_uploader.py \
|
| 301 |
+
--output-dir /workspace/projects/h3_smoothloopv3/output/minih33_smoothloopv3 \
|
| 302 |
+
--repo AdwolfCzar/minih33-smoothloopv3 --interval 60 --keep-states 2 \
|
| 303 |
+
> /workspace/logs/uploader.log 2>&1 &
|
| 304 |
+
```
|
| 305 |
+
|
| 306 |
+
Se já existir checkpoint no HF e você quiser continuar de onde parou, baixe o `*-state`
|
| 307 |
+
correspondente para dentro do `output/` e acrescente `RESUME=1`.
|
| 308 |
+
|
| 309 |
+
Parada graciosa a qualquer momento (salva e encerra no próximo optimizer step):
|
| 310 |
+
```bash
|
| 311 |
+
touch /workspace/projects/h3_smoothloopv3/output/minih33_smoothloopv3/save-and-stop.flag
|
| 312 |
+
```
|
| 313 |
+
Salvar sem parar: `touch .../save-now.flag`.
|
| 314 |
+
|
| 315 |
+
## 6. Configuração, e por que ela é assim
|
| 316 |
+
|
| 317 |
+
| Item | Valor | Motivo |
|
| 318 |
+
|---|---|---|
|
| 319 |
+
| Base | FL2VA BF16 → ConvRot INT8 na carga, fwd BF16 | pipeline histórico do projeto |
|
| 320 |
+
| Condicionamento | `--task i2va`, `target_modalities = ["video"]` | preserva o experimento anterior; áudio é ignorado |
|
| 321 |
+
| LoRA | dim 32 / alpha 32 | histórico v3 |
|
| 322 |
+
| Otimizador / LR | AdamW8bit, **5e-5**, constant_with_warmup 50 | v3 revisou 1e-4 → 5e-5 para H3 destilado |
|
| 323 |
+
| Batch / acumulação | 1 / 1 | obrigatório no H3 |
|
| 324 |
+
| Guidance | escala 4, schedule `sigma`, form `normalized` | receita v3 |
|
| 325 |
+
| Jitter de densidade espacial | 0,2 | receita v3 |
|
| 326 |
+
| Base preservation | **0 (desligada)** | decisão explícita do v3 |
|
| 327 |
+
| Atenção / precisão | SDPA / BF16 | flash_attn quebra o ConvRot INT8 |
|
| 328 |
+
| AdaLN | rank 16 | histórico |
|
| 329 |
+
| Block swap | 32, h2d_only, ring 2, pinned | OOM histórico no step 4502 com swap 24 |
|
| 330 |
+
| Views | 3 áreas (512×288 / 640×384 / 832×480), quotas 55/28/17, **todas `max_frames = 124`** | ver abaixo |
|
| 331 |
+
| Samples | 3 previews, seeds 42/43/44, 124f, 20 passos, ~480p | ver abaixo |
|
| 332 |
+
|
| 333 |
+
**Por que todas as views em 124 frames:** decisão do Cesar de respeitar o mínimo do H3 de 5 s.
|
| 334 |
+
No grid `17k+5` o primeiro valor acima de 5 s é **124** (5,17 s), então nenhuma view pode ficar
|
| 335 |
+
abaixo disso. Isso descartou a receita do smoothloop histórico (que usava f124/90/73) e a escada
|
| 336 |
+
do videovibe (f192/141/107). 124 também é exatamente o regime de geração alvo. Multi-resolução
|
| 337 |
+
foi mantida porque o RoPE do H3 é normalizado por área — treinar numa área só deixa a LoRA
|
| 338 |
+
frágil fora dela. Como a duração deixou de diferenciar as views, a área é estratificada pela
|
| 339 |
+
resolução da fonte (as fontes mais densas ancoram a área maior), como o `assign_buckets.py`
|
| 340 |
+
histórico fazia.
|
| 341 |
+
|
| 342 |
+
**Samples:** 3 clipes reais do próprio dataset, **primeiro frame** como condição (a caption H3
|
| 343 |
+
ancora `<Picture 1>` em 0.00 s, então um frame do meio contradiria o texto). Cobrem paisagem /
|
| 344 |
+
quase-quadrado / retrato e os tipos smooth / slow / static. Seeds, dimensões e passos são fixos
|
| 345 |
+
entre checkpoints de propósito: é o que isola a evolução da LoRA de mudanças na avaliação.
|
| 346 |
+
São clipes do treino, então servem para **acompanhamento visual**, não como validação independente.
|
| 347 |
+
|
| 348 |
+
## 7. Números medidos nesta máquina
|
| 349 |
+
|
| 350 |
+
| | |
|
| 351 |
+
|---|---|
|
| 352 |
+
| Velocidade | **11,6–12,4 s/it** (smoke nos itens mais pesados: ~10 s/it) |
|
| 353 |
+
| Loss | 0,0996 → 0,0795 nos primeiros 191 steps |
|
| 354 |
+
| VRAM | **25,1 GB / 32 GB** durante os steps; pico 15,1 GiB no sampling |
|
| 355 |
+
| Sampling | ~113 s por preview (101,6 s denoising + 11,7 s decode) → ~6 min por evento de 3 |
|
| 356 |
+
| Cache | latentes ~2,5 h (GPU 100%, VAE-bound) + TE ~20 min = 21,5 GB |
|
| 357 |
+
| 1 época | 1752 steps ≈ 5,7 h |
|
| 358 |
+
|
| 359 |
+
Âncoras históricas para comparação: quick (124f multi-res) 12,8 s/it · v2 10,15 · smoothloop 8,7 ·
|
| 360 |
+
videovibe 12,4. Estamos na faixa esperada.
|
| 361 |
+
|
| 362 |
+
**Orçamento de steps:** 6000 é teto, não alvo. O histórico parou o smoothloop em 2100 (966 clipes)
|
| 363 |
+
e o jiggle em 2500 (1232 clipes) — ambos ~2 épocas. Com 1752 clipes, 2 épocas ≈ 3500 steps.
|
| 364 |
+
A decisão é visual, comparando os previews de seed fixa entre checkpoints, não pela loss.
|
| 365 |
+
|
| 366 |
+
## 8. Armadilhas desta máquina que valem para a próxima
|
| 367 |
+
|
| 368 |
+
1. **`pgrep -f` / `pkill -f` casam com o próprio shell** e matam a sessão. Aconteceu 2×. Grave o
|
| 369 |
+
PID num arquivo ao lançar (`echo $! > /workspace/logs/x.pid`) e mate por PID.
|
| 370 |
+
2. **`captioner` consome stdin.** Dentro de `while read -r f` ele come caracteres do caminho lido
|
| 371 |
+
(viravam `orkspace/...`). Use `</dev/null` no comando interno.
|
| 372 |
+
3. **`--save_last_n_steps_state` NÃO existe no pin `ede9ed9f`.** O template do handoff de 18/09
|
| 373 |
+
usa esse argumento e falharia. A única retenção é `--save_last_n_checkpoints N`, que apaga
|
| 374 |
+
LoRAs antigos junto com os states e quebraria o checkpoint picking — por isso **não passamos
|
| 375 |
+
retenção nenhuma**; o uploader sobe tudo e limpa só os states locais (mantém 2).
|
| 376 |
+
4. **Jupyter cria `.ipynb_checkpoints` dentro de `output/`** quando alguém navega pela pasta. O
|
| 377 |
+
uploader já ignora esse padrão; se escrever outro, ignore também.
|
| 378 |
+
5. **`/workspace` é overlay, não volume.** Confirme com
|
| 379 |
+
`vast-capabilities | jq '.instance.workspace_is_volume'`. Se for `false`, o upload em tempo
|
| 380 |
+
real não é conforto, é requisito.
|
| 381 |
+
6. **Não rode ComfyUI junto com o treino.** O gargalo é VRAM (25,1 de 32 GB), não disco.
|
| 382 |
+
7. **Falha de GPU não é OOM.** Se `nvidia-smi` responder `Unable to determine the device handle
|
| 383 |
+
... No devices were found`, a GPU caiu do barramento — não dá para consertar de dentro de um
|
| 384 |
+
container sem privilégios. Confira `vastai show instance $CONTAINER_ID`: `actual_status:
|
| 385 |
+
offline` confirma que é host. Foi o que matou o run no step 191.
|
| 386 |
+
8. **captionkreator precisa do fix de fps baixo** se for recaptionar qualquer coisa: fontes de
|
| 387 |
+
4–16 fps falhavam a conversão com `duration changed from X to Y` (~11% deste dataset).
|
| 388 |
+
Branch `fix/low-fps-duration`, commit `8c6f813` em `github.com/adbrasi/captionkreator`
|
| 389 |
+
(local, sem push até agora). Duas causas: `-stream_loop` com uma cópia a menos do que o `-t`
|
| 390 |
+
precisa, e tolerância medida no fps do alvo em vez do da fonte.
|