mdlm-owt-diff1 / README.md
AntonXue's picture
Add model card
c41148e verified
|
Raw
History Blame Contribute Delete
1.75 kB
---
license: apache-2.0
language: [en]
tags: [masked-diffusion, mdlm, text-diffusion, quentin-dlm]
---
# mdlm-owt-diff1 — summary-conditioned MDLM (DIFF_1), 100k steps
**DIFF_1** from the `quentin-dlm` cascade: a masked-diffusion LM finetuned from
[`kuleshov-group/mdlm-owt`](https://huggingface.co/kuleshov-group/mdlm-owt) to
generate OpenWebText documents conditioned on a coarse summary prefix.
- Layout `[summary 256 | text 768]` @ L1024; prefix always revealed (never
masked); masked-CE NELBO on the text region only. `time_conditioning=False`.
- 169.6M vendored Duo DiT backbone, GPT-2 tokenizer, vocab 50258
(`[MASK]`=50257, pad=eos=50256).
- Data: [`EER6/openwebtext-coarse`](https://huggingface.co/datasets/EER6/openwebtext-coarse)
(doc_idx >= 2048; first 2048 held out).
- Recipe: 100k steps, global batch 384 (8x GH200 DDP), lr 3e-4 cosine
(warmup 500), AdamW(0.9, 0.95), wd 0, bf16, EMA 0.99.
- **These are the EMA weights of checkpoint-100000** (DiT backbone state_dict,
same layout as mdlm-owt: `model.safetensors` at repo root).
Results / caveats: held-out val NELBO 2.996 (ppl 20.0) vs trash-prefix control
3.293 (26.9) — strong conditioning (samples reproduce ~44% of summary content
words, 5.5x the shuffled baseline). NOTE: the hot 100k finetune degraded
*sampling* fluency (gen-PPL ~207 @512 steps vs ~59 for the base model); see
RESULTS_MDLM_100K.md in the project repo for the full diagnosis (earlier
checkpoints sample better; remasking samplers recommended).
Load (project code): `duo_core.load_model("EER6/mdlm-owt-diff1", 1024, 50258, device)`
or as `--init_ckpt EER6/mdlm-owt-diff1` in `train/train_big_mdlm.py`.
Companion control: [`EER6/mdlm-owt-trash`](https://huggingface.co/EER6/mdlm-owt-trash).