Shared MLOps learning architecture for production ML engineering stages.
Project description
ML Production Ecosystem
Published Python generator for local-first ML project scaffolds, plus repository-only lifecycle examples for production ML engineering.
Generate a served model
Prerequisites: Python 3.11+ and uv. Docker is required only for the container step.
From any directory outside this checkout:
uvx --refresh --from ml-production-ecosystem==0.1.0 create-ml-struct churn-api --preset served-model --no-input
That single command only generates the project. Testing, training, serving, prediction, and container building remain explicit commands inside the generated project:
cd churn-api
uv run pytest
uv run python -m churn_api.train
PORT=18080 uv run serve
In another terminal:
curl http://127.0.0.1:18080/health
curl -X POST http://127.0.0.1:18080/predict \
-H "Content-Type: application/json" \
-d '{"features":{"a":1.0,"b":2.0}}'
docker build -t churn-api .
The default served-model preset resolves training, evaluation, api, deployment, quality-gate, monitoring, docker, and ci.
flowchart LR
A[PyPI package] --> B[create-ml-struct]
B --> C[generated project]
C --> D[tests and train]
D --> E[FastAPI health and predict]
E --> F[Docker image]
Generated served-model tree
churn-api/
├── .github/workflows/ci.yml
├── Dockerfile
├── README.md
├── configs/project.yaml
├── data/README.md
├── docs/
│ ├── infra-checklist.md
│ └── runbook.md
├── ml-struct.yaml
├── orchestration/monitoring_job.py
├── pyproject.toml
├── tests/
│ ├── test_deployment.py
│ ├── test_evaluate.py
│ ├── test_scaffold.py
│ └── test_training.py
└── churn_api/
├── __init__.py
├── api.py
├── deployment.py
├── evaluate.py
├── predict.py
└── train.py
After training, these evidence files are created:
artifacts/reports/training-summary.json
artifacts/reports/metrics.json
The starter contract is intentionally honest: training writes deterministic evidence only. /predict remains a dummy threshold seam and does not load the training artifact. Replace churn_api/predict.py and its API contract when integrating a real model.
Other presets
uvx --from ml-production-ecosystem==0.1.0 create-ml-struct --list-presets
Available presets: kaggle, generic-classifier, served-model, asr-served-model, recommendation, batch-inference, existing-model-wrapper, llm-post-training, and enterprise-pipeline.
The full wizard remains available as ml-struct or mle. It can select task, model type, backend, provider, and repeatable infrastructure components. Component dependencies are auto-added and recorded in ml-struct.yaml.
Repository-only development
Clone the repository only to work on the generator or run its broader lifecycle examples:
cd ml-production-ecosystem
uv run ml-struct doctor
uv run ml-struct quickstart
./scripts/validate-production-patterns.sh
./scripts/validate-served-model-release.sh
| Area | Path | Purpose |
|---|---|---|
| Runtime package | src/ml_production_ecosystem/ |
Importable generator and local MLOps examples |
| Scaffold templates | src/ml_production_ecosystem/templates/scaffold/ |
Packaged template resources used by source, wheel, and sdist installs |
| Examples | examples/samples/ |
Repository-only runnable samples |
| Runtime state | artifacts/, logs/, registry/ |
Generated local evidence outside source code |
| Configs | configs/ |
Repository lifecycle and provider-boundary examples |
The examples are model-agnostic and provider-agnostic: model and cloud details belong behind explicit contracts and adapters.
The repository is local-first. It does not claim managed cloud deployment, a real Kubernetes runtime, production paging, or automatic use of a trained artifact by generated serving code.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ml_production_ecosystem-0.1.0.tar.gz.
File metadata
- Download URL: ml_production_ecosystem-0.1.0.tar.gz
- Upload date:
- Size: 153.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fb4db8a3e945a88c67f9633dc3b4099dab7619c8ff90ab4d63dcf344c5baaf8
|
|
| MD5 |
147007a9930470c146555f8212febf5d
|
|
| BLAKE2b-256 |
19a0c335dafb573dd4b861a084d1968cd526e72b9e052403956cf3f2f8f6dbcb
|
Provenance
The following attestation bundles were made for ml_production_ecosystem-0.1.0.tar.gz:
Publisher:
ml-production-ecosystem-publish.yml on fauzanazz/ml-engineering
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ml_production_ecosystem-0.1.0.tar.gz -
Subject digest:
0fb4db8a3e945a88c67f9633dc3b4099dab7619c8ff90ab4d63dcf344c5baaf8 - Sigstore transparency entry: 2194647243
- Sigstore integration time:
-
Permalink:
fauzanazz/ml-engineering@7ea93dbc274a18c09a34db4cadf260e34ece8cd5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/fauzanazz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ml-production-ecosystem-publish.yml@7ea93dbc274a18c09a34db4cadf260e34ece8cd5 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file ml_production_ecosystem-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ml_production_ecosystem-0.1.0-py3-none-any.whl
- Upload date:
- Size: 173.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
710613f8e7a60d219f7683d7509768b43746f1a63fe55a7621d2d39273579038
|
|
| MD5 |
223231557ed798c516d6bc5a50bb61a5
|
|
| BLAKE2b-256 |
bcc043cb3cf1d436dce3b1f3738dfd51a34bed8f979317418c7573fea2103419
|
Provenance
The following attestation bundles were made for ml_production_ecosystem-0.1.0-py3-none-any.whl:
Publisher:
ml-production-ecosystem-publish.yml on fauzanazz/ml-engineering
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ml_production_ecosystem-0.1.0-py3-none-any.whl -
Subject digest:
710613f8e7a60d219f7683d7509768b43746f1a63fe55a7621d2d39273579038 - Sigstore transparency entry: 2194647248
- Sigstore integration time:
-
Permalink:
fauzanazz/ml-engineering@7ea93dbc274a18c09a34db4cadf260e34ece8cd5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/fauzanazz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ml-production-ecosystem-publish.yml@7ea93dbc274a18c09a34db4cadf260e34ece8cd5 -
Trigger Event:
workflow_dispatch
-
Statement type: