visin
Send training runs to Visin: epochs, test results, benchmarks, prediction frames and configs. Read them back for analysis.
pip install visin
import visin
with visin.init("unet baseline", project="road-seg") as run:
for epoch in range(1, 21):
train_loss, val_loss, val_iou = train_one_epoch()
run.log_epoch(epoch, train={"loss": train_loss}, val={"loss": val_loss, "mean_iou": val_iou})
Point it at your Visin with two environment variables. Without them, the same script runs and reports nothing.
export VISIN_URL=https://vision-api.example.com
export VISIN_TOKEN=… # a project token, from the project's Settings → API Tokens
visin check --write # confirm this machine can report
What it does for you
- Never stops your training. Reports go out from a background thread, and failures are logged, never raised.
- Retries safely. Epochs and test results carry their own ids, so a retried request is never stored twice.
- Survives the network. Reports wait on disk while Visin is unreachable, and are sent when it
answers. With
VISIN_MODE=offline, a compute node with no route to Visin keeps everything forvisin sync. - Keeps crashed runs. A run that crashes, or that the scheduler terminates, still sends its epochs and is marked failed.
- Takes metrics as they are. NumPy and PyTorch scalars are converted, and NaN becomes a gap in the chart.
- Reports once in distributed jobs. Only rank zero reports.
More than epochs
run.log_test_results(12, {"day": {"car": {"iou": 0.74}}, "night": {"car": {"iou": 0.61}}})
run.log_benchmark({"device": "cuda", "batch_size": 1, "fps": 119.0}) # machine details filled in
run.upload_visualization(12, "renders/overlay_0001.png", kind="overlay")
run.log_config(args) # argparse, dataclass, pydantic, Hydra…
Frameworks
from visin.integrations.lightning import VisinCallback # or visin.integrations.keras
trainer = L.Trainer(callbacks=[VisinCallback(name="segformer b2", project="road-seg")])
Reading runs back
api = visin.Api()
for run in api.trainings(project="road-seg", status="completed"):
frame = api.epochs_frame(run) # pip install 'visin[pandas]'
Datasets
Datasets on Visin can be listed and downloaded, once, into VISIN_DATA_DIR:
export VISIN_DATASET_URL=https://dataset-api.example.com
visin datasets
visin download zod # resumes if interrupted; prints the folder
visin.Datasets does the same from Python.
Documentation
visin-platform.github.io/visin-py has the getting-started guide, guides to offline use and each framework, and the API reference.
Contributing
See CONTRIBUTING.md. In
short: make install, then make check before a pull request. Changes are listed in the
changelog.
License
MIT
Metadata
Release files for visin 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| visin-0.2.0.tar.gz | 95.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| visin-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 151.5 kB
Release files / visin-0.2.0.tar.gz
| Download URL | visin-0.2.0.tar.gz |
|---|---|
| Size | 95.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cc4128068e3745c1406159d6fea3882690e1ba33ca7d0f8d0c05688f2130eca0
|
|
BLAKE2b-256 checksum How to use checksums |
fd963cd8f53847d5c6ba5dda4fc310cf4c6d8a51a52d3b53ea62acab1fbca8cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / visin-0.2.0-py3-none-any.whl
| Download URL | visin-0.2.0-py3-none-any.whl |
|---|---|
| Size | 56.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4e4962b70a8b0e648e0f353422cc99a93487ed41261de4792ba412e130bfe80b
|
|
BLAKE2b-256 checksum How to use checksums |
c3986ccfcba567628d27fbd837e525dc4167635bff6b214c4f90738cf6b9a1f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log