make-mlops-easy


Namemake-mlops-easy JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryMake MLOps easier with an AI-powered framework
upload_time2025-10-15 20:30:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords mlops machine-learning ai automation deployment
VCS
bugtrack_url
requirements click pandas scikit-learn joblib pyyaml rich xgboost
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 1.32037s