Build a synthetic dataset for a specific skill, train a small open model on it, and prove with held-out real data that it helped.
The brief
Choose a narrow, measurable skill where small models are weak. Examples:
- turning messy text into valid structured JSON for a fixed schema
- answering questions about a domain's documentation, with citations
- writing SQL for a given schema from plain English
- classifying and summarizing support tickets in a house style
- following a strict output format or persona reliably
Pick something where you can build a verifiable evaluation: tests that run, schemas that validate, or answers a person can check.
Requirements
- Skill and evaluation first. Define the skill, and build a held-out evaluation set of at least 100 real or human-verified examples before generating anything. Keep it out of the pipeline.
- Baseline. Score the base model, and a prompted baseline, on the evaluation set.
- Generation design. A taxonomy or seed strategy for diversity, with at least two generation methods (for example Self-Instruct style plus grounded generation), and a documented prompt set.
- Responses and checks. Responses verified where possible (execution, validation, rejection sampling) and a validated judge for the rest, with measured agreement against hand labels.
- Filtering and dedup. A staged pipeline with counts removed at each stage, near-duplicate removal and a diversity audit.
- Decontamination. Check generated data against your evaluation set using more than exact match.
- Ablations. At least four training runs that isolate the value of generation, filtering and mixing with real data.
- Training and results. Fine-tune a small open model (LoRA or QLoRA is fine), and report scores, general regression checks and example outputs.
- Licensing and dataset card. The terms of every model and source used, the license you chose and a complete dataset card.
- Write-up. Method, results table, failures you found in the data, cost in GPU hours or dollars, and what you would change.
Suggested path
| Step | Output |
|---|---|
| Define skill, build eval set | held-out evaluation |
| Score baselines | baseline table |
| Design taxonomy, generate pilot of 200 | pilot data and read-through notes |
| Add verification and judge | validated pipeline |
| Filter, dedup, decontaminate | clean dataset with stage counts |
| Scale generation, train ablations | run table |
| Evaluate, write dataset card | results and card |
| Publish | public dataset and repo |
Stretch goals
- Add a preference stage with chosen/rejected pairs and DPO, and measure the gain over SFT alone.
- Try a second generator model and compare the resulting data and model quality.
- Test for model collapse by training a second generation on the first model's outputs, and measure the loss on rare cases.
- Release the dataset on a hub with versioning and a license.
Share it
Publish the dataset, the pipeline code, the evaluation set (if licensing permits) and the results. The most useful reports show what did not work: "unfiltered data hurt; filtering recovered 9 points; mixing in 200 real examples added 4 more."
Where to go next
Re-read with your own experiment in mind.
Study how a large synthetic alignment pipeline is put together end to end.
Rebuild your pipeline as a reusable, resumable workflow.