This release is a pre-release and may not be stable for production use.
Stratum is an ML system for efficiently executing large-scale agentic pipeline search. It integrates with MLE agents by representing batches of agent-generated pipelines as lazily evaluated DAGs, applying logical and runtime optimizations, and executing them across heterogeneous backends, including a Rust-based runtime. Stratum builds on skrub's operator abstraction and is under active development.
📄 Paper: The motivation and vision behind stratum are described in our VLDB 2026 paper.
Design Principles
- Provide seamless and unrestricted support for arbitrary ML libraries without operator porting.
- A semantic abstraction built on a minimal set of logical operators that enables rewrites and lazy evaluation with physical operator independence.
- Implement a runtime with efficient operator kernels (in Rust), scheduling across CPUs, GPUs, and distributed backends, plus runtime optimizations such as buffer pools, reuse of intermediates, and inter- and intra-operator parallelization.
Installation
Install the current development build from PyPI:
python -m pip install "stratum-ai==0.0.0.dev1"
Pre-built Rust wheels are provided for the supported CPython 3.11+ platforms, so a Rust toolchain is not required for a normal installation. The source-build instructions below are for contributors developing Stratum itself.
For source development, you need Python 3.11+, a Rust toolchain (nightly not required; stable is fine), and maturin (python -m pip install maturin).
From the repository root, install the extension in editable (development) mode:
maturin develop --release
For more details (including building wheels), see the Developer Instructions section below.
Usage
To leverage stratum, agent prompts or pipelines need minor changes. Prompts should be modified to generate code following skrub DataOps syntax.
Stratum can also significantly speed up human-written skrub code.
The following flags enable different features of Stratum. These flags can be set via environment variables or directly in code:
import stratum
stratum.set_config(
scheduler=True,
implementation_selector="greedy",
explain=True,
stats=True,
)
Example Code
import stratum as skrub #drop-in replacement
from sklearn.preprocessing import OneHotEncoder
from sklearn.linear_model import LinearRegression
def main():
# Collect and prepare datasets
dataset = skrub.datasets.fetch_employee_salaries()
df = skrub.as_data_op(dataset.employee_salaries).skb.subsample()
df_clean = df.dropna()
y = df_clean["current_annual_salary"].skb.mark_as_y()
X = df_clean.drop(columns=["current_annual_salary"]).skb.mark_as_X()
# Apply feature transformations
skrub.set_config(scheduler=True, implementation_selector="greedy", explain=True, stats=True)
tv = skrub.TableVectorizer()
X_enc = X.skb.apply(tv)
print(f"Encoded data shape: {X_enc.shape.skb.preview()}")
# Training and cross-validation
pred = X_enc.skb.apply(LinearRegression(), y=y)
search = pred.skb.make_grid_search(cv=3, fitted=True, scoring="r2", refit=False)
print(search.results_)
if __name__ == "__main__":
main()
Developer Instructions
Running the Tests
Install all extras and run the full test suite:
uv sync --all-extras
pytest -v stratum/tests
Or, more concisely:
uv run pytest
Local Dev Install (Editable, without uv)
maturin develop # Debug mode
maturin develop --release # Optimized dev build
Building Wheels
This produces redistributable .whl files under dist/.
# Linux / macOS
maturin build --release -o dist --interpreter python3.11 --compatibility linux
# Windows
maturin build --release -o dist
Then install with:
python -m pip install ./dist/stratum_ai-*.whl
License
Apache License 2.0. See LICENSE for details.
Metadata
Release files for stratum-ai 0.0.0.dev2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| stratum_ai-0.0.0.dev2.tar.gz | 212.4 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| stratum_ai-0.0.0.dev2-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| stratum_ai-0.0.0.dev2-cp311-abi3-musllinux_1_2_x86_64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ x86-64 | Details |
| stratum_ai-0.0.0.dev2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| stratum_ai-0.0.0.dev2-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
| stratum_ai-0.0.0.dev2-cp311-abi3-macosx_10_12_x86_64.whl | CPython 3.11 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 29.8 MB
Release files / stratum_ai-0.0.0.dev2.tar.gz
| Download URL | stratum_ai-0.0.0.dev2.tar.gz |
|---|---|
| Size | 212.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e27af4a918d71439e393cc6218c548f60c14582b2bdae452b5a759e5c943f93
|
|
BLAKE2b-256 checksum How to use checksums |
61b9de171883d98be56d46b7b9e00ba73770d140ebd4fadb42b9fc6e25fb094f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / stratum_ai-0.0.0.dev2-cp311-abi3-win_amd64.whl
| Download URL | stratum_ai-0.0.0.dev2-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 17.7 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
d463133f0204555f903fed2998df0df85ef697b638b1ede8911d86c1a5696548
|
|
BLAKE2b-256 checksum How to use checksums |
cde0db422b875ee4ffb178aeecbbf8a813f375ab66a43e331288886445108967
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / stratum_ai-0.0.0.dev2-cp311-abi3-musllinux_1_2_x86_64.whl
| Download URL | stratum_ai-0.0.0.dev2-cp311-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.9 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a8cf9b8da3f735197992d3b4e67cdc61f9c77362250d6e07d721468c9b8fb547
|
|
BLAKE2b-256 checksum How to use checksums |
e5ab04a5dbd234109cba9893c960ddb7ede8e5abd40fb0399fb78e4a15408656
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / stratum_ai-0.0.0.dev2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | stratum_ai-0.0.0.dev2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fedc7f49b35233677853f2e0ff3a2f1e0918d4a03a3c151251599757f6addb6d
|
|
BLAKE2b-256 checksum How to use checksums |
050c0f642a2d0e1594c16e12c9b5afbf030ff296563e6686373ca85e44f4f7f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / stratum_ai-0.0.0.dev2-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | stratum_ai-0.0.0.dev2-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e56431ee452bbda302d1b9298f757c62ca59e45d083147327eab6f355fb2fb82
|
|
BLAKE2b-256 checksum How to use checksums |
6d11b01c9216d50acce8104c6942326cdeb6bd7c359d869311aa5d14d84b82f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|
Release files / stratum_ai-0.0.0.dev2-cp311-abi3-macosx_10_12_x86_64.whl
| Download URL | stratum_ai-0.0.0.dev2-cp311-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
8455e34e4c381f3a3e6278067b6e700904a24c891c5c4a52a5c83e56e57327cd
|
|
BLAKE2b-256 checksum How to use checksums |
f201faffe6cecebbb69e76d7a78dd0c41e048a5af0908eda2cee0c483fe8d13f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.14.1
|