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
- 36
- duration
- 40m
- recorded
- 2026-08-04
run iddclm-nano-curation__wPVYcnk
Score
reward
343.200
Summary
All deliverables are in place and validated. Summary:
Result
- Dev held-out perplexity: 335.7 vs 457.5 random baseline — a 27% reduction.
Approach
I used DSIR-style importance selection. Since the pool is unlabeled raw web text and no external quality labels exist, I derived the quality signal entirely from the disclosed target itself:
- Model the target: decoded
multi_dev.npy(the disclosed broad target — Wikipedia, high-quality web, news, technical Q&A) into a reference unigram+bigram word distribution. - Model the background: built the same distribution over the full raw pool.
- Rank: scored each doc by average log-likelihood ratio
mean_w log p_target(w)/p_pool(w)— docs whose vocabulary looks like clean multi-domain prose float to the top; forum junk/spam/boilerplate sink. - Gate: dropped degenerate docs (too short, symbol-dominated, or highly repetitive).
- Output:
selection.json= 173,739 ids in priority order (the top ~13k fill the 12M-token budget).
What I tested and ruled out (in claim.md)
- Random baseline: 457.5 → confirms selection helps.
- Stratified DSIR (forcing 25% per register): 361.4 — worse; the pool contains little genuine code-Q&A, so register quotas dilute the top ranks with weaker matches. Global ranking wins.
- Looser quality gate (0.45 vs 0.60 alpha fraction): 340.3 vs 335.7 — admitting symbol-heavy docs hurts, so I kept the stricter gate.
Deliverables: /workspace/submission/selection.json, /workspace/submission/curate.py (reproduces the selection from the stated criterion), and /workspace/claim.md.