A faster, columnar TensorBoard-style scalar viewer for many series and many runs.
Project description
tb_like
A faster, columnar TensorBoard-style scalar viewer — built for many series and many runs.
TensorBoard re-parses event files on demand and gets slow when a run has tens of
thousands of scalar series across hundreds of experiments. tb_like instead
converts TensorBoard event files into per-run Parquet once, then serves
downsampled series on demand to a fast Plotly dashboard. New events are picked
up incrementally in the background.
Why it's fast
- Convert once, read many. Each run's
events.out.tfevents.*are parsed into a columnar Parquet file sorted by(tag, step), with row-group statistics so a query for a few tags only touches the matching row groups — even when a run has ~18k series. - Incremental & idempotent. Ingestion tracks each event file's size and record
count, so re-scans only parse new data. A background watcher keeps the cache in
sync; parsing is parallelized across event files with
joblib. - Lazy, prioritized rendering. The dashboard renders charts only as they scroll into view, fetched through a priority queue (visible first, then neighbors, biased toward the scroll direction).
- LTTB downsampling keeps long curves cheap to draw without losing their shape.
Install
pip install tb-like
# or
uv tool install tb-like
Quick start
A "run" is a directory containing events.out.tfevents.* files. Point tb_like
at a directory of runs and open the dashboard — that's it:
my_runs/
run_a/ events.out.tfevents.* config.yaml
run_b/ events.out.tfevents.*
...
tblike my_runs --port 8000 --jobs 8
# open http://127.0.0.1:8000
The background watcher discovers runs under the folder, converts any that
changed to Parquet (parsing event files across --jobs worker processes), keeps
the cache in sync, and serves them — no separate build step. The cache lives in
<runs_dir>/.tblike_cache by default (override with --cache-dir).
Dashboard features
- Hierarchical, searchable tag tree (regex filter) with smart grouping:
path compression of
a.b.cchains, numeric-enumeration collapsing (…expert_idx_∗), and layer indices kept as their own levels. - Multi-run overlay, unified hover, EMA smoothing, log-y, step vs. relative-time x-axis, and outlier clipping by value percentiles.
- Collapsible per-group chart sections, resizable sidebar, and a one-click Refresh selected that re-ingests from disk and rebuilds the plots.
- Text diff panel (pinned at the bottom): compare logged text summaries — typically the run config — between any two runs/steps as a git-style diff.
Text summaries are ingested as event files are parsed. To enable the text diff for runs converted by an older version, clear their cache (
<runs_dir>/.tblike_cache) so they re-ingest; new runs get it automatically.
CLI
tblike <runs_dir> [--port P] [--host H] [--cache-dir D] [-j JOBS] [--no-watch]
# the main command: serve + auto-ingest
Advanced / scriptable subcommands:
tblike convert RUN_DIR [RUN_ID] [-j JOBS] # ingest one run into Parquet (one-off)
tblike scan # one incremental ingest pass, no server
How it stores data
cache/<run_id>/
data/seg-00000.parquet # one immutable segment per ingest pass
index.json # tags, per-file ingest state, metadata
meta.json # tiny summary used for fast run listing
Reads union all segments and de-duplicate (tag, step) by latest wall_time.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tb_like-0.1.4.tar.gz.
File metadata
- Download URL: tb_like-0.1.4.tar.gz
- Upload date:
- Size: 36.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83029cb250ff7e542f1d6ab02333490140190bb108d47bbfa02423988a4b9407
|
|
| MD5 |
07f59abff238fd4e940dd587d1bbe629
|
|
| BLAKE2b-256 |
114438091fb81e619d976e09b69cb0d9f87d0dac86ec1d65e2460b23fceef7f8
|
File details
Details for the file tb_like-0.1.4-py3-none-any.whl.
File metadata
- Download URL: tb_like-0.1.4-py3-none-any.whl
- Upload date:
- Size: 41.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dddb3379474f091ed2028685209a4e96424529feafc286edc8259c40d4907c01
|
|
| MD5 |
c2f391e73bad35b0feaa428329403530
|
|
| BLAKE2b-256 |
8c96ad03d9085e89b66e32c706b3c174a2e0840b2d525e1170bfe95bf37ab20c
|