JSONL Builder for Fine-Tuning
Build a fine-tuning file from question-and-answer blocks, or validate one you already have, with every problem reported against its line number.
0 warning(s). An estimated 263 training tokens in total, which is what a fine-tuning run is billed on.
- Examples
- 3
- Errors
- 0
- Warnings
- 0
- Duplicated examples
- 0
- File characters
- 1,051
- Estimated total tokens
- ≈ 263
- Estimated tokens, mean example
- ≈ 88
- Estimated tokens, longest example
- ≈ 90
- Estimated tokens, shortest example
- ≈ 86
- Examples over 8,000 tokens
- 0
- Turns by role
- system 3, user 3, assistant 3
Fine-tuning fails on the data far more often than on the hyperparameters, and it fails in ways the loader will not tell you about. A file where every example ends on the user's turn trains nothing at all, because only the final assistant message contributes to the loss. A file with the same example twenty times teaches the model that one answer very well. A file where half the examples are 200 tokens and half are 9,000 will spend most of its budget on the long tail. None of those are syntax errors, so a validator that only checks JSON will pass all three.
The system message is not free
A system prompt repeated on every example is repeated in the training token count, and on a thousand short examples a 60-token system message can be a fifth of the whole run. It is often the right thing to do — you want the model to learn the behaviour in the context it will see at inference — but do it knowing the arithmetic, which is in the table above.
Read the warnings, not just the errors
Errors here mean the file will be rejected. Warnings mean it will be accepted and will teach the model something you did not intend, which is the more expensive failure: you pay for the run, wait for it, and then evaluate a model whose oddities trace back to a duplicated block or two user turns in a row.