Asked about Knowing which run produced which result

What would you log for a training run?

An answer that works

Hyperparameters, metrics per epoch, the git commit with a dirty flag, the data version as a content hash, the environment and package versions, the seed, and the resulting model as an artifact. The commit and data version are what make it reproducible; the rest is for comparison.

Then they push further

The result is in the notebook. Why is that not enough?

A notebook records the last state of each cell rather than the sequence that produced the number, so a printed 0.93 can sit under code that would no longer produce it. It records outputs and not inputs, it is one run when the comparison needs twenty, and it cannot be searched by result. The record has to be written by the code, to somewhere outside the notebook, on every run.

Why log the seed if you are not chasing exact reproducibility?

Because it is what lets you separate an effect from noise. Sweeping the seed alongside the hyperparameters gives every group in the results table its own spread, and a difference smaller than that spread is not a result.

What gets marked up

Marked up for the data version and the dirty flag, and for treating the seed as a swept parameter rather than a constant.

Reading an answer is not being able to give one. The section that teaches this is Knowing which run produced which result, 4 hours of Experiment tracking.

Learn this properly