Ternary quantization
- Score
- 2.3
- Wallet spend
- $71.26 of $200
- Model cost
- $61.71
- Agent time
- 9h 20m
- Steps
- 831
- Tokens in / out
- 73.9M / 770k
- Self-checks
- 1 passed of 1 used
- Rank at $200 wallet
- 9th of 14
Score
2.3raw metric 0.0838
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 bf16 Qwen3.5-4B 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.157 | 0.250 | 0.571 | 0.0 |
| math_500 | 0.0420 | 0 | 0.866 | 4.8 |
| livecodebench_v6 | 0.00379 | 0 | 0.425 | 0.9 |
| mmlu_pro | 0.133 | 0.111 | 0.716 | 3.6 |
Verifier details
- metric
- four_benchmark_mean
- suite
- gpqa-math500-lcbv6-mmlupro-v6
- harmonic_mean
- 0.0133
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 qwen startarchitecture.json pins Qwen/Qwen3.5-4B at revision 851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a. The trajectory shows the ba
architecture.json pins Qwen/Qwen3.5-4B at revision 851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a. The trajectory shows the base weights came from the HF snapshot at that revision. GPTQ initialization and QAT distillation (train_qat_v2.py) both start from that snapshot, which is also used as the teacher (trajectory#212, trajectory#492). The literal tensors (embeddings, norms) are the original weights carried over from that model.
✓text only inferenceserve.sh dequantizes the weights to bf16 and runs code/serve_launcher.py. The launcher only patches ChunkGatedDeltaRule
serve.sh dequantizes the weights to bf16 and runs code/serve_launcher.py. The launcher only patches ChunkGatedDeltaRule to use forward_native and then calls the stock vLLM OpenAI server. Inputs are text chat prompts through chat_template.jinja. No speculative decoding or MTP is enabled, and no image or other modal inputs are used. The vision tower ships only because the base architecture includes it; nothing at serve time feeds it non-text input.
✓no public benchmark eval trainingThe training corpus is the HuggingFaceTB smoltalk train split (shards 0-2). It is declared in training_evidence/data_man
The training corpus is the HuggingFaceTB smoltalk train split (shards 0-2). It is declared in training_evidence/data_manifest.md with a download command, and the trajectory shows it fetched via hf_hub_download to /work/calib and passed as --calib to train_qat_v2.py (trajectory#171, trajectory#738). The GPQA validate.py runs on checkpoints were evaluation-only. They were used to measure accuracy, not as training or calibration data. Checkpoint selection was declared as based on the loss trend.
✓actual inference uses reviewed weightsserve.sh runs code/dequantize_np.py. It reads exactly the files listed in quantization_manifest.json (weights/ternary.sa
serve.sh runs code/dequantize_np.py. It reads exactly the files listed in quantization_manifest.json (weights/ternary.safetensors, scales.safetensors, literal.safetensors), raises an error on any unknown encoding, and writes /tmp/submodel. vLLM is then launched with --model /tmp/submodel and HF_HUB_OFFLINE=1. The trusted audit reports 0 unreferenced tensors. The bundled vLLM wheel matches the upstream digest.
✓ternary executionThe trusted ternary audit passed: ternary fraction 0.9684, 3,565,158,400 ternary parameters. All 200 language-model line
The trusted ternary audit passed: ternary fraction 0.9684, 3,565,158,400 ternary parameters. All 200 language-model linear matrices are stored as packed_2bit codes {-1,0,+1} with fp16 group-32 scales. dequantize_np.py maps the codes only through LUT[-1,0,1]*scale. literal.safetensors holds only norms, embeddings, visual and mtp tensors, with no restored full-precision projections. The hybrid restore experiment (orig_bank.safetensors, trajectory#578) was abandoned and not shipped.
✓harness credentials used only by the harnessNo trajectory step reads or uses Anthropic or harness model credentials: no ANTHROPIC_* variables, BASE_URL overrides or
No trajectory step reads or uses Anthropic or harness model credentials: no ANTHROPIC_* variables, BASE_URL overrides or claude -p calls. HF_TOKEN was used only for Hugging Face downloads, which the policy permits (trajectory#171). The spin session.json files are the participant's own storage-transfer credentials, not harness credentials. The anthropic matches are only vLLM dependency and package listings. The API_KEY match is an argparse option in the evaluation script (trajectory#71).
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 1 of 4.
- 1failed8h 50m into the runtook 1m 12sfree (stopped before any GPU time)
failed weight audit: The weight audit rejected quantization_manifest.json or its tensors: ValueError: Nonternary literal code in model.language_model.embed_tokens.weight
2 gates
- ✓review prerequisites
- ✗weight audit · The weight audit rejected quantization_manifest.json or its tensors: ValueError: Nonternary literal code in model.language_model.embed_tokens.weight
- 2failed9h 2m into the runtook 1m 14sfree (stopped before any GPU time)
failed weight audit: The weight audit rejected quantization_manifest.json or its tensors: ValueError: Nonternary literal code in mtp.layers.0.mlp.down_proj.weight
2 gates
- ✓review prerequisites
- ✗weight audit · The weight audit rejected quantization_manifest.json or its tensors: ValueError: Nonternary literal code in mtp.layers.0.mlp.down_proj.weight
- 3passed9h 12m into the runtook 10m 15s
startup 192.9 s of 300 s; 1/1 gates passed; One wave of 16 concurrent public requests stood for the suite's 3,153 graded ones at that concurrency; MATH-500 and MMLU-Pro are held out.
9 gates
- ✓review prerequisites
- ✓ternary fraction · 3,565,158,400 of 3,681,463,296 audited parameters (text-model weights outside the input embedding and output head, and their scales) are ternary codes: 0.968408, which must exceed 0.95
- ✓stored parameters · 3,681,463,296 stored (codes, scales, retained floats and 0 in tensors outside the manifest, uint8/int8 counting four each) against 1.1 x 3,570,052,096 original parameters
- ✓weight audit · inspect_ternary passed, as verify requires before scoring
- ✓startup · GET /health answered 200 after 192.9 s
- ✓GPQA request as graded · {"finish_reason": "stop", "answer": "A", "content_characters": 4897, "content_end": "the number of chemically distinct hydrogen atoms on product 4 is 6.\nThis matches the given options.\nAnswer: A\n\nANSWER: A"}
- ✓slowest of 16 concurrent requests · 16 public requests at once (8 GPQA, 8 hard LiveCodeBench) as graded (max_tokens 4096, temperature 0, 300 s each): slowest 205.5 s, median 205.4 s; 9 stopped at max_tokens, 0 timed out. Grading sends every benchmark 16 at a time, scores a request over 300 s or still failing as wrong with no limit on how many; held-out requests may run longer.
- ✓concurrent requests answered · 16 well-formed replies
- ✓healthy after requests
The agent's last message before its session ended.
Submitted at 09:54:56 UTC, ~2.5h before the deadline.
Final submission summary
Pipeline (all evidence in training_evidence/):
- RTN ternary baseline → non-functional, discarded
- GPTQ with smoltalk-train Hessians → initialization only
- Layer-wise KD QAT (
train_qat_v2.py): KL + 2.0× per-layer hidden MSE against the frozen bf16 teacher, latent reload from the GPTQ-v1 export, group-32 absmean scales, 16k steps (~65B tokens), final checkpoint chosen by training-loss trend (hid 1.26 → 0.46)
Contract compliance (selfcheck-verified): 96.84% of audited text parameters ternary (limit 95%), 3.681B stored vs 3.571B original = 1.031× (limit 1.10), single ternary stage per weight, embedding/head/vision/MTP floating point, startup 193s (limit 300s), 16-way concurrent worst 205.5s with 0 timeouts.
Serving: no-think template default + "ANSWER: X" system prompt, repetition_penalty 1.1, vLLM 0.17.1 offline from vendored wheels, Triton GDN kernels via prewarmed cache. The no-think decision was anchored on the original model: think mode scored 1/40 GPQA under the 4096-token cap vs 24/40 no-think.
Known state: the ternary model is well below the original (GPQA-40 ~0.18–0.2 vs 0.575 anchor; LCB-10 0.0). The dominant remaining pathologies are immediate-EOS bails on GPQA-style stems and damaged code generation — a serving-level min_tokens floor was tested and reverted (model just emits whitespace past the floor). Two held-out benchmarks (MATH-500, MMLU-Pro) remain unseen.
The selfcheck's one flagged caveat was that the architecture review hadn't run in the sandbox — it runs at grading; the manifest, TRAINING.md, architecture.json and all pipeline evidence are in place for it.