FlexMDM — Dream-Coder-7B
An insertion + unmasking discrete-diffusion model for Python code, produced by
fully fine-tuning Dream-org/Dream-Coder-v0-Base-7B.
Unlike a fixed-length masked diffusion model, FlexMDM can grow its sequence
during generation (a learned insertion head) and unmask tokens in any order,
enabling genuinely any-order code generation.
- Paper: From Interface to Inference: Eliciting Any-Order Inference from Any-Order Models — S. Kim*, J. Kim*, T. Lee*, Y. Chen*, Y. Du, S. Kakade, S. Chen (preprint, 2026).
- Code: github.com/SeunggeunKimkr/genuine-any-order,
FlexMDM/subdirectory (training, data pipeline, inference, and evaluation). - Checkpoint:
global_step_49500(inference weights; optimizer/RNG state stripped).
⚠️ Loading (not a vanilla AutoModel)
This checkpoint hosts a Dream backbone plus FlexMDM-specific weights in
flexmdm_extras.pt. A bare AutoModel.from_pretrained returns only the backbone.
Load the full model with the FlexMDM package from the code repo:
# 1) install the FlexMDM package: pip install -e . (in the repo's FlexMDM/ dir)
from huggingface_hub import snapshot_download
from flexmdm.utils import load_model_and_tokenizer
ckpt = snapshot_download("yuyuanchen0/flexmdm")
model, tokenizer = load_model_and_tokenizer(checkpoint_dir=ckpt, max_length=768)
load_model_and_tokenizer defaults to attn_implementation="sdpa" (works
everywhere). Pass "flash_attention_2" for speed (requires flash-attn), or
"eager" to bit-match the released evaluation traces.
For sampling (the ā = 2.9 inference-time schedule, temperature 0.1, insertion
temperature 0.6 on MBPP / 1.0 on HumanEval, 512 steps) use
flexmdm.inference.flexmdm_generate; see the code repo's docs/REPRODUCE.md.
Model
- Base:
DreamModel(7B; hidden 3584, 28 layers, GQA with 4 KV heads, vocab 152064, diffusion mask id 151666), inherited unchanged. - FlexMDM additions: a per-position log-space insertion head
(
LayerNorm → Linear → GELU → Linear, clamped to [-15, 15]) and AdaLN time conditioning on the insertion-progress coordinate. - Schedules: power family,
α_t = 1−(1−t)^a(insertion),β_t = 1−(1−t)^(a·b)(unmasking), with a = b = 1.7. - Training: AdamW, LR 1e-5 (backbone) / 2e-5 (insertion head), global batch 576, max length 768, FSDP HYBRID_SHARD, 16× H100, ~3 days (checkpoint at step 49500).
Training data
Fine-tuned on a five-source Hugging Face mixture (OpenCodeInstruct, opc-sft-stage2,
KodCode-V1-SFT-4o, and rStar-Coder seed/synthetic). KodCode-V1-SFT-4o is
CC BY-NC 4.0 (non-commercial). Full sources, filters, and licenses — and how to
reconstruct the tokenized set — are in the code repo's docs/DATA.md.
Evaluation (pass@k; n = 16 samples/task)
| Benchmark | pass@1 | pass@2 | pass@4 | pass@8 | pass@16 |
|---|---|---|---|---|---|
| HumanEval | 50.65 | 66.60 | 78.69 | 86.86 | 92.07 |
| HumanEval+ | 46.61 | 61.89 | 73.83 | 82.07 | 87.80 |
| MBPP | 64.70 | 76.73 | 83.80 | 88.20 | 91.27 |
| MBPP+ | 54.98 | 66.11 | 73.06 | 77.38 | 80.69 |
These are the paper's Table 5 rows (extraction-robust any-of-4 grading, 30 s
test timeout). MBPP/MBPP+ decode with the count-preserving insertion
temperature 0.6 (HumanEval/HumanEval+: neutral 1.0); at the neutral 1.0 the
MBPP rows are 62.22 / 74.61 / 81.81 / 86.19 / 89.68 and MBPP+
52.86 / 64.38 / 72.04 / 77.00 / 80.16 — placement sharpening improves every
pass@k on both suites. Generation is deterministic (content-addressed seeds),
so the sample set is bit-reproducible — see the code repo's
evals/REPRODUCIBILITY.md for the exact recipe.
FlexMDM also scores substantially higher than Dream-Coder on tree-based any-order metrics (CBC/RUB/RUB+/OBW).
License & intended use
Apache-2.0 (derived from Dream-Coder, Apache-2.0). Research artifact — not a deployment-ready system; generated code may be incorrect or insecure, so sandbox before executing. Note the non-commercial license on part of the training data (above).
- Downloads last month
- 24
Model tree for yuyuanchen0/flexmdm
Base model
Dream-org/Dream-Coder-v0-Base-7B