Training
expbook
A local, serverless experiment tracker: one run is one directory of JSON.
Install
pip install git+https://github.com/jmweb-org/expbookIf you use uv, also as an isolated CLI:
uv tool install git+https://github.com/jmweb-org/expbookWhat it does
Every training script prints its own numbers and then they are gone, or they live in a notebook cell nobody reruns, or in a spreadsheet somebody forgot to update. Whether this run actually beat the last one ends up decided from memory. expbook is the smallest thing that fixes that: wrap a run in track() and it writes its params, its metric history and its final summary straight to disk as plain JSON. There is no daemon to start, no server to point a browser at, and no database that can get corrupted mid-run.
In action
$ expbook list linreg
exp run status duration metrics
linreg cc142382 completed 0.0s b=0.9604, mse=0.09898, w=2.909
linreg 8148c173 completed 0.0s b=0.9738, mse=0.09421, w=2.979
linreg 34a3f5c4 completed 0.0s b=0.9738, mse=0.09421, w=2.979Features
- —track() writes params.json the moment a run starts, before anything else can fail.
- —run.log() appends one line to metrics.jsonl per step, nothing buffered in memory.
- —expbook compare puts two runs side by side, params and metrics, with deltas.
- —expbook best finds the run with the highest or lowest metric in an experiment.