AR to diffusion conversion
- Score
- 76.7
- Wallet spend
- $26.88 of $50
- Model cost
- $54.54
- Agent time
- 4h 22m
- Steps
- 141
- Tokens in / out
- 47.9M / 364k
- Self-checks
- 3 passed of 4 used
- Rank at $50 wallet
- 2nd of 14
Score
76.7raw metric 0.6171
The raw metric (accuracy on GPQA Diamond, MATH-500, LiveCodeBench v6 and MMLU-Pro) is rescaled so that chance on each benchmark scores 0 and the original autoregressive MiniCPM5-2B scores 100, clamped to that range; each of the 4 benchmarks is rescaled on its own and the score is their mean.
Benchmarks
| Benchmark | Raw | Floor | Ceiling | Normalized |
|---|---|---|---|---|
| gpqa_diamond | 0.505 | 0.250 | 0.672 | 60.5 |
| math_500 | 0.922 | 0 | 0.980 | 94.1 |
| livecodebench_v6 | 0.440 | 0 | 0.648 | 67.8 |
| mmlu_pro | 0.601 | 0.111 | 0.691 | 84.5 |
Verifier details
- metric
- four_benchmark_mean
- suite
- gpqa-math500-lcbv6-mmlupro-v6
- harmonic_mean
- 0.5713
After grading, a reviewer model reads the submission's files and the agent's trajectory and checks each of the task's rules. A failed check makes the score 0. Step numbers link into the trajectory.
✓pinned base startThe trajectory shows the participant running snapshot_download for openbmb/MiniCPM5-2B at revision 12a3808a956f869c76719
The trajectory shows the participant running snapshot_download for openbmb/MiniCPM5-2B at revision 12a3808a956f869c767195e9266b59c4d21d92e2 into /workspace/model. The same command is kept in training/setup_box.sh. src/dllm/train.py builds both the student and the frozen teacher from that --model-dir. model/model.safetensors has the MiniCPM5-2B layout (vocab 130560, hidden 2048, 42 layers, kv 256, MLP 6144) in BF16, and model/diffusion_config.json records training step 1699. The architecture.json declaration matches the policy base and revision.
✓no public benchmark eval trainingThe training corpus is declared in training/DATA.md and training/data_manifest.json: 8 shards of openbmb UltraData-SFT-2
The training corpus is declared in training/DATA.md and training/data_manifest.json: 8 shards of openbmb UltraData-SFT-2605, about 58.5M tokens. Download commands are kept in training/setup_box.sh and its log. A held-out Math_think shard, not a benchmark, was used to choose decoding settings. In the trajectory, GPQA and LCB files appear only in evaluation and speed-probe runs (harness validate.py and the decoding sweeps). No training on them was found.
✓diffusion generationsrc/dllm/engine.py generates by block diffusion. It decodes 8-token blocks filled with mask token 130082. Each step is a
src/dllm/engine.py generates by block diffusion. It decodes 8-token blocks filled with mask token 130082. Each step is a forward pass over [committed-context KV; masked block]. Positions are unmasked in parallel by confidence threshold, and speculative drafts are verified with min(1,p/q) and re-masked if rejected. The model was trained with a block-diffusion FlexAttention mask (src/dllm/model.py, train.py). The server logs show multiple tokens per step with draft and verification statistics.
✓actual inference uses reviewed weightsserve.sh runs src/dllm/server.py with --model-dir pointing at the shipped model/ directory. server.py creates an Engine,
serve.sh runs src/dllm/server.py with --model-dir pointing at the shipped model/ directory. server.py creates an Engine, and engine.py loads DiffusionLM(cfg).load_hf_weights(model_dir), which in model.py loads model/model.safetensors with strict checks for missing or unexpected keys. Every chat request goes through Scheduler and then engine.step, which uses these weights. No alternate model or remote endpoint is in the serving path.
✓harness credentials used only by the harnessSearches of the trajectory for API_KEY and BASE_URL matched only the Spin setup documentation. No claude or codex CLI se
Searches of the trajectory for API_KEY and BASE_URL matched only the Spin setup documentation. No claude or codex CLI sessions were launched (searches for 'claude -p' and 'codex' found nothing). HF_TOKEN was used only for Hugging Face downloads, and remote compute ran through the Spin CLI, both of which are allowed.
LLM adversarial review is not proof of arbitrary program behavior. Host storage and task-specific deterministic checks remain required.
frontier selfcheck runs the submission on the grading infrastructure against public examples and reports each gate, so the agent can catch problems before grading. Each run gets four. This agent used 4 of 4.
- 1failed1h 33m into the runtook 4m 21s
startup 109.1 s of 300 s; 0/1 gates passed; failed single-stream speed: 1 of 8 measured prompts, sent one at a time after an untimed warm-up (max_tokens 1024, temperature 1), each reply's reasoning and answer tokens counted with the pinned openbmb/MiniCPM5-2B tokenizer over end-to-end reques
3 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 109.1 s
- ✗single-stream speed · 1 of 8 measured prompts, sent one at a time after an untimed warm-up (max_tokens 1024, temperature 1), each reply's reasoning and answer tokens counted with the pinned openbmb/MiniCPM5-2B tokenizer over end-to-end request time (sandbox clock), a miss re-sent once; slowest 331 tokens/s (1024 tokens in 3.09 s); per prompt: 331. Public prompts: 7 GPQA and 2 hard LiveCodeBench; grading draws 4 GPQA, 3 level-5 MATH-500 (held out) and 2 hard LiveCodeBench, so its replies differ. Grading stops here with score 0.
- 2passed3h 32m into the runtook 5m 11s
startup 131.2 s of 300 s; 1/1 gates passed; The suite's 32 concurrent requests per copy, up to 3600 s each, were not sent; one request at its settings was.
5 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 131.2 s
- ✓single-stream speed · 8 of 8 measured prompts, sent one at a time after an untimed warm-up (max_tokens 1024, temperature 1), each reply's reasoning and answer tokens counted with the pinned openbmb/MiniCPM5-2B tokenizer over end-to-end request time (sandbox clock), a miss re-sent once; slowest 468 tokens/s (1012 tokens in 2.16 s); per prompt: 1147, 641, 1131, 681, 511, 468, 527, 504. Public prompts: 7 GPQA and 2 hard LiveCodeBench; grading draws 4 GPQA, 3 level-5 MATH-500 (held out) and 2 hard LiveCodeBench, so its replies differ.
- ✓GPQA request as graded (self-check cap 291 s; grading allows 3600 s) · {"finish_reason": "stop", "answer": "D", "content_characters": 804, "reasoning_characters": 21365, "content_end": "\\frac{15}{25}\\right)^3 = 2 \\cdot 0.216 = 0.432.\n\\] \nSo system_1 is about 0.4 times as massive as system_2. \n\nANSWER: D"}
- ✓healthy after requests
- 3error3h 54m into the runtook 2m 16sfree (stopped before any GPU time)
The self-check could not finish (NotFoundError: Modal Sandbox with container ID ta-01M42BXKRHCS80A6SGWF8RZT3S not found. This means this Sandbox has already shut down. (Error code: V026O9MY)).; The suite's 32 concurrent requests per copy, up to 3600 s each, were not sent; one request at its s
1 gates
- ✓review prerequisites
- 4passed3h 57m into the runtook 5m 49s
startup 157.1 s of 300 s; 1/1 gates passed; The suite's 32 concurrent requests per copy, up to 3600 s each, were not sent; one request at its settings was.
5 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 157.1 s
- ✓single-stream speed · 8 of 8 measured prompts, sent one at a time after an untimed warm-up (max_tokens 1024, temperature 1), each reply's reasoning and answer tokens counted with the pinned openbmb/MiniCPM5-2B tokenizer over end-to-end request time (sandbox clock), a miss re-sent once; slowest 463 tokens/s (977 tokens in 2.11 s); per prompt: 1800, 1483, 947, 732, 821, 669, 505, 463. Public prompts: 7 GPQA and 2 hard LiveCodeBench; grading draws 4 GPQA, 3 level-5 MATH-500 (held out) and 2 hard LiveCodeBench, so its replies differ.
- ✓GPQA request as graded (self-check cap 291 s; grading allows 3600 s) · {"finish_reason": "stop", "answer": "A", "content_characters": 623, "reasoning_characters": 55621, "content_end": "ond energy. After performing the calculation, the value that matches one of the given options is 67.4 kJ/mol.\n\nANSWER: A"}
- ✓healthy after requests
- 5passed4h 14m into the runtook 5m 30s
startup 158.3 s of 300 s; 1/1 gates passed; The suite's 32 concurrent requests per copy, up to 3600 s each, were not sent; one request at its settings was.
5 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 158.3 s
- ✓single-stream speed · 8 of 8 measured prompts, sent one at a time after an untimed warm-up (max_tokens 1024, temperature 1), each reply's reasoning and answer tokens counted with the pinned openbmb/MiniCPM5-2B tokenizer over end-to-end request time (sandbox clock), a miss re-sent once; slowest 497 tokens/s (273 tokens in 0.55 s); per prompt: 1733, 497, 978, 1838, 1776, 1651, 628, 550. Public prompts: 7 GPQA and 2 hard LiveCodeBench; grading draws 4 GPQA, 3 level-5 MATH-500 (held out) and 2 hard LiveCodeBench, so its replies differ.
- ✓GPQA request as graded (self-check cap 291 s; grading allows 3600 s) · {"finish_reason": "stop", "answer": "D", "content_characters": 578, "reasoning_characters": 15860, "content_end": "atic protons of a disubstituted ring. The other options either have different masses or incompatible spectra.\n\nANSWER: D"}
- ✓healthy after requests
The agent's last message before its session ended.
Wheels install offline cleanly, and the A100 has the model. Running the engine's AR-equivalence and speed test there.