How it works
From file to reusable training data
Validation happens once at upload, not on every job.
- 1
Upload
JSONL goes straight to storage with a progress bar — from the Datasets page or inline in the fine-tune wizard.
- 2
Validate
Format, required fields and lengths are checked automatically, usually in 1–10 seconds.
- 3
Ready
Chat-format data is ready to train; seed prompts are ready to synthesize.
- 4
Synthesize
Optional: an open teacher model writes completions for your seeds using your own key.
- 5
Share
Every dataset is visible to your teammates on the same account.
- 6
Train
Point as many fine-tuning jobs at it as you like — no re-upload.
Two ways in
Bring examples, or bring inputs
Both paths end in the same chat-format dataset the trainer reads.
Chat-format JSONL — ready to train
Rows you already have: an OpenAI-style messages array ending before the assistant turn, plus the completion you want the model to learn. Trains directly.
Seeds + skill prompt — ready to synthesize
Only have inputs? Upload one seed per line plus a system prompt describing the skill. An open teacher model (DeepSeek R1, Qwen3, GLM-4.5, Kimi K2) writes the completions; you review them before training.
# chat-format JSONL — one example per line
{"messages":[{"role":"system","content":"You are a billing support agent."},{"role":"user","content":"Why was I charged twice?"}],"completion":"I can see two authorizations on your card. One is a hold that will drop off within 3 business days ..."}
{"messages":[{"role":"system","content":"You are a billing support agent."},{"role":"user","content":"How do I download an invoice?"}],"completion":"Open Billing, choose the month, and click Download PDF ..."}# seeds JSONL — one input per line, plus a skill prompt in the console
{"input":"Why was I charged twice?"}
{"input":"How do I download an invoice?"}
{"input":"Can I switch to annual billing?"}
# → synthesized with an open teacher model using your own API keyValidation
Problems surface before a GPU is booked
A dataset that fails validation is never charged. Hard checks reject; warnings are shown and let you proceed.
Rejected
- Every example carries a system prompt (the skill) and a non-empty completion
- At least 100 examples — fewer than that and a run will not learn anything
- No single field longer than 64 KB
- Prompt plus completion fits the base model's context window
Warned
- Fewer than 1,000 examples — training proceeds, quality will be limited
- Duplicate user inputs
- Unusually wide length variance, a common sign of schema drift
Built for teams
One dataset, many experiments
Everything around the file that makes it safe to reuse.
Reusable across jobs
A dataset is validated once and referenced by id. Run a fast iteration, then a quality run, then a different base model — all against the same rows.
Shared with your team
Datasets belong to the account, so every teammate can see them and train on them.
Dataset card
Each dataset carries a description, tags, and a structure summary computed at validation — example count and length distribution — so you know what you are training on.
Your teacher key, sealed
Synthesis uses your own key for the teacher provider. It is envelope-encrypted with KMS and never stored in plaintext.
Storage is not billed
Each account gets a 50 GiB dataset quota by default — roughly a hundred realistic datasets. Failed validation costs nothing.
Upload from the wizard
Realise you need a dataset halfway through configuring a job? Upload it inline without losing the rest of the form.
At a glance
The essentials
- Format
- JSONL
- Validation
- 1–10 s typical
- Minimum
- 100 examples
- Field cap
- 64 KB
- Quota
- 50 GiB / account
- Storage
- Not billed
- Teachers
- DeepSeek R1 · Qwen3 · GLM-4.5 · Kimi K2
- Upload
- Direct to storage, accelerated