Skip to main content

torch-vault

Zero-copy PyTorch checkpoint management and SQL-driven dataset streaming built with Rust, PyO3, SQLite, and DuckDB.

Features

  • Safe Checkpointing: Replaces pickle-based torch.save with safetensors memory-mapping backed by an atomic SQLite WAL index.
  • Selective Weight Saving: vault.save(model, metrics=..., save_if_better="val_loss") continuously records metric history into SQLite while writing .safetensors weight files to disk only when metrics improve.
  • SQL Dataset Streaming: Segment("data.parquet").where("quality > 0.8") runs DuckDB predicate pushdown on disk before streaming records into PyTorch DataLoaders.
  • Zero-Copy Memory Interchange: Uses the Arrow C Stream Interface (__arrow_c_stream__ PyCapsule) to pass record batches directly into memory.
  • CLI & WebApp Inspector: Includes torch-vault list and torch-vault ui for inspecting checkpoints and charting metrics in a local browser interface.

Installation

pip install torch-vault

For development build:

git clone https://github.com/ethqnol/torch-vault.git
cd torch-vault
pip install maturin
maturin develop --release

Quickstart

Checkpoint Management (Vault)

import torch
import torch.nn as nn
from torch_vault import Vault

model = nn.Linear(10, 2)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
vault = Vault("./checkpoints")

for epoch in range(1, 11):
    train_loss = 0.5 # compute training loss
    val_loss = 0.4   # compute validation loss

    # Log metrics to SQLite; save weight file on disk only if val_loss improves
    vault.save(
        model=model,
        optimizer=optimizer,
        metrics={"train_loss": train_loss, "val_loss": val_loss},
        epoch=epoch,
        save_if_better="val_loss",
        mode="min",
    )

# Load best model weights automatically by metric
best_weights = vault.load(metric="val_loss", mode="min")
model.load_state_dict(best_weights["model"])

SQL Dataset Streaming & Train/Val/Test Split (Segment)

from torch_vault import Segment
from torch_vault.transforms import Compose, SelectKeys, RenameKey, StandardScaler

pipeline = Compose([
    RenameKey(src="score", dst="quality"),
    StandardScaler(keys=["quality"]),
    SelectKeys("quality", "label"),
])

# Stream filtered Parquet data with a 80%/10%/10% split
train_loader, val_loader, test_loader = (
    Segment("data/dataset.parquet")
    .where("quality > 0.7 AND split = 'train'")
    .transform(pipeline)
    .to_dataloader(batch_size=32, split=(0.8, 0.1, 0.1), seed=42)
)

CLI & WebApp Inspector

# Print terminal ASCII table of logged checkpoints
torch-vault list ./checkpoints

# Launch browser WebApp inspector at http://127.0.0.1:8000/
torch-vault ui ./checkpoints --port 8000

Documentation

Full interactive API reference and architecture specifications are available at ethqnol.github.io/torch-vault.

License

MIT License.

Metadata

Release files for torch-vault 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for torch-vault 0.1.0
File Size Uploaded Provenance
torch_vault-0.1.0.tar.gz 39.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for torch-vault 0.1.0
File Interpreter ABI Platform
torch_vault-0.1.0-cp310-abi3-manylinux_2_39_x86_64.whl CPython 3.10 abi3 Linux glibc 2.39+ x86-64 Details

Total release size: 13.2 MB

Release files / torch_vault-0.1.0.tar.gz

Download URL torch_vault-0.1.0.tar.gz
Size 39.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9efc8a444e2ded7981888c799cf5c8ad1e74bb70d571513b3004c83cbc417642
BLAKE2b-256 checksum
How to use checksums
571ec646a71b1b967eac14541c89ce6a53c11907f8a04fd1a94ced16f403f175
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / torch_vault-0.1.0-cp310-abi3-manylinux_2_39_x86_64.whl

Download URL torch_vault-0.1.0-cp310-abi3-manylinux_2_39_x86_64.whl
Size 13.2 MB
Tags CPython 3.10 Linux glibc 2.39+ x86-64 abi3
SHA-256 checksum
How to use checksums
bae53706a08d7939ce461f4148301d40d75ebf3d9212231065f9d4bc8e1313c4
BLAKE2b-256 checksum
How to use checksums
1a7107417ff6c0306b6b1109dfa982d67c7bb8d9473d32d3a7f24ae73aee7407
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Security for torch-vault 0.1.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page