Skip to main content

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.c chains, 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.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tb_like-0.1.1.tar.gz (121.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tb_like-0.1.1-py3-none-any.whl (35.6 kB view details)

Uploaded Python 3

File details

Details for the file tb_like-0.1.1.tar.gz.

File metadata

  • Download URL: tb_like-0.1.1.tar.gz
  • Upload date:
  • Size: 121.2 kB
  • Tags: Source
  • 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

Hashes for tb_like-0.1.1.tar.gz
Algorithm Hash digest
SHA256 59f4a1f895b547f1b02a18662e80f5f6d5cc215fee5b0dc6b7523462c9811eb3
MD5 7a428defde531215fb11751d66a50db3
BLAKE2b-256 fc11002b46200e2f4e8e156cd789ee3e215737aa6e3dec6b3bbecd097df20034

See more details on using hashes here.

File details

Details for the file tb_like-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tb_like-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 35.6 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

Hashes for tb_like-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 550afa34fa1a83e7f2b2a3c2a9e10392a38d3332aa453d5aa9b699e1476c8bdf
MD5 fc3e11c8f9f9500e2862976a3b814339
BLAKE2b-256 18d1cc118b39412e3174bba052c1ebe6778fcda72545bae958e67c7b5f4d92f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page