Overview
Everything the platform does starts from a seed dataset. The default way to get one is to send us your production traffic: an inference endpoint goes in front of the model you run today and records what it serves. If you can’t route traffic through us, a file of production logs works too, and with no LLM in production you prepare a small labelled dataset by hand.
can you send us your production traffic?
│
yes ────────┴───────── no
│ │
│ do you have its logs?
│ yes no
▼ │ │
INFERENCE ENDPOINT ▼ ▼
fronts your model, your trace a labelled dataset
records the traffic file you prepare by hand
│ │ │
└───────┬────────┘ │
▼ │
trace processing │
turns them into a │
seed dataset │
│ │
└───────────┬────────────┘
▼
SEED DATASET
│
▼
teacher evaluation can the teacher solve this at all?
│
▼
synthetic data generation the teacher writes the training data
│
▼
model training the student learns the task
│
▼
deployment ───────► behind a new inference endpoint,
which records again: back to the top
From teacher evaluation onward the paths are the same, with one addition for traces: the original production model’s score becomes a baseline your trained student can be measured against. The endpoint path also closes the loop. The student goes behind a new endpoint with the production model as its fallback, that endpoint records the traffic it serves, and the next iteration starts from those records.
The stages
Section titled “The stages”| Stage | What it does | Roughly how long |
|---|---|---|
| Task selection | Pick the task type, which sets the shape of your data | - |
| Collect traces with an endpoint | Records your production traffic as traces | as long as your traffic takes |
| Endpoint records to trace inputs | Converts the records into a trace file | - |
| Trace processing | Turns raw logs into a seed dataset | up to 45 min |
| Seed dataset | Prepares a seed dataset from labelled examples | - |
| Teacher evaluation | Feasibility gate: can the teacher do it? | up to 30 min |
| Synthetic data generation | The teacher writes the training set | up to 90 min |
| Model training | Fine-tunes and evaluates the student | up to 90 min |
| Deployment | Serves the model | up to 40 min |
| Serving behind the endpoint | Puts the student in front of the traffic, and starts the next round | - |
Task selection comes first, since the task type determines the shape of everything you prepare afterwards. Then you take the entry point that fits, the inference endpoint unless you can’t send us traffic, and from teacher evaluation onward every build follows the same path.
Every entry point needs the same two files, config.yaml and job_description.json. Their pages
cover what goes in them for that path.
Run teacher evaluation before you spend anything
Section titled “Run teacher evaluation before you spend anything”Synthetic data generation and model training are the two stages that cost real money. Each is credit-gated and takes up to 90 minutes. Teacher evaluation costs one credit, takes minutes, and tells you whether the task is solvable at all: if the teacher can’t do it, the student won’t learn it either.
Read your balance with distil credits-balance against your whole plan, not the next command. A
generation run with no training credit left spends a credit on data you then can’t train on.
What a config file is
Section titled “What a config file is”config.yaml says which task type you’re training for, which student model you’re training, and
which teacher is doing the teaching. Three fields are enough to start:
base:
task: classification # see Task selection
student_model_name: Qwen3-0.6B # the small model you're training
teacher_model_name: openai.gpt-oss-120b # the large model that teaches it
Everything else has a default. Each stage page introduces the config section it cares about at
the point where it matters: teacher evaluation introduces evaluation, generation introduces
synthgen, training introduces tuning. The complete table is
Config file.
Pick the models from Supported models, and note that tool-calling tasks restrict the choice.