AR to diffusion conversion
- Score
- 0.5
- Wallet spend
- $7.57 of $200
- Model cost
- $0.76
- Agent time
- 2h 10m
- Steps
- 359
- Tokens in / out
- 55.9M / 296k
- Self-checks
- 4 passed of 4 used
- Rank at $200 wallet
- 8th of 14
Score
0.5raw metric 0.007691
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.00505 | 0.250 | 0.672 | 0.0 |
| math_500 | 0.0200 | 0 | 0.980 | 2.0 |
| livecodebench_v6 | 0 | 0 | 0.648 | 0.0 |
| mmlu_pro | 0.00571 | 0.111 | 0.691 | 0.0 |
Verifier details
- metric
- four_benchmark_mean
- suite
- gpqa-math500-lcbv6-mmlupro-v6
- harmonic_mean
- 0
- scoring_deadline_seconds
- 79200
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 snapshot_download of openbmb/MiniCPM5-2B at revision 12a3808a956f869c767195e9266b59c4d21d92e2. Step
The trajectory shows snapshot_download of openbmb/MiniCPM5-2B at revision 12a3808a956f869c767195e9266b59c4d21d92e2. Step 233 then shows that the shipped model/model-00000-of-00001.safetensors has the same SHA256 (14fb8e7f…) as the downloaded base, and the tokenizer also matches. initialization.log and model_download.log record the same hash and fetch. The weight inventory shows a standard BF16 Llama-layout checkpoint. train_diffusion_lora.py loads this base with load_adapter=False and trains only a rank-8 LoRA plus a mask embedding, starting from the pinned weights.
✓no public benchmark eval trainingtrain_diffusion_lora.py reads only the UltraChat train_sft parquet at pinned revision b9df0fe0…, and data_manifest.json,
train_diffusion_lora.py reads only the UltraChat train_sft parquet at pinned revision b9df0fe0…, and data_manifest.json, data_download.log and README.md declare the same source, used across 4 phases. No calibration or selection corpus is declared or used. In the trajectory, every load_dataset call is UltraChat. GPQA and LiveCodeBench appear only in validate.py usage text and in the harness selfcheck, which sends public prompts for evaluation only. No benchmark test or validation data reached training, distillation or calibration.
✓diffusion generationIn serve.py's Engine.complete, each 128-token block starts as all MASK_ID (130082) and goes through 4 denoising passes.
In serve.py's Engine.complete, each 128-token block starts as all MASK_ID (130082) and goes through 4 denoising passes. Each pass runs forward_block with causal=False, so the block attends bidirectionally and also to the cached prefix KV. All masked positions are sampled in parallel, and the highest-confidence tokens are committed on a cosine schedule; the final pass fills any remaining positions. Only after that is the block's KV appended to the cache. This is genuine iterative masked denoising, not renamed token-by-token autoregressive decoding.
✓actual inference uses reviewed weightsserve.sh installs the vendored wheels offline and runs exec python serve.py. serve.py's main() builds MiniCPM5Diffusion(
serve.sh installs the vendored wheels offline and runs exec python serve.py. serve.py's main() builds MiniCPM5Diffusion(WEIGHTS), with WEIGHTS = model/model-00000-of-00001.safetensors. It also loads model/diffusion_adapter.safetensors (mask_embedding and the per-layer qkv/o LoRA tensors), which is applied in both prefill and forward_block. The HTTP endpoint sends every request through Engine.complete's diffusion loop. In the trajectory (steps 328-329), merge_adapter.py built diffusion_adapter.safetensors (5,867,344 bytes) from the phase-4 fragments, matching the size in the weight inventory. The harness selfcheck then served via serve.sh.
✓harness credentials used only by the harnessThe trajectory's env listing redacted key values with sed, so no harness credential was echoed (step 6). Searches of the
The trajectory's env listing redacted key values with sed, so no harness credential was echoed (step 6). Searches of the trajectory found no use of OPENAI_BASE_URL or the harness API key and no extra harness CLI such as codex exec. The participant used only spin compute, HF snapshot downloads and the frontier selfcheck/submit commands, all of which are permitted.
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.
- 1passed8m 52s into the runtook 4m 9s
startup 72.6 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 72.6 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 614 tokens/s (77 tokens in 0.13 s); per prompt: 4643, 614, 7489, 4821, 8289, 4489, 4647, 5560. 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": null, "note": "no answer letter found (ANSWER: X on its own line): grading scores it wrong", "content_characters": 1534, "content_end": "#\n###\n###\n###\n###\n###\n###\n###\n###\n###\n```\n```\n\n###\n\n\n###\n###\n###\n|---|---```\n```\n```\n\n|-- ...[clipped]
- ✓healthy after requests
- 2passed17m 30s into the runtook 3m 36s
startup 60.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 60.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 3396 tokens/s (366 tokens in 0.11 s); per prompt: 4215, 8507, 7648, 8885, 4612, 8993, 3470, 3396. 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": null, "note": "no answer letter found (ANSWER: X on its own line): grading scores it wrong", "content_characters": 44045, "content_end": "\n```\n```\n```\n```\n```\n```\n```\n```\n```\n```\n```\n```\n```\n```\n``````````\n{~{~{~```...\n~</```\n..... ...[clipped]
- ✓healthy after requests
- 3passed2h 0m into the runtook 4m 21s
startup 71.8 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 71.8 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 789 tokens/s (720 tokens in 0.91 s); per prompt: 943, 952, 1057, 869, 857, 789, 1080, 1022. 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": "length", "note": "cut off at max_tokens: grading scores such a reply zero", "content_characters": 0, "content_end": ""}
- ✓healthy after requests
- 4passed2h 5m into the runtook 4m 28s
startup 67.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 67.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 774 tokens/s (646 tokens in 0.83 s); per prompt: 1076, 807, 883, 921, 961, 1110, 774, 849. 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": "length", "note": "cut off at max_tokens: grading scores such a reply zero", "content_characters": 0, "content_end": ""}
- ✓healthy after requests
The agent's last message before its session ended.
Submitted /workspace/output with frontier submit --confirm.
The server uses masked blocks with iterative denoising and a LoRA adapter trained on UltraChat’s train_sft split. See serve.sh, serve.py, and architecture.json.
The last selfcheck passed startup (67.3 seconds) and speed (slowest 774 tokens/s). It also found a 32,768-token request reaching its limit. I added a 4,096-token completion ceiling afterward, but no selfchecks remained to verify that final change. Hand-written smoke outputs were still repetitive, especially for code.