FAQ

LLM training

Supervised fine-tuning datasets: 1,000 examples or a million?

The open SFT mixtures with their real row counts, and the three-orders-of-magnitude disagreement between the LIMA camp and the Tülu camp.

The two best-documented SFT recipes sit at a thousand examples and nearly a million, and both report excellent results. That disagreement is not sloppiness — it reflects two different goals, and knowing which one is yours settles how much data you need.

What SFT teaches

Supervised fine-tuning takes a base model that already has the knowledge and teaches it to respond: what format to use, how to follow an instruction, when to refuse. The data is (prompt, response) pairs or multi-turn transcripts — a messages list of roles and content — with the loss computed on the assistant turns only.

Per LIMA, it is explicitly not primarily knowledge acquisition. That framing is what makes the small-data result plausible: if you are selecting among behaviours the model already has rather than installing new ones, you need far fewer examples than intuition suggests.

Each stage consumes a different shape of data, usually less of it than the stage before, so the stage your goal belongs to decides what you collect and how much of it.

The two camps, with their numbers

The LIMA position. LIMA fine-tuned a 65B base model on exactly 1,000 carefully curated examples. The result was judged equivalent or preferable to GPT-4 in 43% of cases, 58% against Bard and 65% against DaVinci003. Its ablations are the interesting part: doubling the Stack Exchange training set did not improve response quality, while diversity of source did, and filtered versus unfiltered data made a significant difference. Thirty multi-turn dialogue chains raised excellent responses from 45.2% to 76.1%.

A line chart of generation quality (3.2 to 4.0) against number of training examples (2K, 4K, 8K, 16K, 32K): points with error bars all between about 3.82 and 3.86, with a flat dashed trend line.
From the LIMA study: 7B models fine-tuned on 2,000 to 32,000 quality-filtered Stack Exchange examples, with answers rated by ChatGPT. Sixteen times more data leaves the rating flat, around 3.8 on ChatGPT's 1-to-6 scale. Past a few thousand clean examples, more of the same kind buys nothing; diversity and quality are what move it. Image: Figure 6 of the paper · CC BY 4.0 · from Zhou et al. 2023, “LIMA: Less Is More for Alignment”, arXiv:2305.11206

The Tülu position. Tülu 3’s SFT mixture contains 939,344 samples, curated down from a pool of 23,327,961 prompts. The SFT checkpoints average about 60 at 8B and 72.6 at 70B; the final Tülu 3 models, after preference tuning and RLVR on top, reach 65.1 and 76.2. Notably, the paper says they capped the SFT mixture not because more would not help but because “we allocated other prompts for preference optimization”.

Both are true. A thousand examples is enough to teach a style of response. Covering maths, code, safety, instruction-following, multilingual chat and tool use to a uniform standard takes a mixture, because each capability bucket needs its own examples.

A results table with columns Model, # ex., AIME 2024, MATH 500 and GPQA Diamond, in three sections: API only, Open Weights, and Open Weights and Open Data. Qwen2.5-32B-Instruct scores 26.7, 84.0 and 49.0; r1-distill, with 800K examples, 72.6, 94.3 and 62.1; Sky-T1 and Bespoke-32B, with 17K each, 43.3, 82.4, 56.8 and 63.3, 93.0, 58.1; the four s1 and s1.1 rows, each with 1K examples, score 50.0 to 56.7 on AIME, up to 95.4 on MATH 500 and up to 63.6 on GPQA Diamond.
s1's results table, with training-set size in the '# ex.' column. A thousand curated examples take Qwen2.5-32B-Instruct from 26.7 to 56.7 on AIME 2024; r1-distill's 800,000 reach 72.6. Both camps in one table: a small set gets most of the way, and a far larger one still buys points on the hardest test. Image (cropped): simplescaling/s1 · Apache-2.0 repository · from “s1: Simple test-time scaling”, arXiv:2501.19393

The open mixtures and their real sizes

Counts are as published on each dataset's own card or paper. Where a total is absent, it is absent — several of the large NVIDIA mixtures publish category counts but no sum.

DatasetPublished sizeLicence
Tülu 3 SFT mixture939,344 samples, from a 23.3M prompt poolODC-BY-1.0; card notes some subsets non-commercial
OpenHermes 2.51,001,551 rows across 15 named sourcesno licence stated on the card
OpenThoughts3-1.2M1.2M rows: 850k maths, 250k code, 100k scienceApache-2.0
Llama-Nemotron-Post-Trainingmaths 22.1M, code 10.1M, science 709k, IF 56kpredominantly CC-BY-4.0, mixed subsets
Nemotron-Post-Training-v2chat 628k, STEM 355k, maths 239k, code 175k, ~4.9M multilingual across 5 languagesCC-BY-4.0, mixed subsets
SmolTalk1.1M pairs; MagPie-Ultra 431k is the largest componentApache-2.0 for its new subsets; reused sets keep their own licences
smol-smoltalk460,341 train / 24,229 testApache-2.0
LIMA1,000 sequencesCC BY-NC-SA, or a stricter source licence (card)
A pipeline diagram. 175 self-instruct seed tasks and a text-davinci-003 model feed a 'Modified Self-Instruct Instruction Generation' step that produces 52K instruction-following examples; those examples plus a LLaMA 7B base model feed a 'Supervised Finetuning' step that produces Alpaca 7B. Two boxes underneath print an example seed task and an example generated task, each with its instruction and output text.
The Alpaca recipe with its real numbers: 175 seed tasks expanded to 52,000 supervised examples, plus a worked example of what one row holds. Still the clearest picture of how a small seed set becomes an SFT corpus. Image: tatsu-lab/stanford_alpaca · Apache-2.0 repository

Which position applies to you

The deciding question is how many distinct capabilities you need the model to have.

One narrow behaviour — summarise these documents this way, classify these tickets, always emit this JSON schema. You are in LIMA territory. Hundreds to a few thousand examples, and your effort is far better spent on consistency and review than on volume. Every example that contradicts the others costs you more than an additional correct one gains.

A general assistant — helpful across maths, code, chat, refusals and several languages. You need a mixture, and you need enough of each bucket. This is where the hundred-thousand-plus counts come from, and where starting from an existing open mixture and adding your own domain slice is far more sensible than building from scratch.

Most people asking the question are in the first case and budgeting for the second.

Composition matters more than count

The useful lesson from the large mixtures is not their size but their structure. Tülu 3 curated nearly a million samples from 23 million candidates — a 4% acceptance rate — and organised them by capability so that coverage was deliberate rather than accidental.

If you build or combine a mixture, record the per-bucket counts and keep the balance deliberate. Merging three public datasets without checking usually means whichever source happened to be largest dominates the model's behaviour, and conflicting answer styles across sources teach it to be inconsistent.

Deduplicate across sources too. The open instruction datasets overlap heavily — several of them list each other as components — and duplicates get silently overweighted.

A flow diagram. Code question sources (CodeFeedback, DolphinCoder, ShareGPTCode, Glaive, MagiCoder) and maths question sources (AutoMath, MathInstruct, OpenMathInstruct, MathPLUS) feed a 'Fuzzy String Deduplication' box and then DeepSeek-R1. Its output joins the earlier OpenThoughts-114k recipe, shown as a thumbnail, and open-r1/OpenR1-Math-Raw's verified reasoning traces to form OpenThoughts2-1M.
OpenThoughts2-1M as a composition: nine named question sources, fuzzy deduplication across all of them before a single answer is generated, then two existing sets folded in. Deduplicating across sources is the step that stops the overlap between public sets from being silently weighted twice. Image: open-thoughts/open-thoughts · Apache-2.0 repository

Questions people ask

What is the smallest SFT dataset worth trying?

Unsloth's documentation suggests a minimum of 100 rows with over 1,000 preferable, and LIMA's result at 1,000 supports that range for a single coherent behaviour. Below 100 you are mostly testing whether the pipeline runs. The honest framing is that a few hundred consistent, reviewed examples is a real experiment, not a toy.

Should I use an existing open mixture or build my own?

Both, in that order. Start from an open mixture with a licence you can live with to get general instruction-following, then add your own domain examples. Building a general mixture from scratch duplicates work that has been done better, and your own data is the part nobody else has.

How many epochs?

One to three, which is both the documented range and consistent with what the large open recipes do. Beyond that you are increasing memorisation rather than capability — watch for training loss dropping below about 0.2, which indicates overfitting, and for validation loss rising while training loss falls.

Does multi-turn data matter if my use case is single-turn?

Less, but it is cheap insurance and LIMA's ablation is striking: adding just 30 dialogue chains raised excellent responses from 45.2% to 76.1%. If users might ever ask a follow-up, a small number of multi-turn examples is worth including, and remember to compute loss on every assistant turn rather than only the last.

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 →