FAQ

Data strategy

Synthetic training data: where it works and where it quietly fails

From phi-1's textbooks to Nemotron-CC's 1.9 trillion rephrased tokens — the published results, and the failure modes that do not show up in your loss curve.

Synthetic data has gone from a workaround to a mainstream ingredient at every training stage, including pretraining. The results are real and so are the limits, and the limits are mostly invisible until evaluation.

It is no longer a niche technique

The clearest sign of how far this has come: Nemotron-CC includes 1.9 trillion synthetically derived tokens out of 6.3 trillion — not for fine-tuning but for pretraining. Low-quality web documents were rewritten Wikipedia-style by an open 12B instruct model, and high-quality ones were expanded through four further prompts producing diverse question-answer pairs, distillations, knowledge extractions and knowledge lists.

At the post-training end, the large open SFT mixtures are predominantly generated, with named teachers and counts in the millions. Llama 3 reports over 2.7M synthetic examples for code SFT alone.

So the question is no longer whether synthetic data works. It is which jobs it does well.

A cartoon pipeline with a magpie and a llama labelled "LLM". Step 1 sends only the chat-template text "<|start_header_id|>user<|end_header_id|>" and the model returns the instruction "What materials should I use to build a nest?"; step 2 sends that instruction with an assistant header and the model returns "Building a nest! That's a wonderful project! ......". The pair is stored in a Magpie dataset, then passes through Filters and into SFT.
Magpie's recipe: give an aligned model nothing but the user-turn header of its chat template and it writes an instruction; feed that back and it writes the answer; filter the pairs and fine-tune on them. Volume is close to free, and whether each answer is correct still has to be checked. Image (edited): magpie-align/magpie · MIT repository · from “Magpie: Alignment Data Synthesis from Scratch by Prompting Aligned LLMs with Nothing”, arXiv:2406.08464

Where it works well

Three categories, with published support.

  • Teaching format and structure. If you need valid JSON against a schema, a consistent citation style, a fixed report layout — generation is ideal. The structure is exactly what a model can reliably produce, and it is checkable, so you can verify every example automatically.
  • Expanding a small real seed. Unsloth's guidance suggests having at least ten real examples before generating from them. The real set anchors the distribution; generation supplies volume and variation.
  • Curriculum-style content. phi-1 is the striking result here: 1.3B parameters, slightly over 50B total tokens seen, trained on filtered code plus under 1B tokens of generated Python textbooks and around 180M tokens of generated exercises, reaching 50.6% pass@1 on HumanEval and 55.5% on MBPP — in four days on eight A100s plus seven hours. Deliberately written pedagogical content outperformed much larger quantities of scraped code.

Where it fails, and why you will not notice

The failure modes share a property: they do not show up in the training loss, and they often do not show up in evaluation either if your eval set was generated the same way.

A schematic: real data (Data 0) is used to fit Model 0, which is sampled to make Data 1, used to fit Model 1, and so on to Model n along a timeline. A cycle on the right reads: probable events are overestimated, improbable events underestimated; finite sampling and approximate fitting; tails shrink over time.
Model collapse: each model is trained on data sampled from the previous generation's model. Finite sampling and approximate fitting over-represent probable events and under-represent improbable ones, so the tails of the distribution shrink with every generation. In the paper's language-model experiments, keeping 10% of the original data in each round limited the damage. Image (panel a, cropped): Fig. 1a of the article · CC BY 4.0 · from Shumailov et al. 2024, Nature, “AI models collapse when trained on recursively generated data”, doi:10.1038/s41586-024-07566-y

Facts the generator does not reliably know. You inherit its errors with its confidence, uniformly across however many examples you generate. This is the big one, and it is why synthetic data is much safer for teaching form than for teaching content.

Narrowed diversity. Generated data clusters. Ask a model for a thousand customer complaints and you get recognisably fewer distinct situations, phrasings and edge cases than a thousand real ones. The model trained on them is correspondingly brittle on the long tail — and the long tail is usually where production failures live.

Contaminated evaluation. If training and evaluation data come from the same generator, your benchmark measures agreement with that generator. The number can look excellent while the model is unusable.

Laundered licence problems. Generating from a model whose terms forbid training competitors does not clear the restriction, and the resulting dataset's own permissive licence does not either.

A chart of vocabulary size against number of tokens in millions (0 to 3): a solid blue human curve rising to about 120,000 and a dashed orange synthetic curve, with a shaded band of one standard deviation, rising more slowly to about 80,000.
How many distinct words appear as a corpus grows, fitted for human-written text and averaged over the study's synthetic datasets. By three million tokens the human text reaches about 120,000 distinct words, the synthetic text about 80,000. Generated data repeats itself more than it seems row by row, so measure its diversity before scaling it up. Image: Figure 2 of the paper · CC BY 4.0 · from “Synthetic Eggs in Many Baskets: The Impact of Synthetic Data Diversity on LLM Fine-Tuning”, arXiv:2511.01490

Verification is what separates the two outcomes

The single highest-value practice is filtering generated data by whether it is actually correct, wherever correctness is checkable. Rejection sampling is the general pattern: Llama 3 generates K candidates per prompt, typically 10 to 30, and keeps only the best of them. When the test that decides which candidates survive is a correctness check rather than a judgement of quality, that is verification in the strict sense.

Maths has an extractable answer. Code has tests. Structured output has a schema. Extraction has a record you hold. In all of these you can generate at volume and keep only what verifies, which converts a quantity advantage into a quality one.

Where you cannot verify — open-ended explanation, tone, judgement — generated data should be sampled and read by a person, and treated as a supplement to real data rather than a replacement. Unsloth's guidance makes the same point plainly: check the generated data and remove or improve poor-quality responses.

Two labelled panels: (a) 'Annotation pipeline', where sampled crops of a city skyline are scored by four depth models (Depth Anything V1 and V2, Marigold, Geowizard) that vote, disagreements routed to a human annotator and agreements sent back to re-sampling; (b) 'Encompass 8 scenarios', a pie chart splitting DA-2K into Indoor 20%, Outdoor 17%, Adverse style 16%, Non-real 15%, Transparent/Reflective 10%, Aerial 9%, Object 7% and Underwater 6%.
A model-voting annotation pipeline: several models label each sample and only the disagreements reach a human. Synthetic labels are cheapest exactly where the models agree, which is also where they add the least. Image: DepthAnything/Depth-Anything-V2 · Apache-2.0 repository

A workable division of labour

Putting the above together into something you can plan around:

Use real data for your evaluation set, always, and for anything teaching facts or covering the long tail of situations your users actually produce. A few hundred real, hand-checked examples is the foundation everything else is measured against.

Use synthetic data for volume, for format and structure, for augmenting a real seed, and for domains where verification is programmatic.

And record which is which. A dataset that mixes the two without marking them cannot be audited later, and the first question anyone asks when a model behaves oddly is where the data came from.

Questions people ask

Will training on synthetic data cause model collapse?

The collapse results concern repeatedly training on unfiltered outputs of models trained on outputs, over generations. That is not what the practices here describe — current recipes anchor on real data, filter by verification, and use generation as one ingredient among several. The risk is real in principle and is managed by keeping real data and verification in the loop.

How much of my mixture can be synthetic?

No published threshold, and the answer depends on the job. Nemotron-CC runs roughly 30% synthetic at pretraining scale; several open SFT mixtures are almost entirely generated. The more useful constraint is that your evaluation set should be real, and the facts you depend on should come from somewhere verifiable.

Which model should I generate with?

The strongest one whose terms permit your use — and check that second clause first. Open-weight models with permissive licences are the safe default, and are increasingly what the major open datasets use, though older staples such as UltraFeedback were rated by GPT-4. Also prefer a model that is actually good at your domain; generating clinical text with a general model produces plausible-sounding text with clinical errors.

Can I generate preference pairs?

Yes, and UltraFeedback is essentially that — four responses per prompt from a pool of 17 models, rated by GPT-4 on four aspects. The thing to avoid is rejected answers that are bad in a uniform way, which teaches the model to detect an artefact rather than to prefer quality.

Stop hunting. Start searching.

Tens of thousands of curated datasets, searchable in plain language — with the licence and size checked before you download anything.

Search Dataset Finder →