AboutWhat I doProjectsLabContact

Training

expbook

A local, serverless experiment tracker: one run is one directory of JSON.

expbook CI statusMIT license

Install

pip install git+https://github.com/jmweb-org/expbook

If you use uv, also as an isolated CLI:

uv tool install git+https://github.com/jmweb-org/expbook

What 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.979

Features

  • 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.
View the code on GitHub

Other tools

hola@jmwebsoluciones.com