diff --git a/fastvideo2/evidence/goldens/train-vsa_dmd2-main/manifest.json b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/manifest.json new file mode 100644 index 000000000..a7a504a0a --- /dev/null +++ b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/manifest.json @@ -0,0 +1,57 @@ +{ + "fastvideo_commit": "c459a1897899ffcec3be7765534d81000b9bb9c1", + "mode": "vsa_dmd2", + "seed": 42, + "gen_losses": [ + 0.0, + 0.07294216752052307, + 0.0, + 0.19375097751617432, + 0.0 + ], + "fake_losses": [ + 0.1656690537929535, + 0.12868499755859375, + 0.49331870675086975, + 0.9273568987846375, + 0.1123386099934578 + ], + "torch": "2.12.0+cu130", + "gpu": "NVIDIA GB200", + "config": "dmd2 legacy: interval2 gw3.5 lr2e-6 shift8 steps[1000,757,522] simulate nlt4 1gpu", + "self_noise_runs": { + "gen": [ + [ + 0.0, + 0.07294763624668121, + 0.0, + 0.20360884070396423, + 0.0 + ], + [ + 0.0, + 0.07294216752052307, + 0.0, + 0.19375097751617432, + 0.0 + ] + ], + "fake": [ + [ + 0.1656690537929535, + 0.12860842049121857, + 0.5084404349327087, + 0.8788818120956421, + 0.11553914099931717 + ], + [ + 0.1656690537929535, + 0.12868499755859375, + 0.49331870675086975, + 0.9273568987846375, + 0.1123386099934578 + ] + ] + }, + "self_noise_max": 0.04847508668899536 +} diff --git a/fastvideo2/evidence/goldens/train-vsa_dmd2-main/params.npz b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/params.npz new file mode 100644 index 000000000..f6f217965 Binary files /dev/null and b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/params.npz differ diff --git a/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step0.npz b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step0.npz new file mode 100644 index 000000000..ebd8a743d Binary files /dev/null and b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step0.npz differ diff --git a/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step1.npz b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step1.npz new file mode 100644 index 000000000..b27ed060c Binary files /dev/null and b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step1.npz differ diff --git a/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step2.npz b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step2.npz new file mode 100644 index 000000000..3acb819d6 Binary files /dev/null and b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step2.npz differ diff --git a/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step3.npz b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step3.npz new file mode 100644 index 000000000..f711307d7 Binary files /dev/null and b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step3.npz differ diff --git a/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step4.npz b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step4.npz new file mode 100644 index 000000000..6a58ced36 Binary files /dev/null and b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/step4.npz differ diff --git a/fastvideo2/evidence/goldens/train-vsa_dmd2-main/steps.json b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/steps.json new file mode 100644 index 000000000..532ab68eb --- /dev/null +++ b/fastvideo2/evidence/goldens/train-vsa_dmd2-main/steps.json @@ -0,0 +1,59 @@ +[ + { + "targets": [ + 2 + ], + "dmd_t": null, + "vsa_sparsity": 0.8, + "critic_t": 737.588623046875, + "gen_loss": 0.0, + "fake_loss": 0.1656690537929535, + "x0_student_hash": "49474e4e6201fcb6" + }, + { + "targets": [ + 1, + 0 + ], + "dmd_t": 386.4990234375, + "vsa_sparsity": 0.8, + "critic_t": 716.4179077148438, + "gen_loss": 0.07294216752052307, + "fake_loss": 0.12868499755859375, + "x0_student_hash": "afb6654472fdc388" + }, + { + "targets": [ + 2 + ], + "dmd_t": null, + "vsa_sparsity": 0.8, + "critic_t": 967.0870971679688, + "gen_loss": 0.0, + "fake_loss": 0.49331870675086975, + "x0_student_hash": "3e19f627f7a67079" + }, + { + "targets": [ + 0, + 1 + ], + "dmd_t": 662.4631958007812, + "vsa_sparsity": 0.8, + "critic_t": 980.0, + "gen_loss": 0.19375097751617432, + "fake_loss": 0.9273568987846375, + "x0_student_hash": "a5e00f1532646e2a" + }, + { + "targets": [ + 2 + ], + "dmd_t": null, + "vsa_sparsity": 0.8, + "critic_t": 456.45648193359375, + "gen_loss": 0.0, + "fake_loss": 0.1123386099934578, + "x0_student_hash": "9dc08f8928d30b94" + } +] diff --git a/fastvideo2/evidence/ledger.jsonl b/fastvideo2/evidence/ledger.jsonl index 0eee92f00..9c2715e1f 100644 --- a/fastvideo2/evidence/ledger.jsonl +++ b/fastvideo2/evidence/ledger.jsonl @@ -160,3 +160,4 @@ {"ts": "2026-07-23T11:47:02Z", "gate": "anchor.train-finetune-main", "status": "pass", "model_id": "wan2.1-t2v-1.3b", "card_digest": "7171d8729ae72ae4", "metrics": {"noisy.step0": 0.0, "pred.step0": 0.0, "loss.step0": 0.0, "gnorm.step0": 7.675588130950928e-05, "loss.step1": 5.221366882324219e-05, "gnorm.step1": 0.05505657196044922, "loss.step2": 0.0007446706295013428, "gnorm.step2": 0.006015121936798096, "loss.step3": 0.0025970935821533203, "gnorm.step3": 0.032111406326293945, "loss.step4": 0.0013115331530570984, "gnorm.step4": 0.0047234296798706055, "params.w0": 0.0, "params.w5": 0.00029868653199637143}, "tolerances": {"step0": 0.0, "later": "main self-noise band (see manifest)"}, "env": {"python": "3.12.13", "machine": "aarch64", "commit": "e14afd7", "torch": "2.12.0+cu130", "cuda": "13.0", "gpu": "NVIDIA GB200", "diffusers": "0.39.0", "transformers": "5.13.0", "attention": {"policy": "AUTO", "available": ["FLASH_ATTN", "SDPA"]}}, "detail": "goldens c459a1897"} {"ts": "2026-07-23T11:58:27Z", "gate": "anchor.train-vsa-main", "status": "pass", "model_id": "fastwan-t2v-1.3b", "card_digest": "0bd5c7771e10ce44", "metrics": {"noisy.step0": 0.0, "pred.step0": 0.0, "loss.step0": 0.0, "gnorm.step0": 7.104873657226562e-05, "loss.step1": 0.00040608644485473633, "gnorm.step1": 0.014156341552734375, "loss.step2": 5.901604890823364e-05, "gnorm.step2": 0.18469977378845215, "loss.step3": 0.08010447025299072, "gnorm.step3": 0.9372882843017578, "loss.step4": 0.005944937467575073, "gnorm.step4": 0.15396595001220703, "params.w0": 0.0, "params.w5": 0.0010486775342362664}, "tolerances": {"step0": 0.0, "later": "main self-noise band (see manifest)"}, "env": {"python": "3.12.13", "machine": "aarch64", "commit": "c73ccc7", "torch": "2.12.0+cu130", "cuda": "13.0", "gpu": "NVIDIA GB200", "diffusers": "0.39.0", "transformers": "5.13.0", "attention": {"policy": "AUTO", "available": ["FLASH_ATTN", "SDPA"]}}, "detail": "goldens c459a1897"} {"ts": "2026-07-23T12:41:59Z", "gate": "anchor.train-dmd2-main", "status": "pass", "model_id": "wan2.1-t2v-1.3b", "card_digest": "7171d8729ae72ae4", "metrics": {"x0.step0": 0.0, "fake.step0": 8.051283657550812e-06, "x0.step1": 0.0, "gen.step1": 4.5299530029296875e-06, "fake.step1": 1.3254117220640182e-05, "x0.step2": 1.0, "fake.step2": 2.8714537620544434e-05, "x0.step3": 1.0, "gen.step3": 0.0007560849189758301, "fake.step3": 1.97533518075943e-05, "x0.step4": 1.0, "fake.step4": 2.2767577320337296e-05, "params.w5_student": 8.810074752674709e-05, "params.w5_critic": 4.3383224253287114e-06}, "tolerances": {"x0.step0": 0.0, "later": "band"}, "env": {"python": "3.12.13", "machine": "aarch64", "commit": "a95f36e", "torch": "2.12.0+cu130", "cuda": "13.0", "gpu": "NVIDIA GB200", "diffusers": "0.39.0", "transformers": "5.13.0", "attention": {"policy": "AUTO", "available": ["FLASH_ATTN", "SDPA"]}}, "detail": "goldens c459a1897"} +{"ts": "2026-07-23T12:54:46Z", "gate": "anchor.train-vsa_dmd2-main", "status": "pass", "model_id": "fastwan-t2v-1.3b", "card_digest": "0bd5c7771e10ce44", "metrics": {"x0.step0": 0.0, "fake.step0": 0.0003465712070465088, "x0.step1": 0.0, "gen.step1": 6.683170795440674e-06, "fake.step1": 0.00270843505859375, "x0.step2": 1.0, "fake.step2": 0.010587543249130249, "x0.step3": 1.0, "gen.step3": 0.011355012655258179, "fake.step3": 0.02186185121536255, "x0.step4": 1.0, "fake.step4": 0.003451891243457794, "params.w5_student": 6.644270548064443e-05, "params.w5_critic": 0.00018422111178113666}, "tolerances": {"x0.step0": 0.0, "later": "band"}, "env": {"python": "3.12.13", "machine": "aarch64", "commit": "420ed38", "torch": "2.12.0+cu130", "cuda": "13.0", "gpu": "NVIDIA GB200", "diffusers": "0.39.0", "transformers": "5.13.0", "attention": {"policy": "AUTO", "available": ["FLASH_ATTN", "SDPA"]}}, "detail": "goldens c459a1897"} diff --git a/fastvideo2/evidence/train_numerics_report.md b/fastvideo2/evidence/train_numerics_report.md index 96a8ef6da..a76cad84b 100644 --- a/fastvideo2/evidence/train_numerics_report.md +++ b/fastvideo2/evidence/train_numerics_report.md @@ -82,3 +82,21 @@ loop's `dmd_inference_table` — training reuses inference definitions). Capture pins uncond embeds by encoding the canonical Wan negative prompt through main's own text stack (the recipe normally gets them via the validation path). + +## VSA+DMD2 sparse distillation — added 2026-07-23 + +Gate `anchor.train-vsa_dmd2-main`: PASS. The FastWan recipe composition: +VSA-built student on FastWan weights (deterministic gate projections), +DENSE-built scorers on the base checkpoint — discovered from main's own +loader rejecting gate keys for scorer roles: teacher/critic score via plain +flash, NOT sparsity-0 VSA (the train loop's "dense copy" metadata is ignored +by the flash impl). Student rollout runs sparsity 0.8. + +x0 rollout bitwise through the first student update; all gen/fake losses +within the measured band (main-vs-main drifts to 4.8e-2 at step3 under +sparse-student updates — an order noisier than dense DMD2's 7.2e-4); +param slices ~1e-4 (info). + +Deferred (documented): the shipped recipe random-initializes student gate +projections from the BASE checkpoint — an init-RNG parity gate for later, +same caveat as the VSA finetune gate.