Data-efficient pretraining
- Score
- 0.0
- Wallet spend
- $19.96 of $50
- Model cost
- $6.78
- Agent time
- 3h 50m
- Steps
- 196
- Tokens in / out
- 34.5M / 219k
- Self-checks
- 1 passed of 2 used
- Rank at $50 wallet
- 10th of 14
/score disagrees with /dist by 0.0277 nats (> 0.02)
Score
0.0
The raw metric (bits per byte on held-out text) is rescaled so that 1.461 bits per byte, the organizers' 7-minute GPT-2 baseline scores 0 and 1.25 bits per byte, a target set by the task author scores 100, clamped to that range.
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.
✓trained from scratcharchitecture.json declares base_model "none" and base_revision "from-scratch", and the code matches. In src/model.py, GP
architecture.json declares base_model "none" and base_revision "from-scratch", and the code matches. In src/model.py, GPT initializes every Linear and Embedding layer with normal-distribution random weights. src/train.py builds GPT(cfg) from a fresh config and never loads a checkpoint. src/tokenizer_train.py trains a new BPE tokenizer with BpeTrainer on the corpus files. Nothing in the code calls from_pretrained or loads any hub or library model. The trajectory shows only pip installs of torch, tokenizers, numpy and safetensors, with no model downloads (trajectory#34, trajectory#191).
✓no embedded external dataThe shipped files contain only code, configs and logs; the participant deleted the weights and tokenizer before submitti
The shipped files contain only code, configs and logs; the participant deleted the weights and tokenizer before submitting (trajectory#187, trajectory#193). The GPT-2-style byte-to-unicode map in src/common.py is an algorithm, not data. ADVERSARIAL_SAMPLES in src/tokenizer_train.py are a few fixed multilingual strings used only to check that tokenization round-trips correctly; they never enter training. No vocabularies, n-gram tables, weights or encoded data are embedded.
✓training uses only corpustrain.sh runs src/train.py with --corpus-dir $CORPUS_DIR and --output-dir $OUTPUT_DIR. The manifest, tokenizer training
train.sh runs src/train.py with --corpus-dir $CORPUS_DIR and --output-dir $OUTPUT_DIR. The manifest, tokenizer training and block tokenization in src/data.py and src/tokenizer_train.py read only *.txt files under corpus_dir. All outputs (tokenizer.json, config.json, model.safetensors, cache, logs, a copy of the code) go to output_dir. The training code makes no network calls and loads no pretrained models. DATA.md and architecture.json declare the task-provided corpus as the source, and the trajectory shows that corpus being copied from /task/public/corpus to the GPU machines (trajectory#34, trajectory#80).
✓serving uses only replay outputsserve.sh runs server.py from $WEIGHTS_DIR/code, $WEIGHTS_DIR/src or the submitted src. That code was copied there by tra
serve.sh runs server.py from $WEIGHTS_DIR/code, $WEIGHTS_DIR/src or the submitted src. That code was copied there by train.py, so it is submitted code either way. In src/server.py, the LM class loads only config.json, tokenizer.json and model.safetensors (or model.pt) from weights_dir, with strict state_dict loading. The server reads no other model, data, cache, corpus or network resource.
✓causal normalized scoring/score and /dist both call model.logits_for_prefix on [BOS]+tokens in src/server.py. Attention in src/model.py is causal
/score and /dist both call model.logits_for_prefix on [BOS]+tokens in src/server.py. Attention in src/model.py is causal (SDPA is_causal, or a tril mask during chunked prefill). The KV cache is built fresh for each request, so no state carries over between requests. /dist returns log_softmax over the full vocabulary. Log-probs are clamped at -30, but the self-check reported 0 nats normalization error (trajectory#192). The server keeps no request history, does no lookups of previously seen text and does not special-case audit inputs.
✓harness credentials used only by the harnessSearching the trajectory for API_KEY, BASE_URL, ANTHROPIC, OPENAI, OPENROUTER, claude and printenv found no matches. The
Searching the trajectory for API_KEY, BASE_URL, ANTHROPIC, OPENAI, OPENROUTER, claude and printenv found no matches. The participant's commands were spin compute operations, ssh/scp to leased GPUs, pip installs and frontier selfcheck/submit (trajectory#19, trajectory#34, trajectory#191, trajectory#195). No step uses the harness credentials or launches another harness session.
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 2 of 4.
- 1failed3h 36m into the runtook 4m 45s
startup 4.8 s of 300 s; 1/1 gates passed; failed POST /score, characters outside the corpus: the response was rejected: VerificationFailure: /score tokens do not concatenate to the exact UTF-8 text. No /vocab token holds the bytes cc ('̃'), cd ('ͱ'), cf ('ς'), d0 ('Р'), d1 ('у'), d2 ('қ'), d
8 gates
- ✓review prerequisites
- ✓entry points and files
- ✓train.sh · Given TRAIN_BUDGET_SECONDS=240, exited 0 on NVIDIA H100 80GB HBM3 after 51 s, writing 16 files (474331201 bytes) to OUTPUT_DIR. End of its log: IA H100 80GB HBM3, 81559 MiB torch 2.8.0+cu128 cuda True tok 0.22.1 {"event": "start", "env": {"torch": "2.8.0+cu128", "cuda_available": true, "device": "cuda", "gpu": "NVIDIA H100 80GB HBM3", "args": {"corpus_dir": "/corpus", "output_dir": "/replay/output", "budget_seconds": 240.0, "start_time": 1791013799.0, "save_margin_seconds": 240.0, "seed": 1234, "vocab_size": 16384, "min_frequency": 2, "d_model": 768, "n_layer": 12, "n_head": 12, "n_kv_head": 12, "ffn_dim": 2048, "seq_len": 8192, "dropout": 0.0, "batch_tokens": 262144, "micro_seqs": 8, "lr": 0.001, "min_lr_ratio": 0.1, "warmup_steps": 150, "weight_decay": 0.1, "grad_clip": 1.0, "checkpoint": 0, "val_fraction": 0.0, "val_every_seconds": 600.0, "log_every": 25}}} {"event": "tokenizer", "vocab_size": 16384, "bos_id": 0, "bytes_per_token": 5.6446926692303} {"event": "data", "train_chunks": 1994, "val_chunks": 0, "bpt": 3.33} {"event": "model", "n_params": 97536768} {"event": "saving", "steps": 0} {"event": "done", "elapsed": 45.3}
- ✓train.sh wall clock · Grading's hard limit, with TRAIN_BUDGET_SECONDS=3600; this run had TRAIN_BUDGET_SECONDS=240.
- ✓startup · GET /health answered 200 after 4.8 s
- ✓GET /vocab · {"tokens": 16384, "special": 1}
- ✓POST /score · {"id": "validation-0001", "bytes": 5203, "tokens": 1329}
- ✗POST /score, characters outside the corpus · the response was rejected: VerificationFailure: /score tokens do not concatenate to the exact UTF-8 text. No /vocab token holds the bytes cc ('̃'), cd ('ͱ'), cf ('ς'), d0 ('Р'), d1 ('у'), d2 ('қ'), d3 ('ӣ'), d4 ('Ա'), d5 ('Հ'), d6 ('ր'), d8 ('ا'), da ('ک'), db ('ی'), dc ('ܣ'), dd ('ݢ'), de ('ދ') and 15 more, so no tokenization reproduces text containing them. The token bytes must concatenate to any UTF-8 input, and held-out documents are not limited to the characters of the public data.; got {"token_ids": [181, 152, 150, 150, 119, 117, 118, 26, 147, 95, 159, 114, 157, 161, 147, 115, 114, 147, 114, 158, 166, 147, 162, 151, 117, 154, 147, 121, 164, 112, 119, 117, 154, 147, 153, 149, 109, 122, 155, 152, 116, 150, 119, 117, 154, 147, 110, 152, 120, 123, 119, 12, 147, 113, 109 ...[clipped]
- 2passed3h 47m into the runtook 1m 31s
startup 4.0 s of 300 s; 8/8 gates passed; The evaluation deadline was projected from a sample: 91 of 551 /score requests and 86 of 516 audit requests; the audit gates hold that sample to grading's tolerances.
18 gates
- ✓review prerequisites
- ✓entry points and files
- ✓train.sh · Given TRAIN_BUDGET_SECONDS=240, exited 0 on NVIDIA H100 80GB HBM3 after 43 s, writing 16 files (474329461 bytes) to OUTPUT_DIR. End of its log: 100 80GB HBM3, 81559 MiB torch 2.8.0+cu128 cuda True tok 0.22.1 {"event": "start", "env": {"torch": "2.8.0+cu128", "cuda_available": true, "device": "cuda", "gpu": "NVIDIA H100 80GB HBM3", "args": {"corpus_dir": "/corpus", "output_dir": "/replay/output", "budget_seconds": 240.0, "start_time": 1791014313.0, "save_margin_seconds": 240.0, "seed": 1234, "vocab_size": 16384, "min_frequency": 2, "d_model": 768, "n_layer": 12, "n_head": 12, "n_kv_head": 12, "ffn_dim": 2048, "seq_len": 8192, "dropout": 0.0, "batch_tokens": 262144, "micro_seqs": 8, "lr": 0.001, "min_lr_ratio": 0.1, "warmup_steps": 150, "weight_decay": 0.1, "grad_clip": 1.0, "checkpoint": 0, "val_fraction": 0.0, "val_every_seconds": 600.0, "log_every": 25}}} {"event": "tokenizer", "vocab_size": 16384, "bos_id": 0, "bytes_per_token": 5.6160043947994875} {"event": "data", "train_chunks": 1994, "val_chunks": 0, "bpt": 3.329} {"event": "model", "n_params": 97536768} {"event": "saving", "steps": 0} {"event": "done", "elapsed": 38.1}
- ✓train.sh wall clock · Grading's hard limit, with TRAIN_BUDGET_SECONDS=3600; this run had TRAIN_BUDGET_SECONDS=240.
- ✓startup · GET /health answered 200 after 4.0 s
- ✓GET /vocab · {"tokens": 16384, "special": 1}
- ✓POST /score · {"id": "validation-0001", "bytes": 5203, "tokens": 1329}
- ✓POST /score, characters outside the corpus · {"bytes": 1035, "tokens": 958}
- ✓POST /dist · {"prefix_tokens": 664, "logprobs": 16384, "logsumexp": 7.345173501371871e-08, "score_minus_dist": 0.0}
- ✓evaluation deadline · Projected from 177 of 1067 requests at concurrency 8: 91 of 551 /score requests on public documents in 2.5 s and 86 of 516 /dist and truncation requests in 2.2 s, each scaled to its full count, plus the first requests (0.4 s) and the restart and its first /dist (7 s) as measured
- ✓slowest request · 183 answered requests, median 0.18 s
- ✓restart startup · GET /health after the kill and the wipe of candidate state
- ✓requests answered · Every request was answered.
- ✓/dist normalization · max |logsumexp| over 84 audited /dist positions
- ✓/score vs /dist · max |score - dist| over the same positions
- ✓/score vs /dist bias · mean(score - dist) over the same positions
- ✓truncated text · max difference over 536 shared positions of 2 truncated texts
- ✓healthy after requests
The agent's last message before its session ended.
Submitted. From-scratch 97M-param causal LM (RoPE, SwiGLU, tied embeddings, 8k context) with byte-level BPE tokenizer (16k vocab, all 256 bytes guaranteed), trained on the 10M-word corpus only.
Recipe was chosen by H100 ablations on a corpus holdout (never public val/test): 100M beat 57M and 151M; dropout cost 28% speed with no gain; LR 1e-3; time-based cosine schedule. The 60-min rehearsal processed 555M tokens (34 epochs) in 3357s; pseudo-doc from-scratch estimate ≈1.19 bpb (reward ceiling 1.25).
frontier selfcheck passed all gates with 98–100% margin (startup 4s/300s, score-vs-dist 0.0002/0.02 nats, truncation 0.0004/0.02). Submission is code-only (14 files, 91K) as instructed.