Skip to main content

Cascade - Small-scale MLOps Library

Cascade is MLOps for projects that don't need an MLOps platform

header

ver build Downloads DOI

Track experiments, datasets, models and artifacts locally with Python and your filesystem. No tracking server, cloud account or complex infrastructure required.

Included in Model Lifecycle section of Awesome MLOps list

Installation

pip install cascade-ml

More info on installation can be found in documentation

Local-first UI

pip install cascade-ui

Just do cascade ui to get a nice dashboard for your experiments.

Cascade UI Screens

Cascade UI is a separate project, that provides visual interface for Cascade experiments. For more detailed explanation you can visit UI docs.

Docs

Go to Cascade documentation

Usage Examples

This section is divided into blocks based on what problem you can solve using Cascade. These are the simplest examples of what the library is capable of. See more in documentation.

Track data transforms

Data processing pipelines need to be versioned and tracked as a part of model experiments.
To track changes and version everything about data Cascade has Datasets - special wrappers that encapsulate operations on data.

from pprint import pprint
from cascade import data as cdd
from sklearn.datasets import load_digits
import numpy as np


X, y = load_digits(return_X_y=True)
data = [{"x": x, "y": y} for x, y in zip(X, y)]

ds = cdd.Wrapper(data)
ds = cdd.RandomSampler(ds)

train_ds, test_ds = cdd.split(ds)
train_ds = cdd.ApplyModifier(
    train_ds,
    lambda item: {"x": item["x"] + np.random.random(), "y": item["y"]}
)

pprint(train_ds.get_meta())

We see all the stages that we did in meta.

[{"comments": [],
  "description": null,
  "len": 898,
  "links": [],
  "name": "cascade.data.apply_modifier.ApplyModifier",
  "tags": [],
  "type": "dataset"},
 {"comments": [],
  "description": null,
  "len": 898,
  "links": [],
  "name": "cascade.data.range_sampler.RangeSampler",
  "tags": [],
  "type": "dataset"},
 {"comments": [],
  "description": null,
  "len": 1797,
  "links": [],
  "name": "cascade.data.random_sampler.RandomSampler",
  "tags": [],
  "type": "dataset"},
 {"comments": [],
  "description": null,
  "len": 1797,
  "links": [],
  "name": "cascade.data.dataset.Wrapper",
  "obj_type": "<class 'list'>",
  "tags": [],
  "type": "dataset"}]

See all datasets in zoo
See tutorial in documentation

Track experiments and artifacts locally

Cascade provides a rich set of ML-experiment tracking tools. You can easily track history of model changes, save and restore models in a structured manner along with metadata.

import random
from cascade.models import Model
from cascade.repos import Repo

model = Model()
model.add_metric("acc", random.random())
model.tag("production")
model.describe("I tried to do X in this experiment")
model.params["lr"] = 1e-4

repo = Repo("./repo")

line = repo.add_line('baseline')
line.save(model, only_meta=True)

Repo is the collection of lines and Line can be a bunch of experiments on one model type. Lines can also store data pipelines.

[
    [
        {
            "comments": [],
            "created_at": "2026-07-25T21:24:39.783748+00:00",
            "description": "I tried to do X in this experiment",
            "host": "your-pc-name",
            "links": [],
            "metrics": [{"created_at": "2026-07-25T21:24:39.784872+00:00",
                        "name": "acc",
                        "value": 0.5284442363543276}],
            "name": "cascade.models.model.Model",
            "params": {"lr": 0.0001},
            "path": "/home/ilia/work/cascade/repo/baseline/00000",
            "python_version": "3.12.3 (main, Mar 23 2026, 19:04:32) [GCC 13.3.0]",
            "saved_at": "2026-07-25T21:24:41.753499+00:00",
            "slug": "victorious_dingo_of_will",
            "tags": ["production"],
            "type": "model",
            "user": "ilia"
        }
    ]
]

See full tutorial in documentation

Cascade Recipes

Cascade Recipes is a growing collection of useful project templates built using all Cascade features. With close to real-life cases you can see how Cascade may fit in your specific project.

Examples of projects:

01 - Baseline sweep

"I ran six experiments last week - which one won, with which settings, and on which version of the features?"

02 - Data lineage

"Model 00003 regressed. Was it the code, or did the dataset change under me?"

See more in Cascade Recipes repo

No need for a platform

What you get without tracking server, cloud or complex setup

  • Local UI
  • Experiment tracking
  • Configuration management
  • Data lineage and validation
  • Experiment results querying

Migrating to Cascade

You can find migration instructions for popular MLOps solutions in the docs. See how you can convert Aim, MLflow, Weights & Biases or ClearML tracking code into Cascade tracking and get additional benefits.

Principles

The key principles of Cascade are:

  • Elegance - ML code should be about ML with minimum meta-code
  • Flexibility - to easily build prototypes and integrate existing projects with Cascade (don't pay for what you don't use)
  • Reusability - code to be reused in similar projects with no effort
  • Traceability - everything should have meta-data

Contributing

Pull requests and issues are welcome! For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests and docs as appropriate, see CONTRIBUTING.md.

License

Apache License 2.0

Versions

This project uses Semantic Versioning - https://semver.org/

Changelog

See CHANGELOG.md

Cite the code

If you used the code in your research, please cite it with:

DOI

@software{ilia_moiseev_2023_8006995,
  author       = {Ilia Moiseev},
  title        = {Oxid15/cascade: Lightweight ML Engineering library},
  month        = jun,
  year         = 2023,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.8006995},
  url          = {https://doi.org/10.5281/zenodo.8006995}
}

footer

Metadata

Release files for cascade-ml 0.18.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 cascade-ml 0.18.0
File Size Uploaded
cascade_ml-0.18.0.tar.gz 89.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cascade-ml 0.18.0
File Interpreter ABI Platform
cascade_ml-0.18.0-py3-none-any.whl Python 3 none any Details

Total release size: 231.4 kB

Release files / cascade_ml-0.18.0.tar.gz

Download URL cascade_ml-0.18.0.tar.gz
Size 89.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cc2024a44b1868bb33c7183f032d4244ae3156179cc5cae91283936ba7ef610e
BLAKE2b-256 checksum
How to use checksums
2333b82f2a097f1b1401b23568bb19c34e0d26dc1febe246fda245a31ba1d3c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release files / cascade_ml-0.18.0-py3-none-any.whl

Download URL cascade_ml-0.18.0-py3-none-any.whl
Size 142.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce6225e830b639571d82d40984e2ee2cd43161b1e2eb94ee04248c12cbfdff9e
BLAKE2b-256 checksum
How to use checksums
a821534dfa42df0bcd732982f2e8625bcfd5b8cc1b773edb120bb138e9591609
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15
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