When eval prompts appear verbatim inside an SFT file after a synthetic-data run, what's the root cause?
A team runs a synthetic-data generation pass over a labelled dataset to grow it 10x for SFT. After shipping the fine-tune, the on-call notices that several prompts from the eval set appear verbatim inside the training file. The generator was a strong teacher model and the input seeds were sampled from the original labelled pool. What specifically went wrong, and what is the correct process for splitting and generating?
Eval seeds were fed into the synthetic generator, so paraphrases of held-out items landed in training and inflated the post-FT scores.
Imagine writing a practice test for yourself by paying a tutor to invent new questions. You hand the tutor your real exam paper so they know the style. The tutor obligingly rewords each real question into ten new ones and you train on every one of them. Come exam day you ace it, but the score is fake because you essentially studied the answers. The fix is obvious once you see it. Keep the real exam locked in a drawer before the tutor sees anything. Only show the tutor a separate batch of warm-up problems. Then, after the tutor produces new questions, scan them against the real exam and throw out any that look suspiciously similar. The exam stays clean and your score reflects what you actually learned.
Detailed answer & concept explanation~7 min readEverything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
6 min: name seed-set contamination, walk through how paraphrases bypass string dedup, prescribe split-first-generate-second with embedding-level similarity checks, and add an external held-out shard.
Real products, models, and research that use this idea.
- OpenAI's Evals and Anthropic's evaluation guidelines both recommend pre-registered eval splits that pre-date any synthetic augmentation pass.
- Stanford's Alpaca and the LIMA paper from Meta both highlighted that synthetic SFT data inherits the seed distribution, motivating careful seed selection.
- Hugging Face's datasets library exposes deterministic split helpers precisely so eval shards can be pinned before downstream augmentation.
- Modern flagships like Claude Opus 4.7, GPT-5.5, and Gemini 3.1 Pro publish data-decontamination procedures that scan benchmark items against training corpora using embedding similarity.
What an interviewer would ask next. Try answering before peeking at the approach.
QWhat similarity threshold and embedding model would you choose for the post-generation dedup scan?
QHow would you detect that a leak has already shipped in a deployed model?
Don't say thisRed flags and common mistakes that signal junior thinking. Click to expand.
Red flags and common mistakes that signal junior thinking. Click to expand.
Splitting train and eval AFTER synthetic generation. By then the synthetic shard already encodes paraphrases of eval items and the leak is baked in.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.
Same topic, related formats. Practice these next.