
Your Fine-Tune Has No Data Yet. Here's How to Build the Dataset Without Annotators.
Chris Harper
2 min read
Sep 2, 2026 · 04:03 UTC
TL;DR: Generate a JSONL fine-tuning dataset without annotators — describe your task, seed it with examples, HuggingFace's Synthetic Data Generator drafts and LLM-judges them, then push straight to the Hub.
What you'll be able to do after this: Generate a chat-format fine-tuning dataset from a task description and five seed examples, filter it with an LLM judge, push the result to HuggingFace Hub, and load it into TRL's SFTTrainer in a single datasets.load_dataset() call.
Three key ideas:
- LLM as teacher. A frontier model (default: Llama 3.3 70B via the free HuggingFace Inference API) generates diverse variations of your seed examples. The seed shapes the style; the LLM fills the volume.
- LLM as judge. A second pass scores each generated example for quality and task alignment. Low-scoring examples are filtered before the dataset is pushed. The 2026 finding from synthetic-data research: an unfiltered dataset is reliably worse than a smaller filtered one.
- JSONL chat format. Each entry is
{"messages": [{"role": "system", ...}, {"role": "user", ...}, {"role": "assistant", ...}]}— the same format TRL's SFTTrainer and Unsloth's FastLanguageModel both consume directly.
Walk-through:
- Open the Synthetic Data Generator Space — free, no GPU required.
- Describe your dataset in plain language: "customer support chat for a Python SDK, questions about rate limits and auth errors."
- Add 3–5 seed examples to anchor the style and vocabulary.
- Select Chat Dataset, set sample count (200 is enough to verify quality), click Generate.
- Review a sample in the Argilla panel; re-generate any section that's off.
- Push to Hub →
datasets.load_dataset("your-org/dataset-name")in your training script.
Limits: The Spaces version only handles text classification and chat datasets; RAG, preference, and eval tasks require the distilabel Python SDK directly. Generation speed is ~20 samples/minute on the free Inference API — budget an hour for 1,000 examples. Quality is bounded by your seed: vague seeds produce coherent but useless data. Switch to a local or paid inference endpoint for larger volumes.
Sources: Introducing the Synthetic Data Generator — HuggingFace Blog · Synthetic Data for LLM Fine-Tuning in 2026 — Future AGI · distilabel docs — Argilla/HuggingFace