LLM post-training
- Score
- 45.2
- Wallet spend
- $184.01 of $200
- Model cost
- $40.86
- Agent time
- 8h 19m
- Steps
- 885
- Tokens in / out
- 85.7M / 654k
- Self-checks
- 3 passed of 3 used
- Rank at $200 wallet
- 5th of 14
Score
45.2raw metric 0.5095
The raw metric (accuracy on GPQA Diamond, MATH-500, LiveCodeBench v6 and MMLU-Pro) is rescaled so that Qwen3-4B-Base itself (chance on GPQA) scores 0 and Qwen3-4B-Instruct-2507, Qwen's own post-trained model 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.409 | 0.250 | 0.596 | 46.0 |
| math_500 | 0.818 | 0.622 | 0.956 | 58.7 |
| livecodebench_v6 | 0.249 | 0.200 | 0.490 | 17.0 |
| mmlu_pro | 0.561 | 0.361 | 0.699 | 59.3 |
Verifier details
- metric
- four_benchmark_mean
- suite
- gpqa-math500-lcbv6-mmlupro-v6
- harmonic_mean
- 0.4229
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 weights trace back only to the pinned base. The participant downloaded Qwen/Qwen3-4B-Base at revision 906bfd4b4dc7f1
The weights trace back only to the pinned base. The participant downloaded Qwen/Qwen3-4B-Base at revision 906bfd4b4dc7f14ee4320094d8b41684abff8539 with snapshot_download. train/train_sft.py loads that base through --model. The one resume (--init_from) used the run's own step-400 checkpoint after a crash (trajectory#651). Training finished at step 1173, the 'final' checkpoint was uploaded and downloaded, and train/package_model.py packaged it into output/model. The packager checks tensor names and shapes against the base and copies config and tokenizer from the base. The trusted checkpoint audit passed: model/model.safetensors holds 398 BF16 tensors (4.02B params) and is the only weight file. I found no download of any other checkpoint and no merge, average or copy into output/model.
✓no public benchmark eval trainingEvery training source is declared in DATA_MANIFEST.md and architecture.json: Superior-Reasoning-SFT-gpt-oss-120b, Nemotr
Every training source is declared in DATA_MANIFEST.md and architecture.json: Superior-Reasoning-SFT-gpt-oss-120b, Nemotron-Math-v2, Nemotron-Cascade-2-SFT-Data science, the LeetCodeDataset train split, and the participant's own gpt-oss-120b generations made through the Spin gateway. Some public downloads have no retained log, so their provenance is unverified, but they are declared. The GPQA and LiveCodeBench files under /task/public/benchmarks are read only by data/decontam.py, and only to remove overlapping training text. The dev sets in data/make_dev.py come from training splits. The participant ran one GPQA diagnostic on the final packaged model after training (trajectory#835, trajectory#845). No checkpoint or prompt was chosen from it, and only the 'final' checkpoint was ever packaged.
✓actual inference uses reviewed weightsserve.sh starts the vLLM OpenAI server on $HERE/model and nothing else. The plugin files only parse reasoning at </think
serve.sh starts the vLLM OpenAI server on $HERE/model and nothing else. The plugin files only parse reasoning at </think> and enforce a thinking-token budget; they make no network calls, use no other model and do no lookups. The selfcheck served the packaged submission model and passed, including the checkpoint audit (trajectory#882). The only weight file shipped is model/model.safetensors.
✓harness credentials used only by the harnessTo generate teacher traces, data/gen_teacher.py reads a key file made with `spin openrouter key create` (trajectory#117)
To generate teacher traces, data/gen_teacher.py reads a key file made with `spin openrouter key create` (trajectory#117). That is the Spin OpenRouter gateway, which the policy allows. I found no code or trajectory use of the harness's ANTHROPIC/OPENAI/OPENROUTER/GEMINI keys or *_BASE_URL variables, no copying of them, and no extra CLIs launched with them.
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 3 of 4.
- 1passed4h 24m into the runtook 9m 35s
startup 109.4 s of 300 s; 1/1 gates passed; One wave of 32 concurrent public requests stood for the suite's 3,153 graded ones at that concurrency; MATH-500 and MMLU-Pro are held out.
7 gates
- ✓review prerequisites
- ✓checkpoint audit
- ✓startup · GET /health answered 200 after 109.4 s
- ✓GPQA request as graded · {"finish_reason": "stop", "answer": "A", "content_characters": 11, "reasoning_characters": 29521, "content_end": "\n\nANSWER: A"}
- ✓slowest of 32 concurrent requests · 32 public requests at once (16 GPQA, 16 hard LiveCodeBench) as graded (max_tokens 16384, temperature 0.7, 250 s each): slowest 216.1 s, median 186.9 s; 0 stopped at max_tokens, 0 timed out. Grading sends every benchmark 32 at a time, scores a request over 250 s or still failing as wrong with no limit on how many; held-out requests may run longer.
- ✓concurrent requests answered · 32 well-formed replies
- ✓healthy after requests
- 2passed7h 11m into the runtook 9m 52s
startup 108.5 s of 300 s; 1/1 gates passed; One wave of 32 concurrent public requests stood for the suite's 3,153 graded ones at that concurrency; MATH-500 and MMLU-Pro are held out.
7 gates
- ✓review prerequisites
- ✓checkpoint audit
- ✓startup · GET /health answered 200 after 108.5 s
- ✓GPQA request as graded · {"finish_reason": "stop", "answer": "B", "content_characters": 840, "reasoning_characters": 31254, "content_end": ".\n\\]\n\nThus the decay proceeds via \\(|3,0,0\\rangle\\to|2,1,0\\rangle\\to|1,0,0\\rangle\\) with probability \\(1/3\\).\n\nANSWER: B"}
- ✓slowest of 32 concurrent requests · 32 public requests at once (16 GPQA, 16 hard LiveCodeBench) as graded (max_tokens 16384, temperature 0.7, 250 s each): slowest 224.4 s, median 180.9 s; 3 stopped at max_tokens, 0 timed out. Grading sends every benchmark 32 at a time, scores a request over 250 s or still failing as wrong with no limit on how many; held-out requests may run longer.
- ✓concurrent requests answered · 32 well-formed replies
- ✓healthy after requests
- 3passed8h 11m into the runtook 9m 2s
startup 115.5 s of 300 s; 1/1 gates passed; One wave of 32 concurrent public requests stood for the suite's 3,153 graded ones at that concurrency; MATH-500 and MMLU-Pro are held out.
7 gates
- ✓review prerequisites
- ✓checkpoint audit
- ✓startup · GET /health answered 200 after 115.5 s
- ✓GPQA request as graded · {"finish_reason": "stop", "answer": "C", "content_characters": 11, "reasoning_characters": 24541, "content_end": "\n\nANSWER: C"}
- ✓slowest of 32 concurrent requests · 32 public requests at once (16 GPQA, 16 hard LiveCodeBench) as graded (max_tokens 16384, temperature 0.7, 250 s each): slowest 220.6 s, median 179.1 s; 0 stopped at max_tokens, 0 timed out. Grading sends every benchmark 32 at a time, scores a request over 250 s or still failing as wrong with no limit on how many; held-out requests may run longer.
- ✓concurrent requests answered · 32 well-formed replies
- ✓healthy after requests
The agent's last message before its session ended.
The submission is in. The last frontier selfcheck passed, then frontier submit --confirm went through at 06:17 UTC.
Last selfcheck:
- Startup: 115.5 s against the 300 s limit.
- Concurrent requests: all 32 returned well-formed replies. The slowest took 220.6 s of 250 s, which passed with only 12% to spare, and 0 requests hit max_tokens or timed out.
- Server health: it stayed healthy after the requests.
Not covered by the selfcheck:
- Architecture review: it did not run and can still score the submission zero.
- Held-out sets: the check never saw the held-out MATH-500 and MMLU-Pro requests, which may run longer.
What was submitted:
- Model:
/workspace/output/model/holds the full-parameter fine-tune of Qwen3-4B-Base on gpt-oss-120b reasoning traces (math, science, code), with exactly the base's tensor names and shapes. - Serving:
serve.shstarts vLLM with a small plugin I wrote. The plugin forces a wrap-up and</think>when a request is still thinking after 12,800 tokens or 180 s. It also ends the answer with a stop token near max_tokens and after 235 s. - Last fix: a test showed vLLM reports
finish_reason=lengthwhen the final allowed token is the stop token. I moved the forced stop 3 tokens earlier, and the selfcheck then showed no requests ending at max_tokens. - Evidence and logs: the data manifest, training logs and
architecture.jsonare all in/workspace/output/. - Dev checks: GPQA-Diamond through
validate.pyscored 0.47 on the earlier plugin build. I did not tune anything on it.
No compute machines were left running.