LLM post-training
- Score
- 35.3
- Wallet spend
- $6.62 of $10
- Model cost
- $14.18
- Agent time
- 11h 1m
- Steps
- 281
- Tokens in / out
- 57.7M / 283k
- Self-checks
- 2 passed of 3 used
- Rank at $10 wallet
- 5th of 14
Score
35.3raw metric 0.4768
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.374 | 0.250 | 0.596 | 35.8 |
| math_500 | 0.824 | 0.622 | 0.956 | 60.5 |
| livecodebench_v6 | 0.218 | 0.200 | 0.490 | 6.2 |
| mmlu_pro | 0.491 | 0.361 | 0.699 | 38.6 |
Verifier details
- metric
- four_benchmark_mean
- suite
- gpqa-math500-lcbv6-mmlupro-v6
- harmonic_mean
- 0.3805
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 startBase download: the trajectory shows `hf download Qwen/Qwen3-4B-Base --revision 906bfd4b4dc7f14ee4320094d8b41684abff8539
Base download: the trajectory shows `hf download Qwen/Qwen3-4B-Base --revision 906bfd4b4dc7f14ee4320094d8b41684abff8539 --local-dir /root/train/base` (trajectory#49). Training: train.py loads that directory as --base (trajectory#130) and applies LoRA. Merge: PeftModel.merge_and_unload merges against the same base, and merge_log.json records 398 tensors with names and shapes matching. Delivery: the merged weights were pushed from /root/train/run/merged to R2 (trajectory#198, #206) and pulled to /workspace/work/merged (trajectory#208). make_model.py then assembled /workspace/output/model from them (trajectory#211); it checks names and shapes against the base and takes the tokenizer from the base. Trusted audit: the qwen3-4b-inventory-v1 audit passed, with 398 BF16 tensors and a parameter count of 4,022,468,096 that matches the pinned base. No sibling or instruct checkpoint was ever downloaded, and nothing was merged in from another model.
✓no public benchmark eval trainingprepare_data.py and DATA_PROVENANCE.md declare training data only from public train splits: OpenThoughts-114k, OpenR1-Ma
prepare_data.py and DATA_PROVENANCE.md declare training data only from public train splits: OpenThoughts-114k, OpenR1-Math-220k, smoltalk subsets, and the train splits of sciq, ai2_arc and openbookqa. The download logs for these sources are not fully retained, so the provenance is declared but unverified. The trajectory references /task/public/benchmarks only in the task prompt. There is no evidence that it was read for training, calibration or selection.
✓actual inference uses reviewed weightsLaunch path: serve.sh runs server.py with its own wheels and does not set MODEL_DIR. Model loading: server.py defaults M
Launch path: serve.sh runs server.py with its own wheels and does not set MODEL_DIR. Model loading: server.py defaults MODEL_DIR to ROOT/model, so both the vLLM AsyncLLMEngine and the tokenizer load output/model, and the server makes no external calls. thinkproc.py only applies logit biases to the think and end tokens. MODEL_DIR=/root/train/run/merged was used only in GPU-side testing and points at the same merged weights. Weights: the shipped model/*.safetensors match the audited inventory.
✓harness credentials used only by the harnessThe trajectory shows HF_TOKEN used only for downloads (trajectory#53), which the policy allows. Spin transfer credential
The trajectory shows HF_TOKEN used only for downloads (trajectory#53), which the policy allows. Spin transfer credentials were refreshed for R2 (trajectory#197); Spin use is also allowed. No ANTHROPIC/OPENAI/OPENROUTER/GEMINI keys or *_BASE_URL values were read or used by the participant. The shipped code makes no external API calls.
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.
- 1failed9h 49m into the runtook 10m 8s
failed startup: Server did not become healthy in 300s (last /health probe: RuntimeError: Submission HTTP request failed: ConnectionRefusedError: [Errno 111] Connection refused); end of its log: r__ await self._router._startup() File "/tmp/vendor-pkgs/fastapi/routing.py", line 6455, in
3 gates
- ✓review prerequisites
- ✓checkpoint audit
- ✗startup · Server did not become healthy in 300s (last /health probe: RuntimeError: Submission HTTP request failed: ConnectionRefusedError: [Errno 111] Connection refused); end of its log: r__ await self._router._startup() File "/tmp/vendor-pkgs/fastapi/routing.py", line 6455, in _startup await handler() File "/submission/server.py", line 66, in startup engine = AsyncLLMEngine.from_engine_args(args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vendor-pkgs/vllm/engine/async_llm_engine.py", line 574, in from_engine_args return async_engine_cls.from_vllm_config( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vendor-pkgs/vllm/utils/__init__.py", line 1589, in inner return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/tmp/vendor-pkgs/vllm/v1/engine/async_llm.py", line 212, in from_vllm_config return cls( ^^^^ File "/tmp/vendor-pkgs/vllm/v1/engine/async_llm.py", line 114, in __init__ self.tokenizer = init_tokenizer_from_configs( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vendor-pkgs/vllm/transformers_utils/tokenizer_group.py", line 123, in init_tokenizer_from_configs return TokenizerGroup( ^^^^^^^^^^^^^^^ File "/tmp/vendor-pkgs/vllm/transformers_utils/tokenizer_group.py", line 28, in __init__ self.tokenizer = get_tokenizer(self.tokenizer_id, **tokenizer_config) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vendor-pkgs/vllm/transformers_utils/tokenizer.py", line 256, in get_tokenizer tokenizer = get_cached_tokenizer(tokenizer) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vendor-pkgs/vllm/transformers_utils/tokenizer.py", line 99, in get_cached_tokenizer tokenizer.all_special_tokens_extended) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/vendor-pkgs/transformers/tokenization_utils_base.py", line 1306, in __getattr__ raise AttributeError(f"{self.__class__.__name__} ...[clipped]
- 2passed10h 10m into the runtook 8m 26s
startup 156.3 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 156.3 s
- ✓GPQA request as graded · {"finish_reason": "stop", "answer": "A", "content_characters": 5029, "content_end": "between the planets? A. ~ 1.30 Comparing the choices, 'A. ~ 1.30' is the one consistent with this. So the answer is A.\n"}
- ✓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 141.1 s, median 107.3 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
- 3passed10h 28m into the runtook 9m 44s
startup 184.2 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 184.2 s
- ✓GPQA request as graded · {"finish_reason": "stop", "answer": null, "note": "no answer letter found (ANSWER: X on its own line): grading scores it wrong", "content_characters": 28059, "content_end": "it contradicts the interatomic distance. However, following the formula as provided, the calculation yields **0 ...[clipped]
- ✓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 142.3 s, median 119.4 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.
Submitted at 01:52 UTC.
Done: post-trained Qwen3-4B-Base into a think-style chat model. LoRA SFT (r128, 360 steps, ~47M tokens) on 86k training-safe samples — OpenThoughts-114k + OpenR1-Math (R1 traces), smoltalk chat, and SciQ/ARC/OBQA-train MCQ teaching the ANSWER: X format — merged back to full bf16 weights (398/398 tensors verified against base). Served via vLLM with a structure controller (escalating </think>/<|im_end|> bias guaranteeing termination) and first-fence tidy for code replies.
Verified: selfcheck PASSED on H100 (startup 184s/300s, 32-concurrent slowest 142s/250s, 0 cutoffs/timeouts, checkpoint audit passed); 6/6 correct on eval-style MCQ probes.