Caliper is an offline-first machine learning experiment tracker and dashboard with built-in convergence forecasting and inline step-level annotations.
No account registration is required. Caliper functions 100% locally with zero cloud dependencies.
Caliper uses a local file-system synchronization architecture to provide high-performance logging with zero network latency.
+------------------+ +--------------------+
| Python Script | | Local Directory |
| (import caliper) | --[Log Metrics]-->| .caliper/runs/ |
+------------------+ +--------------------+
|
[CLI watches files]
v
+------------------+ +--------------------+
| Local Dashboard | | Caliper CLI |
| (Browser UI) | <---[WebSockets]--| (Local Host) |
+------------------+ +--------------------+
- Python Client Logger (
caliper-py): The logger writes metrics incrementally to local JSONL files in a.caliper/directory inside your workspace. - Local Server & CLI: A CLI utility watches the
.caliper/directory and serves the compiled dashboard on a local port.
To integrate Caliper into Python training scripts, a PyPI distribution is used:
pip install caliper-pyThis package installs the caliper logging client and the CLI utility caliper.
Import caliper and track your training run metrics within your training loop:
import caliper
# Initialize a run under a specific project
run = caliper.init(
project="CIFAR-100 Baselines",
name="resnet50-cosine-lr",
hyperparams={
"model": "ResNet-50",
"optimizer": "Adam",
"learningRate": 0.001,
"batchSize": 64,
"epochs": 50,
"scheduler": "cosine"
}
)
for epoch in range(50):
for step, (x, y) in enumerate(train_loader):
loss, acc = train_step(x, y)
# Log training step metrics (appended to local JSONL file)
run.log({
"step": global_step,
"epoch": epoch,
"trainLoss": loss.item(),
"trainAcc": acc.item()
})
# Log validation metrics
val_loss, val_acc = validate()
run.log({
"step": global_step,
"valLoss": val_loss,
"valAcc": val_acc
})
# Add step-level annotation notes (marginalia)
if epoch == 15:
run.annotate(
step=global_step,
text="Warmup complete - transitioning to cosine decay",
metric="valLoss"
)Once metrics are logged to .caliper/, launch the interactive dashboard using the CLI:
caliper uiThis starts the local web server on http://localhost:5173/ and visualizes your runs.
- Convergence Forecasting: Fits a 3-parameter exponential decay curve to the validation loss data to project convergence and detect anomalies (e.g., plateauing, divergence, oscillation).
- Inline Annotations (Marginalia): Visualizes step-level annotation notes directly on metric charts and maps them to a side-panel timeline.
- Project Filtering: Groups runs by project name with sidebar filtering capabilities.
- Multi-run Comparison: Compares up to 4 runs side-by-side with automatic parameter difference highlighting.
If you are developing or contributing to the React dashboard interface:
git clone https://github.com/verz0/Caliper.git
cd Calipernpm installnpm run devLicensed under the MIT License.