Skip to content

Experiment tracking that lives in a folder

nuboard logs your training runs with three Python calls, keeps every run as a plain folder on disk, and opens thousands of them in a fast viewer that runs on your own machine. There is no account to create, no server to keep running and no database to back up.

Quickstart Guides

pip install nuboard
uv pip install nuboard   # or: uv add nuboard, in a uv project
import nuboard as nb

with nb.init("llm-pretrain", run_name="baseline", config={"lr": 3e-4}) as run:
    for step in range(10_000):
        loss = train_step()
        run.add_scalar({"train/loss": loss}, step=step)  # a few µs, never blocks training
$ nuboard up experiments
nuboard serving /home/me/experiments (31 runs) at http://localhost:6070/  (Ctrl+C to stop)

All your runs, one fast viewer. Group a sweep into mean ± std bands, smooth, zoom and catch NaNs and spikes while runs train.

The Charts page: a learning-rate sweep grouped by lr, with mean ± std bands over three seeds and health alerts below The Charts page: a learning-rate sweep grouped by lr, with mean ± std bands over three seeds and health alerts below

Log a range, not just a number. Give add_scalar a low and high and each run gets its own shaded band, such as ± std over evaluation batches.

eval/loss for four runs, each drawn with a shaded band from its logged low and high values eval/loss for four runs, each drawn with a shaded band from its logged low and high values

See where the time goes. Wrap training and validation in run.timer: mean and p95 per step, slow outliers, and which rank everyone waited for.

The Timing tab of a run: each timer with its calls, mean per step, p95 and total, and a per-rank timeline of one step The Timing tab of a run: each timer with its calls, mean per step, p95 and total, and a per-rank timeline of one step

Audio with its annotations. Overlay a voice activity probability and label tracks on the waveform, then play, zoom and leave notes on any region.

A waveform figure: a denoised speech clip with its speech probability on top and target, predicted and event tracks below A waveform figure: a denoised speech clip with its speech probability on top and target, predicted and event tracks below

What ran before what. Overlapping runs, crashes and the artifact versions each run produced, on one time axis.

The Timeline page: one bar per run of a project, colored by status, with artifact versions marked as diamonds The Timeline page: one bar per run of a project, colored by status, with artifact versions marked as diamonds

Keep the why next to the what. Each card is a question, the runs that tested it and a verdict, linked to the idea that came next.

A hypotheses board: cards with a question, the runs that tested it and a verdict, linked by arrows that say what led to what A hypotheses board: cards with a question, the runs that tested it and a verdict, linked by arrows that say what led to what

  • Three calls to log


    init, add_scalar, finish. Config, git commit and diff, installed packages, GPUs, command line and rank are recorded for you. The logging side uses only the Python standard library.

  • One folder per run


    A run is a folder you can copy, rsync, zip or delete. Stars, notes, tags and properties live next to the data in annotations.json, so they move with it.

  • Grouped charts


    One line per learning rate with mean ± std bands over seeds, smoothing, zoom that loads finer data, a linked crosshair and live updates while runs train.

  • Sweeps


    Parallel coordinates with brushing, objective-vs-parameter scatters and a rank correlation per parameter show which settings matter.

  • Health alerts


    NaN and Inf values, loss and gradient spikes and throughput drops are found per run and rank and shown in the runs table and under charts.

  • Artifacts and lineage


    Versioned datasets and checkpoints with a lineage graph: which run produced a version, and which runs used it.

About NuBoard

NuBoard is a local alternative to TensorBoard and hosted experiment trackers for people who train models on their own machines or clusters. Each run writes an append-only binary log from a background thread, so a crash loses at most the last second of data. When a run finishes, the log is compacted into a Parquet file with precomputed zoom levels, and the run's health alerts are recorded next to it.

nuboard up points the viewer at any folder: a single run, a project, or a tree of many projects. It finds every run, keeps a small SQLite cache of their metadata outside the folder, and filters them with a short query language such as where tags has "sweep" and train/loss.min < 2.4 group by config.optim.lr. Every view is a URL, and views and collections can be saved into the project folder and committed to git.

License

NuBoard is free software under the MIT License.

Guides