AR to diffusion conversion
- Score
- 69.5
- Wallet spend
- $192.54 of $200
- Model cost
- $57.31
- Agent time
- 6h 25m
- Steps
- 328
- Tokens in / out
- 130.3M / 603k
- Self-checks
- 3 passed of 4 used
- Rank at $200 wallet
- 1st of 14
Score
69.5raw metric 0.5803
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.434 | 0.250 | 0.672 | 43.7 |
| math_500 | 0.916 | 0 | 0.980 | 93.5 |
| livecodebench_v6 | 0.400 | 0 | 0.648 | 61.7 |
| mmlu_pro | 0.571 | 0.111 | 0.691 | 79.2 |
Verifier details
- metric
- four_benchmark_mean
- suite
- gpqa-math500-lcbv6-mmlupro-v6
- harmonic_mean
- 0.5231
- 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 base model was downloaded on the GPU boxes with snapshot_download('openbmb/MiniCPM5-2B', revision='12a3808a956f869c7
The base model was downloaded on the GPU boxes with snapshot_download('openbmb/MiniCPM5-2B', revision='12a3808a956f869c767195e9266b59c4d21d92e2') into /dev/shm/model (trajectory#27; training/logs/setup_8xh100.log, where the tokenizer sha256 hashes match the starting artifact's pins). train_dlm.py builds both the frozen encoder and the trainable decoder with load_lm(args.model), and args.model defaults to /dev/shm/model. The final run4 launch commands (trajectory#203, trajectory#211) pass no --init-decoder, so the decoder starts from the base weights. The shipped decoder is run4 step1950, copied in at trajectory#259. Its inventory is a full 2B Llama-shape tensor set (embed [130560,2048], 42 layers) that matches the base architecture. model/ was copied from the harness starting artifact /artifacts/minicpm5-2b, which STARTING_ARTIFACT.json pins to the same revision (trajectory#3, trajectory#103).
✓no public benchmark eval trainingEvery training prompt comes from a declared training split: hendrycks_math train, gsm8k train, NuminaMath-CoT train, APP
Every training prompt comes from a declared training split: hendrycks_math train, gsm8k train, NuminaMath-CoT train, APPS train, code_contests train shards, ARC/OBQA/SciQ/MedMCQA/CSQA/QASC train, and ultrachat_200k train_sft (training/build_prompts.py, training/data_manifest.json). Responses are self-distilled from the base model. GPQA-Diamond, LCB v6, MATH-500 test and MMLU-Pro test are read only to build n-gram sets that remove overlapping training prompts; none of their content enters training. The dev set used to choose decoding settings (training/build_devset.py) is built only from MedMCQA, code_contests and NuminaMath train splits; it reuses benchmark file names but holds no benchmark content. The evaluation runs in the trajectory use /dev/shm/devset files, not /task/public/benchmarks. Download commands are retained in the manifest and in build_prompts.py (hf_hub_download).
✓diffusion generationThe engine in dlm/engine.py runs a masked block-diffusion sampler. Each step, a decoder that is bidirectional within the
The engine in dlm/engine.py runs a masked block-diffusion sampler. Each step, a decoder that is bidirectional within the window predicts every [MASK] position of a 16-token block in parallel. Positions are unmasked by confidence: the leftmost position, plus any position anywhere in the block above DLM_THRESHOLD, plus a contiguous run above DLM_CONTIG_THRESHOLD. A block is committed to the encoder KV cache only once it is fully decided. The final dlm/serve_config.env (written at trajectory#293) sets DLM_THRESHOLD=0.85 and DLM_CONTIG_THRESHOLD=0.8, so decoding is not forced to one token at a time. The decoder was trained with a masked-token denoising objective on random-ratio masks (training/train_dlm.py). This is iterative denoising, not renamed autoregressive decoding.
✓actual inference uses reviewed weightsserve.sh exports DLM_ENCODER_DIR=$HERE/model and DLM_DECODER=$HERE/decoder/decoder.safetensors, sources dlm/serve_config
serve.sh exports DLM_ENCODER_DIR=$HERE/model and DLM_DECODER=$HERE/decoder/decoder.safetensors, sources dlm/serve_config.env, and execs dlm/server.py. server.py builds Engine(MODEL_DIR, DEC_FILE) and sends /v1/chat/completions requests to eng.submit. Engine loads the encoder with load_lm(model/), a strict load of model-00000-of-00001.safetensors, and the decoder with a strict load_state_dict of decoder/decoder.safetensors. It uses them for the commit and denoise forwards respectively. Both shipped weight files are present in the inventories with matching shapes.
✓harness credentials used only by the harnessSearches of the trajectory found no use of ANTHROPIC or OPENAI keys or harness base URLs, and no launches of claude or c
Searches of the trajectory found no use of ANTHROPIC or OPENAI keys or harness base URLs, and no launches of claude or codex CLIs. The only credentials used are Spin transfer/compute credentials through the Spin CLI (trajectory#39), which are allowed. HF_TOKEN was passed to the rented boxes only to download the base model and datasets (trajectory#27, trajectory#28). Nothing was uploaded to Hugging Face. The token is redacted in the shipped setup log (trajectory#292; training/logs/setup_8xh100.log).
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.
- 1failed4h 45m into the runtook 5m 7s
startup 29.2 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 request
3 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 29.2 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 429 tokens/s (1022 tokens in 2.38 s); per prompt: 429. 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.
- 2passed5h 25m into the runtook 4m 55s
startup 26.7 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 26.7 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 453 tokens/s (1022 tokens in 2.26 s); per prompt: 496, 471, 539, 511, 453, 531, 463, 489. 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, "reasoning_characters": 41149, "content_end": ""}
- ✓healthy after requests
- 3passed5h 50m into the runtook 5m 8s
startup 34.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 34.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 452 tokens/s (1022 tokens in 2.26 s); per prompt: 460, 491, 452, 458, 497, 452, 521, 467. 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": 283, "reasoning_characters": 72973, "content_end": " mean free path \u03bb\u2081. The observed mean free path \u03bb\u2082 based on electron scattering is therefore smaller than \u03bb\u2081.\n\nANSWER: A"}
- ✓healthy after requests
- 4passed6h 21m into the runtook 5m 36s
startup 35.5 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 35.5 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 458 tokens/s (1020 tokens in 2.23 s); per prompt: 476, 527, 558, 470, 511, 501, 458, 520. 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": "C", "content_characters": 593, "reasoning_characters": 46115, "content_end": "umn, each diastereomer (a single enantiomer) also separates (2 peaks). Thus, two peaks in both chromatograms.\n\nANSWER: C"}
- ✓healthy after requests
The agent's last message before its session ended.
The folder matches what the final selfcheck verified (212 files, 14.68 GB). Submitting: