Skip to content
nano-gpt-data-curation

claude-opus-4-8

nano-gpt-data-curation — graded by the task's verifier against a measured baseline.

backend
modal
variant
claude claude-opus-4-8
metric
held-out multi-domain perplexity
actions
48
duration
47m
recorded
2026-08-04

run iddclm-nano-curation__mqoYzmu

Score

reward
358.070
compare against every run on this task →

Summary

All deliverables are complete and verified. Final summary:

Result

I curated the pool with a target-matching quality classifier and drove held-out dev perplexity from the random-selection baseline 453.9 → 349.4 (−23%) on the frozen 30M-GPT recipe.

Method (submission/curate.py)

The disclosed target multi_dev.npy is the target register in token form, so I decoded it (2,646 EOS-delimited segments) as positive examples and a random pool sample as negatives, then scored every pool doc by a length-normalized Naive-Bayes log-likelihood-ratio over word unigrams+bigrams: mean_f [ log P(f|target) − log P(f|pool) ]. Three refinements, each A/B-verified against the frozen trainer:

ConfigurationDev PPL
Random pool (baseline)453.9
Unigram NB + quality gates360.3
+ bigrams (prose vs. keyword salad)356.7
+ coverage gate + length/diversity prior (final)349.4

Key findings: an in-vocab coverage gate was needed to stop mixed foreign/code pages from ranking spuriously high, and — because the budget is fixed — a mild length prior toward the target's ~350-word typical segment spread the 12M tokens across more distinct docs, which beat greedily taking the highest-scoring (longest) docs. Pushing that prior too hard regressed to ~357, confirming a real optimum.

Deliverables

  • `submission/selection.json` — 60,000 priority-ordered ids (verified: unique, in-range, packs to exactly 12,000,000 tokens).
  • `submission/curate.py` — reproducible; re-running regenerates the identical selection deterministically (no dependencies beyond numpy + the GPT-2 tokenizer, since there's no internet/sklearn).
  • `claim.md` — hypothesis, mechanism with three non-PPL observables (heavy-tailed scores, register shift, diversity-beats-raw-score — all confirmed), falsification, and transfer.

The gains come from register/diversity mechanisms rather than dev-set-specific tuning, so they should transfer to the hidden disjoint target from the same broad HQ domain.

Transcript