# Make MLOps Easy
Make MLOps easier with an AI-powered framework that abstracts all phases of an MLOps pipeline.
## Overview
Make MLOps Easy is a comprehensive framework that simplifies the entire machine learning operations pipeline. With a single command, you can:
- **Data Preprocessing**: Automatic handling of missing values, feature scaling, and categorical encoding
- **Model Training**: Intelligent model selection and hyperparameter tuning
- **Model Deployment**: Automated model packaging and endpoint creation
- **Model Observability**: Built-in monitoring, logging, and performance tracking
## Installation
### From Source
```bash
git clone https://github.com/umbertocicciaa/easy-mlops.git
cd easy-mlops
pip install -e .
```
### Using pip
```bash
pip install make-mlops-easy
```
### Using Docker
Build the image locally and expose the CLI:
```bash
docker build -t make-mlops-easy .
docker run --rm make-mlops-easy --help
```
Mount data and persist model artifacts by binding host directories:
```bash
docker run --rm \
-v "$(pwd)/data:/data" \
-v "$(pwd)/models:/app/models" \
make-mlops-easy train /data/dataset.csv --target price
```
The container entrypoint is `make-mlops-easy`, so any CLI subcommand can be passed as usual.
## Quick Start
### 1. Train a Model
Train a machine learning model with a single command:
```bash
make-mlops-easy train data.csv --target price
```
This will:
- Load and preprocess your data
- Automatically detect the problem type (classification/regression)
- Train an appropriate model
- Deploy the model with all artifacts
- Set up monitoring and logging
### 2. Make Predictions
Use your deployed model to make predictions:
```bash
make-mlops-easy predict new_data.csv models/deployment_20240101_120000
```
### 3. Check Model Status
Get information about your deployed model:
```bash
make-mlops-easy status models/deployment_20240101_120000
```
### 4. View Observability Reports
Generate detailed monitoring reports:
```bash
make-mlops-easy observe models/deployment_20240101_120000
```
## CLI Commands
### `make-mlops-easy train`
Train a machine learning model on your data.
**Usage:**
```bash
make-mlops-easy train DATA_PATH [OPTIONS]
```
**Options:**
- `-t, --target TEXT`: Name of the target column
- `-c, --config PATH`: Path to configuration file (YAML)
- `--no-deploy`: Skip deployment step (only train the model)
**Examples:**
```bash
# Basic training
make-mlops-easy train data.csv --target label
# With custom configuration
make-mlops-easy train data.json -t price -c config.yaml
# Train without deploying
make-mlops-easy train data.csv --target label --no-deploy
```
### `make-mlops-easy predict`
Make predictions using a deployed model.
**Usage:**
```bash
make-mlops-easy predict DATA_PATH MODEL_DIR [OPTIONS]
```
**Options:**
- `-c, --config PATH`: Path to configuration file (YAML)
- `-o, --output PATH`: Output file for predictions (JSON format)
**Examples:**
```bash
# Basic prediction
make-mlops-easy predict new_data.csv models/deployment_20240101_120000
# Save predictions to file
make-mlops-easy predict data.json models/latest -o predictions.json
```
### `make-mlops-easy status`
Get status and metrics for a deployed model.
**Usage:**
```bash
make-mlops-easy status MODEL_DIR [OPTIONS]
```
**Options:**
- `-c, --config PATH`: Path to configuration file (YAML)
**Example:**
```bash
make-mlops-easy status models/deployment_20240101_120000
```
### `make-mlops-easy observe`
Generate observability report for a deployed model.
**Usage:**
```bash
make-mlops-easy observe MODEL_DIR [OPTIONS]
```
**Options:**
- `-c, --config PATH`: Path to configuration file (YAML)
- `-o, --output PATH`: Output file for the report
**Examples:**
```bash
# View report in terminal
make-mlops-easy observe models/deployment_20240101_120000
# Save report to file
make-mlops-easy observe models/latest -o report.txt
```
### `make-mlops-easy init`
Initialize a new MLOps project with default configuration.
**Usage:**
```bash
make-mlops-easy init [OPTIONS]
```
**Options:**
- `-o, --output PATH`: Output path for the configuration file (default: mlops-config.yaml)
**Example:**
```bash
make-mlops-easy init -o my-config.yaml
```
## Configuration
Make MLOps Easy uses YAML configuration files to customize behavior. Generate a default configuration:
```bash
make-mlops-easy init
```
### Configuration Structure
```yaml
preprocessing:
handle_missing: drop # Options: drop, mean, median, mode
scale_features: true
encode_categorical: true
training:
test_size: 0.2
random_state: 42
cv_folds: 5
model_type: auto # Options: auto, random_forest_classifier, random_forest_regressor, logistic_regression, linear_regression
deployment:
output_dir: ./models
save_format: joblib
create_endpoint: false
observability:
track_metrics: true
log_predictions: true
alert_threshold: 0.8
```
## Features
### Automatic Data Preprocessing
- **Missing Value Handling**: Multiple strategies (drop, mean, median, mode)
- **Feature Scaling**: StandardScaler for numerical features
- **Categorical Encoding**: Automatic label encoding for categorical variables
- **Multiple Format Support**: CSV, JSON, and Parquet files
### Intelligent Model Training
- **Problem Type Detection**: Automatically detects classification vs regression
- **Model Selection**: Chooses appropriate algorithms based on your data
- **Cross-Validation**: Built-in k-fold cross-validation
- **Performance Metrics**: Comprehensive metrics for model evaluation
### Streamlined Deployment
- **Model Artifacts**: Saves model, preprocessor, and metadata
- **Versioning**: Timestamped deployments for easy tracking
- **Endpoint Creation**: Optional prediction endpoint script generation
- **Reproducibility**: All components saved for consistent predictions
### Built-in Observability
- **Metrics Tracking**: Automatic logging of model performance metrics
- **Prediction Logging**: Track all predictions for analysis
- **Performance Monitoring**: Detect metric degradation over time
- **Reporting**: Generate detailed monitoring reports
## Supported Data Formats
- CSV (`.csv`)
- JSON (`.json`)
- Parquet (`.parquet`)
## Supported Model Types
### Classification
- Random Forest Classifier
- Logistic Regression
### Regression
- Random Forest Regressor
- Linear Regression
## Project Structure
```
easy-mlops/
├── easy_mlops/
│ ├── __init__.py
│ ├── cli.py # CLI interface
│ ├── pipeline.py # Main pipeline orchestrator
│ ├── config/ # Configuration management
│ ├── preprocessing/ # Data preprocessing
│ ├── training/ # Model training
│ ├── deployment/ # Model deployment
│ └── observability/ # Model monitoring
├── pyproject.toml
├── requirements.txt
└── README.md
```
## Requirements
- Python >= 3.10
- click >= 8.0.0
- pandas >= 1.3.0
- scikit-learn >= 1.0.0
- joblib >= 1.0.0
- pyyaml >= 6.0
- rich >= 10.0.0
## Development
### Running Tests
```bash
pytest
```
### Code Formatting
```bash
black easy_mlops/
```
### Documentation
Project documentation is powered by MkDocs and the Material theme. Source files live in `docs/`, and the site configuration is `mkdocs.yml`.
```bash
# Serve docs locally (http://localhost:8000)
make docs-serve
# Build static site into site/
make docs-build
```
The GitHub Actions workflow `.github/workflows/docs.yml` automatically builds and deploys the site to GitHub Pages on pushes to `main`. Enable GitHub Pages in the repository settings (source: “GitHub Actions”). For manual publishing or previews outside CI, run:
```bash
make docs-deploy
```
### Type Checking
```bash
mypy easy_mlops/
```
## License
MIT License
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## Author
Umberto Domenico Ciccia
## Links
- GitHub: https://github.com/umbertocicciaa/easy-mlops
- Issues: https://github.com/umbertocicciaa/easy-mlops/issues
Raw data
{
"_id": null,
"home_page": null,
"name": "make-mlops-easy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "mlops, machine-learning, ai, automation, deployment",
"author": null,
"author_email": "Umberto Domenico Ciccia <umbertociccia@icloud.com>",
"download_url": "https://files.pythonhosted.org/packages/c0/e3/d37f7f0739af901c6f897ff2517e262abb9b7e5420c66f622d49bbec7799/make_mlops_easy-0.2.0.tar.gz",
"platform": null,
"description": "# Make MLOps Easy\n\nMake MLOps easier with an AI-powered framework that abstracts all phases of an MLOps pipeline.\n\n## Overview\n\nMake MLOps Easy is a comprehensive framework that simplifies the entire machine learning operations pipeline. With a single command, you can:\n\n- **Data Preprocessing**: Automatic handling of missing values, feature scaling, and categorical encoding\n- **Model Training**: Intelligent model selection and hyperparameter tuning\n- **Model Deployment**: Automated model packaging and endpoint creation\n- **Model Observability**: Built-in monitoring, logging, and performance tracking\n\n## Installation\n\n### From Source\n\n```bash\ngit clone https://github.com/umbertocicciaa/easy-mlops.git\ncd easy-mlops\npip install -e .\n```\n\n### Using pip\n\n```bash\npip install make-mlops-easy\n```\n\n### Using Docker\n\nBuild the image locally and expose the CLI:\n\n```bash\ndocker build -t make-mlops-easy .\ndocker run --rm make-mlops-easy --help\n```\n\nMount data and persist model artifacts by binding host directories:\n\n```bash\ndocker run --rm \\\n -v \"$(pwd)/data:/data\" \\\n -v \"$(pwd)/models:/app/models\" \\\n make-mlops-easy train /data/dataset.csv --target price\n```\n\nThe container entrypoint is `make-mlops-easy`, so any CLI subcommand can be passed as usual.\n\n## Quick Start\n\n### 1. Train a Model\n\nTrain a machine learning model with a single command:\n\n```bash\nmake-mlops-easy train data.csv --target price\n```\n\nThis will:\n- Load and preprocess your data\n- Automatically detect the problem type (classification/regression)\n- Train an appropriate model\n- Deploy the model with all artifacts\n- Set up monitoring and logging\n\n### 2. Make Predictions\n\nUse your deployed model to make predictions:\n\n```bash\nmake-mlops-easy predict new_data.csv models/deployment_20240101_120000\n```\n\n### 3. Check Model Status\n\nGet information about your deployed model:\n\n```bash\nmake-mlops-easy status models/deployment_20240101_120000\n```\n\n### 4. View Observability Reports\n\nGenerate detailed monitoring reports:\n\n```bash\nmake-mlops-easy observe models/deployment_20240101_120000\n```\n\n## CLI Commands\n\n### `make-mlops-easy train`\n\nTrain a machine learning model on your data.\n\n**Usage:**\n```bash\nmake-mlops-easy train DATA_PATH [OPTIONS]\n```\n\n**Options:**\n- `-t, --target TEXT`: Name of the target column\n- `-c, --config PATH`: Path to configuration file (YAML)\n- `--no-deploy`: Skip deployment step (only train the model)\n\n**Examples:**\n```bash\n# Basic training\nmake-mlops-easy train data.csv --target label\n\n# With custom configuration\nmake-mlops-easy train data.json -t price -c config.yaml\n\n# Train without deploying\nmake-mlops-easy train data.csv --target label --no-deploy\n```\n\n### `make-mlops-easy predict`\n\nMake predictions using a deployed model.\n\n**Usage:**\n```bash\nmake-mlops-easy predict DATA_PATH MODEL_DIR [OPTIONS]\n```\n\n**Options:**\n- `-c, --config PATH`: Path to configuration file (YAML)\n- `-o, --output PATH`: Output file for predictions (JSON format)\n\n**Examples:**\n```bash\n# Basic prediction\nmake-mlops-easy predict new_data.csv models/deployment_20240101_120000\n\n# Save predictions to file\nmake-mlops-easy predict data.json models/latest -o predictions.json\n```\n\n### `make-mlops-easy status`\n\nGet status and metrics for a deployed model.\n\n**Usage:**\n```bash\nmake-mlops-easy status MODEL_DIR [OPTIONS]\n```\n\n**Options:**\n- `-c, --config PATH`: Path to configuration file (YAML)\n\n**Example:**\n```bash\nmake-mlops-easy status models/deployment_20240101_120000\n```\n\n### `make-mlops-easy observe`\n\nGenerate observability report for a deployed model.\n\n**Usage:**\n```bash\nmake-mlops-easy observe MODEL_DIR [OPTIONS]\n```\n\n**Options:**\n- `-c, --config PATH`: Path to configuration file (YAML)\n- `-o, --output PATH`: Output file for the report\n\n**Examples:**\n```bash\n# View report in terminal\nmake-mlops-easy observe models/deployment_20240101_120000\n\n# Save report to file\nmake-mlops-easy observe models/latest -o report.txt\n```\n\n### `make-mlops-easy init`\n\nInitialize a new MLOps project with default configuration.\n\n**Usage:**\n```bash\nmake-mlops-easy init [OPTIONS]\n```\n\n**Options:**\n- `-o, --output PATH`: Output path for the configuration file (default: mlops-config.yaml)\n\n**Example:**\n```bash\nmake-mlops-easy init -o my-config.yaml\n```\n\n## Configuration\n\nMake MLOps Easy uses YAML configuration files to customize behavior. Generate a default configuration:\n\n```bash\nmake-mlops-easy init\n```\n\n### Configuration Structure\n\n```yaml\npreprocessing:\n handle_missing: drop # Options: drop, mean, median, mode\n scale_features: true\n encode_categorical: true\n\ntraining:\n test_size: 0.2\n random_state: 42\n cv_folds: 5\n model_type: auto # Options: auto, random_forest_classifier, random_forest_regressor, logistic_regression, linear_regression\n\ndeployment:\n output_dir: ./models\n save_format: joblib\n create_endpoint: false\n\nobservability:\n track_metrics: true\n log_predictions: true\n alert_threshold: 0.8\n```\n\n## Features\n\n### Automatic Data Preprocessing\n\n- **Missing Value Handling**: Multiple strategies (drop, mean, median, mode)\n- **Feature Scaling**: StandardScaler for numerical features\n- **Categorical Encoding**: Automatic label encoding for categorical variables\n- **Multiple Format Support**: CSV, JSON, and Parquet files\n\n### Intelligent Model Training\n\n- **Problem Type Detection**: Automatically detects classification vs regression\n- **Model Selection**: Chooses appropriate algorithms based on your data\n- **Cross-Validation**: Built-in k-fold cross-validation\n- **Performance Metrics**: Comprehensive metrics for model evaluation\n\n### Streamlined Deployment\n\n- **Model Artifacts**: Saves model, preprocessor, and metadata\n- **Versioning**: Timestamped deployments for easy tracking\n- **Endpoint Creation**: Optional prediction endpoint script generation\n- **Reproducibility**: All components saved for consistent predictions\n\n### Built-in Observability\n\n- **Metrics Tracking**: Automatic logging of model performance metrics\n- **Prediction Logging**: Track all predictions for analysis\n- **Performance Monitoring**: Detect metric degradation over time\n- **Reporting**: Generate detailed monitoring reports\n\n## Supported Data Formats\n\n- CSV (`.csv`)\n- JSON (`.json`)\n- Parquet (`.parquet`)\n\n## Supported Model Types\n\n### Classification\n- Random Forest Classifier\n- Logistic Regression\n\n### Regression\n- Random Forest Regressor\n- Linear Regression\n\n## Project Structure\n\n```\neasy-mlops/\n\u251c\u2500\u2500 easy_mlops/\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 cli.py # CLI interface\n\u2502 \u251c\u2500\u2500 pipeline.py # Main pipeline orchestrator\n\u2502 \u251c\u2500\u2500 config/ # Configuration management\n\u2502 \u251c\u2500\u2500 preprocessing/ # Data preprocessing\n\u2502 \u251c\u2500\u2500 training/ # Model training\n\u2502 \u251c\u2500\u2500 deployment/ # Model deployment\n\u2502 \u2514\u2500\u2500 observability/ # Model monitoring\n\u251c\u2500\u2500 pyproject.toml\n\u251c\u2500\u2500 requirements.txt\n\u2514\u2500\u2500 README.md\n```\n\n## Requirements\n\n- Python >= 3.10\n- click >= 8.0.0\n- pandas >= 1.3.0\n- scikit-learn >= 1.0.0\n- joblib >= 1.0.0\n- pyyaml >= 6.0\n- rich >= 10.0.0\n\n## Development\n\n### Running Tests\n\n```bash\npytest\n```\n\n### Code Formatting\n\n```bash\nblack easy_mlops/\n```\n\n### Documentation\n\nProject documentation is powered by MkDocs and the Material theme. Source files live in `docs/`, and the site configuration is `mkdocs.yml`.\n\n```bash\n# Serve docs locally (http://localhost:8000)\nmake docs-serve\n\n# Build static site into site/\nmake docs-build\n```\n\nThe GitHub Actions workflow `.github/workflows/docs.yml` automatically builds and deploys the site to GitHub Pages on pushes to `main`. Enable GitHub Pages in the repository settings (source: \u201cGitHub Actions\u201d). For manual publishing or previews outside CI, run:\n\n```bash\nmake docs-deploy\n```\n\n### Type Checking\n\n```bash\nmypy easy_mlops/\n```\n\n## License\n\nMIT License\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Author\n\nUmberto Domenico Ciccia\n\n## Links\n\n- GitHub: https://github.com/umbertocicciaa/easy-mlops\n- Issues: https://github.com/umbertocicciaa/easy-mlops/issues\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Make MLOps easier with an AI-powered framework",
"version": "0.2.0",
"project_urls": {
"Homepage": "https://github.com/umbertocicciaa/easy-mlops",
"Issues": "https://github.com/umbertocicciaa/easy-mlops/issues",
"Repository": "https://github.com/umbertocicciaa/easy-mlops"
},
"split_keywords": [
"mlops",
" machine-learning",
" ai",
" automation",
" deployment"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "4ace7e7152d5bc582bb317edcd306df302a9d8a5a3cce74381c662e16e7d3e7a",
"md5": "4cf39deaf34f2b74fc608cebb1a07487",
"sha256": "6c5910a5bfdcce362998d0f73398053194b4497c5fb549a8de89491ee139bfdc"
},
"downloads": -1,
"filename": "make_mlops_easy-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4cf39deaf34f2b74fc608cebb1a07487",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 20713,
"upload_time": "2025-10-15T20:30:28",
"upload_time_iso_8601": "2025-10-15T20:30:28.515072Z",
"url": "https://files.pythonhosted.org/packages/4a/ce/7e7152d5bc582bb317edcd306df302a9d8a5a3cce74381c662e16e7d3e7a/make_mlops_easy-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c0e3d37f7f0739af901c6f897ff2517e262abb9b7e5420c66f622d49bbec7799",
"md5": "334c1bc7a452020878f4f1ce5cf06566",
"sha256": "5b6ce98a873115640fc46565b8d6d342cedade37db6b4f3ca9018656e85b6a99"
},
"downloads": -1,
"filename": "make_mlops_easy-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "334c1bc7a452020878f4f1ce5cf06566",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 22176,
"upload_time": "2025-10-15T20:30:30",
"upload_time_iso_8601": "2025-10-15T20:30:30.061652Z",
"url": "https://files.pythonhosted.org/packages/c0/e3/d37f7f0739af901c6f897ff2517e262abb9b7e5420c66f622d49bbec7799/make_mlops_easy-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-15 20:30:30",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "umbertocicciaa",
"github_project": "easy-mlops",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "click",
"specs": [
[
">=",
"8.0.0"
]
]
},
{
"name": "pandas",
"specs": [
[
">=",
"1.3.0"
]
]
},
{
"name": "scikit-learn",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "joblib",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "pyyaml",
"specs": [
[
">=",
"6.0"
]
]
},
{
"name": "rich",
"specs": [
[
">=",
"10.0.0"
]
]
},
{
"name": "xgboost",
"specs": [
[
">=",
"3.0.0"
]
]
}
],
"lcname": "make-mlops-easy"
}