All tasks
Task · llm-post-train

LLM post-training

Post-train Qwen3-4B-Base into a strong chat model

LLM TrainingInspired byPostTrainBench

Grading pipeline

  1. 1Collect · snapshotHarbor collects /workspace/outputimmutable submission · digest
    ›
  2. 2Reviewautomatic · trusted verifier3 task-local checks
    ›
  3. 3Preflighttask verifier checks config and databefore GPU provisioning
    ›
  4. 4Launch · readyoffline · 1× H100 80GBbash /submission/serve.shGET /health = 200 · ≤ 300 s
    ›
  5. 5Weight auditpinned tensor inventory of output/model
    ›
  6. 6Benchmarksdev: GPQA 198 · LCB 1055held-out: MATH-500 500 · MMLU-Pro 1,400 of 12,032c=32
    ›
  7. 7Scoremean of the 4, equal weighteach: base model 0, post-trained reference 1
    ›
  8. 8Harbor resultresult.json · reward.txt

Environments

Entry
Harbor → tests/test.sh → grade.py → frontier_ml.grading.grade
Verifier
8.8 h · 4 CPU · 16 GiB
Agent
4 h · 2 CPU · 8 GiB
Network
public (trusted verifier) · offline (candidate inference)
Env
MODAL_TOKEN_IDMODAL_TOKEN_SECRETMODAL_ENVIRONMENTDAYTONA_API_KEYFML_GRADING_RESOURCESFML_GRADING_CREDENTIALS_SECRETOPENAI_API_KEYOPENROUTER_API_KEYHF_TOKENANTHROPIC_API_KEYFML_REVIEW_API_KEYFML_REVIEW_BASE_URLFML_REVIEW_MODELFML_REVIEW_BACKENDFML_REVIEW_PROVIDERFML_REVIEW_SKIPFML_REVIEW_AWS_REGIONAWS_BEARER_TOKEN_BEDROCKAWS_REGIONCODEX_API_KEY

Verifier config

concurrency
32
inference_timeout_seconds
28800
require_h100
true
verifier_lifetime_seconds
36000
language_suite
gpqa-math500-lcbv6-mmlupro-v6
benchmark_paths
{"gpqa_diamond":"/tests/private/benchmarks/gpqa_diamond.csv","math_500":"/tests/private/benchmarks/math500.jsonl","livecodebench_v6":"/tests/private/benchmarks/livecodebench-v6","mmlu_pro":"/tests/private/benchmarks/mmlu-pro.jsonl"}
livecodebench
{}
generation_concurrency
32
max_tokens
16384
temperature
0.7
request_timeout_seconds
250
judge_model
gpt-6-luna
judge_timeout_seconds
120

Architecture review

Base model Qwen/Qwen3-4B-Base@906bfd4. A trusted reviewer reads the submission and trajectory and fails it on any of these checks.

  1. pinned_base_start
    Training/init provenance and the checkpoint inventory establish that the submitted weights in output/model/ descend from the pinned Qwen/Qwen3-4B-Base checkpoint alone, either unchanged or through training that started from it, and that no other checkpoint's weights entered them: no substitution, no weight averaging, merging or interpolation with another model, no adapter trained on another model, no initialization from any post-trained version of this model (Qwen3-4B, Qwen3-4B-Instruct-2507, Qwen3-4B-Thinking-2507, or any third-party fine-tune). Chained fine-tunes of the candidate's own checkpoints are fine. Running or calling other models, including those post-trained versions, to generate, score or filter training data is allowed and is not a violation of this check. Submitting the base unchanged, or serving it behind a system prompt or chat template, is permitted and is not a violation of anything; the score handles it. Adapters (LoRA and similar) must be merged into the full checkpoint in output/model/. The trusted audit (trusted_audits.checkpoint) confirms only that output/model/ has the base's tensor layout; it cannot tell the base from a post-trained sibling, so establish the weights' origin from the trajectory (downloads, copies, merges, and the training runs that actually executed, with what they loaded and where they saved) and from the retained evidence. A training script or log that the trajectory does not show running is not evidence that it ran; a copy of another checkpoint into output/model/ after training, or a merge with one, fails.
  2. no_public_benchmark_eval_training
    Trace the datasets, splits, data-generation recipes and training logs. Task-time training, fine-tuning, distillation, calibration and checkpoint or prompt selection must not use any public benchmark test or validation split, including unlabeled inputs, rewritten or paraphrased examples, items generated from them, and synthetic or teacher-generated targets derived from them. Supplied development examples (/task/public/benchmarks) are evaluation-only. Training splits, other public corpora and data the candidate generated with models it ran or called are fine; an incidental overlap of a few items inside a large public corpus the candidate did not build around them is not a violation. This check covers work performed for this task, not the original pretraining of the prescribed base checkpoint.
  3. actual_inference_uses_reviewed_weights
    Trace serve.sh through loading and inference to establish that every reply is generated by the checkpoint in output/model/, or by a quantized copy derived from exactly it that is also in the submission, with no alternate hidden model, API call or lookup. Compare the serving path with the complete weight inventory and trusted_audits.checkpoint. Unused training or optimizer artifacts are permitted; unreviewed active inference weights are not.