Skip to main content

mlvault

Immutable, encrypted snapshots of ML training runs.

mlvault captures your model checkpoints, metrics, and logs after every training run — encrypted and stored in the cloud. Restore any run on any machine with a single command.

pip install mlvault mlvault-mlflow
mlvault init

Quick start

1. Install

pip install mlvault mlvault-mlflow

2. Configure your API key

Get a key at obsideo.io/mlvault-beta, then:

mlvault init
# Paste your mlvault API key: mlv1_...
# Validating key... ok
# You're all set.

3. Run and archive a training job

mlvault run --collect ./outputs python train.py

mlvault runs your script, then encrypts and uploads everything in ./outputs to cloud storage.

Run ID : myproject_20240307_143022_abc123
Collect: /home/user/project/outputs
Command: python train.py

-- Training started --
...
-- Collecting artifacts --
  3 artifact(s) -> myproject_20240307_143022_abc123.tar.gz
-- Encrypting --
  myproject_20240307_143022_abc123.tar.gz.enc (258.4 KB)
-- Uploading --

Done. Run archived: myproject_20240307_143022_abc123
Remote : myproject_20240307_143022_abc123_bundle.enc

4. Restore a run

mlvault restore myproject_20240307_143022_abc123

Works on any machine where mlvault init has been run with the same API key.

5. List runs

mlvault list

MLflow integration

mlvault integrates with MLflow as a custom artifact store. Artifacts logged via mlf.log_artifact() are staged locally, then pushed to cloud storage with mlvault commit.

Setup

import mlflow

# Set the artifact store once when creating an experiment
mlflow.create_experiment("my-experiment", artifact_location="mlvault://my-project")
mlflow.set_experiment("my-experiment")

Or set it via environment variable before training:

export MLFLOW_ARTIFACT_URI=mlvault://my-project

Training loop

import mlflow

with mlflow.start_run() as run:
    mlflow.log_param("lr", 0.001)
    mlflow.log_metric("loss", 0.42)
    mlflow.log_artifact("checkpoint.pt")

    run_id = run.info.run_id

# After training, push artifacts to cloud storage:
# mlvault commit <run_id>
print(f"Run ID: {run_id}")

Commit artifacts

mlvault commit <mlflow_run_id>

Restore MLflow artifacts

mlvault restore <run_id>

Commands

Command Description
mlvault init Configure API key
mlvault run [cmd] Run training command and archive artifacts
mlvault commit <mlflow_run_id> Push staged MLflow artifacts to storage
mlvault restore <run_id> Download and decrypt a stored run
mlvault list List locally tracked runs
mlvault log <run_id> Show run details

Security

Artifacts are encrypted with AES-256-GCM before leaving your machine. Encryption keys are derived from your API key — only you can decrypt your artifacts.


License

MIT

Metadata

Release files for obsideo-cloud 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 obsideo-cloud 0.1.0
File Size Uploaded Provenance
obsideo_cloud-0.1.0.tar.gz 13.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for obsideo-cloud 0.1.0
File Interpreter ABI Platform
obsideo_cloud-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 31.7 kB

Release files / obsideo_cloud-0.1.0.tar.gz

Download URL obsideo_cloud-0.1.0.tar.gz
Size 13.6 kB
Tags Source
SHA-256 checksum
How to use checksums
41ff7d2f29fe1ed04d71eb5c6473490ef46bbdfb5f0b276b510f813f718c7a99
BLAKE2b-256 checksum
How to use checksums
bc70ee72e618a3670448aeec1c7f6d85104c5ae4169d4eb09b7a5187ebd1ce4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.7

Release files / obsideo_cloud-0.1.0-py3-none-any.whl

Download URL obsideo_cloud-0.1.0-py3-none-any.whl
Size 18.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87a8ab24104e421a6a0df5164338a31df0a270c357b8228b32e07d23d3c5ddd3
BLAKE2b-256 checksum
How to use checksums
18ac5f0308025e11a91965f1dfe1a889be6089fef6fb0daaf4d2845c79bd99f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.7

Security for obsideo-cloud 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