mdrieux's picture
CIFAR EDM2: measured FID-50k for run B (100k/125k/150k); FID-50k JSONs
57d227c verified
|
Raw History Blame Contribute Delete
2.29 kB

EqFM on CIFAR-10, EDM2 U-Net, from scratch (DeltaAI, 4x GH200, global batch 512)

Code: github.com/justinlin26/EqFM, branch mnist-smf-ablation (scripts/train_stage2_flowmap_mnist.py, eqfm/models/edm2_flowmap.py); recipe notes in docs/RUN_ME_edm2_v2.md. Unconditional; the flow map is X_sigma(x) = x + sigma * v(x, sigma). Network: the flow-map paper's EDM2 CIFAR U-Net (Boffi et al., arXiv 2505.18825), 54.67M params. Shifted MeanFlow loss with a live self-teacher.

Folder Run Recipe
run_b_trunc_std1/ edm2_large_b512_trunc_std1_s0 truncated clock a=0.9, noise std 1 (sigma_data 1); diag weight 768 (256 from step 211277); LR 4e-3, 8e-4 at 130k, 1e-4 at 250k
run_a_linear/ edm2_large_b512_s0 linear clock, noise std 0.5 (sigma_data 0.5); diag weight 768 (3072 from step 60298); LR 4e-3, cosine to 1e-4 from 242k

Files per run:

  • ema_step_XXXXXXX.pt: best EMA checkpoint (EMA weights + training args). Run B: 125k. Run A: 300k.
  • latest_step_0402000.pt: final full checkpoint (raw weights model, ema, AdamW optimizer, step) -- resumable.
  • args.json: trainer arguments at the last launch; log_fid.jsonl: in-run FID-2k (EMA and raw) every 25k steps.

FID (CIFAR-10 train statistics, clean-fid legacy_tensorflow, expuniform sampler, EMA):

Checkpoint Metric 1 2 4 8 16 steps
Run A, 300k FID-50k 11.30 12.81 10.54 7.50 7.04
Run A, 402k FID-50k 14.24 15.77 13.27 8.41 7.10
Run B, 100k FID-50k 8.01 8.19 9.67 7.72 4.72
Run B, 125k FID-50k 7.29 5.83 7.93 7.18 4.89
Run B, 150k FID-50k 7.44 6.69 8.30 7.15 5.01
Run B, 402k FID-2k (in-run) 25.0 20.7 22.1 20.9 –

(In-run FID-2k reads about 13 points higher than FID-50k. FID-50k JSONs are in fid50k/.)

Evaluate: python scripts/eval_fid_cifar.py --mode eqfm --ckpt <file> --nfe 1 2 4 8 16 --schedule expuniform --num-gen 50000 --batch-size 500 --seed 2024 (reads clock and noise std from the checkpoint). Resume: full checkpoint via --resume-from latest_step_0402000.pt; from an EMA snapshot via --resume-from ema_step_XXXXXXX.pt --rewarmup 1000 (optimizer reset), into a new run directory.