Blog

Product update

Introducing model lineage

4 min read

Fine-tunes are starting to have family trees

A Tuned Tensor model does not always start from a public base model. Sometimes the useful next run starts from a model you already trained: a cleaner classifier, a sharper extractor, a previous experiment that is close enough to keep going.

Model lineage makes that history visible. When a run starts from a prior Tuned Tensor model, we now track the parent model, persist it on the run and produced model, and show the resulting tree in the dashboard.

When you are looking at a model, you should be able to tell where it came from, which run produced it, and how it relates to the rest of your experiments.

What changed in the dashboard

The Models page now has a lineage view grouped by base model. Each base model gets its own tree, with root models at the top and child models nested underneath the parent they continued from.

Lineage tree

Models are grouped under their base model and connected to their parent model when ancestry is known.

Run context

Each node links to the model and shows the source run number when a run produced that model.

Status and score

Completed, failed, and in-flight runs stay visible next to their latest evaluation score.

Parent column

The all-models table now shows whether a model came from the base model or another model.

The model detail page also gets a focused lineage panel. It shows the ancestor path, highlights the current model in the tree, links back to parent models, and keeps the source run close by.

Continued training stays traceable

The run creation path now stores the selected parent model on the run itself. Auto-tune iterations do the same, so a multi-step tuning session can leave a useful audit trail instead of a flat list of checkpoints.

We still guard the important boundary: the parent model has to match the behaviour spec base model. That keeps the tree honest and prevents a child model from being attached to an unrelated base family.

Base model
  -> first fine-tune
    -> continuation run
      -> tuned child model

Why this is useful

Small-model work is iterative. You try a dataset, tighten the behaviour spec, fix the weird failures, and sometimes continue from the best model so far. Lineage makes that process easier to inspect and easier to explain later.

Instead of scanning a long list of similarly named models and trying to remember which one came before which, you see the branch structure directly: base model, roots, children, source runs, statuses, and scores. The more experiments you run, the more it matters to know the path that produced the model you are about to ship.