Terminal UI for PyTorch Lightning CSVLogger metrics.
Project description
ltui
TensorBoard-like live monitoring for PyTorch Lightning CSVLogger metrics, directly in the terminal.
ltui turns Lightning metrics.csv files into a focused terminal plot for live monitoring, inspection, and run comparison, similar in spirit to tools like TensorBoard. Because it runs entirely in the terminal, it is especially useful for headless monitoring on remote machines over SSH, inside tmux, and without a browser or server process.
Highlights
- Live in-terminal visualization of PyTorch Lightning training metrics
- Automatic train/validation metric grouping in one plot
- Multiplot mode for viewing several selected metrics at once
- Multi-run comparison with readable run legends
- Step and epoch x-axis modes with Lightning-friendly alignment
- Log scaling and EMA smoothing for noisy or wide-range metrics
- YAML config inspection for runs with associated model/training configs
- Keyboard-first selectors with fuzzy search
Installation
pip install ltui
Quick Start
Point ltui at any directory containing Lightning CSV logs:
ltui /path/to/log/root
Examples:
ltui ./lightning_logs
ltui /data/experiments/my_model
ltui ~/runs/my_experiment
On startup, ltui recursively discovers metrics.csv files, selects the latest modified run, and chooses a loss metric when one is available.
What It Reads
ltui targets PyTorch Lightning CSVLogger output. Each discovered metrics.csv is treated as one selectable run/version.
Supported layouts include:
lightning_logs/version_0/metrics.csv
run_a/version_0/metrics.csv
run_a/lightning_logs/version_0/metrics.csv
experiments/group_1/run_a/lightning_logs/version_3/metrics.csv
Display names are derived from paths relative to the scanned root.
Metric Grouping
Train/validation grouping is enabled by default. Metrics are grouped when they use the standard prefixes:
train_
val_
For example:
train_loss + val_loss -> loss
train_recon_loss + val_recon_loss -> recon_loss
train_kl + val_kl -> kl
Lightning step/epoch suffixes are handled as part of the same family, so train_loss_step, train_loss_epoch, and val_loss appear as loss.
When the x-axis is step, validation epoch metrics use the step value from their CSV row. This places validation points at the training step where validation was logged.
Controls
| Key | Action |
|---|---|
r |
Open run/version selector |
c |
Open config viewer for runs with a unique YAML config |
m |
Open metric selector |
/ |
Fuzzy search inside selector |
arrow keys |
Navigate selector or selected plot in multiplot mode; left/right jump between models in run/config selectors |
space |
Toggle selection in selector, open multiplot on main screen |
enter |
Apply selector, focus selected plot in multiplot mode |
escape |
Clear plot selection in multiplot mode |
n |
Next selected metric/family |
p |
Previous selected metric/family |
a |
Toggle x-axis between step and epoch |
d |
Toggle dark/light plot theme |
s |
Toggle smoothing |
x |
Toggle log-x |
y |
Toggle log-y |
q |
Quit |
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 ltui-0.1.2.post1.tar.gz.
File metadata
- Download URL: ltui-0.1.2.post1.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
751eaa30a27d6a3ac8a11e2c21e4d0f429532b5816c2eadba109920ae5a116df
|
|
| MD5 |
6d94346c16503641a752ce93a6123234
|
|
| BLAKE2b-256 |
6572eddba22e120e17bf6ffff7f8fcae47ef8f7f1e012090ed0ec250c75a8946
|
Provenance
The following attestation bundles were made for ltui-0.1.2.post1.tar.gz:
Publisher:
publish.yml on erik-ayari/ltui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ltui-0.1.2.post1.tar.gz -
Subject digest:
751eaa30a27d6a3ac8a11e2c21e4d0f429532b5816c2eadba109920ae5a116df - Sigstore transparency entry: 1615020969
- Sigstore integration time:
-
Permalink:
erik-ayari/ltui@27d480f60d5912b10b65606b67b1b9d98678fe6a -
Branch / Tag:
refs/tags/v0.1.2.post1 - Owner: https://github.com/erik-ayari
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27d480f60d5912b10b65606b67b1b9d98678fe6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file ltui-0.1.2.post1-py3-none-any.whl.
File metadata
- Download URL: ltui-0.1.2.post1-py3-none-any.whl
- Upload date:
- Size: 22.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e5946ace44307d97e4d7a49eb405081e55f6196fcd888a421e92b5bfb806af8
|
|
| MD5 |
f4b8019ac578c91430f189f0d75886d1
|
|
| BLAKE2b-256 |
29fe933e30ede71328ab2023f21c9a13a2a3459b0b24a704865573145aafcc4d
|
Provenance
The following attestation bundles were made for ltui-0.1.2.post1-py3-none-any.whl:
Publisher:
publish.yml on erik-ayari/ltui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ltui-0.1.2.post1-py3-none-any.whl -
Subject digest:
6e5946ace44307d97e4d7a49eb405081e55f6196fcd888a421e92b5bfb806af8 - Sigstore transparency entry: 1615020975
- Sigstore integration time:
-
Permalink:
erik-ayari/ltui@27d480f60d5912b10b65606b67b1b9d98678fe6a -
Branch / Tag:
refs/tags/v0.1.2.post1 - Owner: https://github.com/erik-ayari
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27d480f60d5912b10b65606b67b1b9d98678fe6a -
Trigger Event:
release
-
Statement type: