Skip to content

A CLI tool that generates production-ready MLOps project templates for Scikit-learn, PyTorch, and TensorFlow.

License

Notifications You must be signed in to change notification settings

NotHarshhaa/mlops-project-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

46 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 MLOps Project Generator

MLOps Project Generator Banner

A CLI tool that generates production-ready MLOps project templates for Scikit-learn, PyTorch, and TensorFlow.

This stack supports the full MLOps lifecycle:

Data β†’ Train β†’ Track β†’ Orchestrate β†’ Deploy β†’ Monitor β†’ Improve

πŸš€ Features

  • πŸ”§ Framework Support: Scikit-learn, PyTorch, TensorFlow/Keras
  • πŸ“Š Task Types: Classification, Regression, Time-Series, NLP, Computer Vision
  • πŸ”¬ Experiment Tracking: MLflow, W&B, Custom solutions
  • 🎯 Orchestration: Airflow, Kubeflow, None
  • πŸš€ Deployment: FastAPI, Docker, Kubernetes, Cloud platforms
  • πŸ“ˆ Monitoring: Evidently AI, Custom solutions
  • πŸ› οΈ Production-Ready: CI/CD, monitoring, best practices by default
  • πŸ€– CI/CD Automation: Non-interactive mode for DevOps pipelines
  • πŸ” Project Validation: Comprehensive project structure and configuration validation
  • βš™οΈ Configuration Management: Save, load, and reuse project presets
  • 🎨 Template Customization: Create and manage custom templates
  • πŸ“Š Analytics & Metrics: Track project generation and usage patterns
  • ☁️ Cloud Deployment: Multi-cloud deployment templates (AWS, GCP, Azure)
  • πŸ” Project Browser: Interactive project exploration and management

🌟 NEW: v1.0.7 Advanced Features

βš™οΈ Configuration Management System

  • Save/Load Presets: Store and reuse project configurations across teams
  • Built-in Templates: Quick-start, production-ready, research, and enterprise presets
  • Import/Export: Share configurations as JSON files
  • Validation: Ensure configuration integrity and compatibility
# Save current configuration as a preset
mlops-project-generator save-preset my-team-config --description "Team standard setup"

# List all available presets
mlops-project-generator list-presets

# Load a preset for new project
mlops-project-generator load-preset production-ready

🎨 Template Customization System

  • Custom Templates: Create templates based on existing frameworks
  • File Management: Add/remove custom files from templates
  • Template Validation: Check template integrity and Jinja2 syntax
  • Import/Export: Share custom templates with your team
# Create a custom template
mlops-project-generator create-template my-custom sklearn --description "Custom sklearn setup"

# Add custom files to template
mlops-project-generator add-template-file my-custom src/custom_utils.py --content "# Custom utilities"

# List all custom templates
mlops-project-generator list-templates

πŸ“Š Project Analytics & Metrics

  • Usage Tracking: Automatic tracking of all project generations
  • Statistics: Framework usage, deployment patterns, complexity analysis
  • Project Analysis: Detailed analysis of generated projects (files, lines, structure)
  • Smart Recommendations: Get suggestions based on project configuration
# View generation statistics
mlops-project-generator stats

# Analyze a specific project
mlops-project-generator analyze /path/to/project

# Interactive project browser
mlops-project-generator browse

☁️ Multi-Cloud Deployment Templates

  • AWS Support: SageMaker, ECS, Lambda deployment templates
  • GCP Support: Vertex AI, Cloud Run, AI Platform templates
  • Azure Support: Azure ML, Container Instances, Functions templates
  • Auto-Generation: Create cloud-specific deployment files automatically
# List available cloud services
mlops-project-generator cloud-services

# Generate cloud deployment templates
mlops-project-generator cloud-deploy aws sagemaker --project ./my-project
mlops-project-generator cloud-deploy gcp vertex-ai --project ./my-project
mlops-project-generator cloud-deploy azure ml-studio --project ./my-project

πŸ” Interactive Project Browser

  • Project Navigation: Browse and explore generated projects
  • Search & Filter: Find projects by framework, task type, deployment
  • Project Comparison: Compare multiple projects side-by-side
  • Export/Import: Share project lists with team members
# Launch interactive browser
mlops-project-generator browse

# Export project list
mlops-project-generator export-projects team-projects.json

# Import project list
mlops-project-generator import-projects team-projects.json

🌟 Previous: v1.0.6 Features

πŸ” Project Validation Command

  • Comprehensive validation: Checks project structure, configuration, and deployment readiness
  • Framework-specific validation: Validates sklearn, PyTorch, and TensorFlow projects
  • Smart framework detection: Automatically detects ML framework from project files
  • Beautiful Rich UI: Professional terminal output with pass/warn/fail status
  • CI/CD integration: Proper exit codes for automation pipelines
  • Extensible design: Easy to add new validation checks
# Validate current directory
mlops-project-generator validate

# Validate specific project
mlops-project-generator validate --path /path/to/project

# CI/CD integration
mlops-project-generator validate --path . || exit 1

πŸš€ Non-Interactive CLI Mode (CI/CD Ready)

  • One-liner project generation with command-line flags
  • Perfect for automation and CI/CD pipelines
  • Enterprise-ready with clean, log-friendly output
  • Zero prompts when flags are provided
  • Smart defaults for unspecified options
# Generate a complete project in one command
mlops-project-generator init \
  --framework pytorch \
  --tracking mlflow \
  --deployment docker \
  --monitoring evidently \
  --project-name my-ml-project

πŸ” Smart System Validation

  • Automatic system check for Python, Git, Docker, Conda
  • Real-time status indicators (βœ…/❌) with visual feedback
  • System information display (OS, Python version, architecture)
  • Early validation to prevent setup issues

🧠 Intelligent Project Generation

  • Smart project naming based on framework and task type
  • Framework comparison table with complexity indicators
  • Project size estimation (files, lines of code, storage)
  • Impact analysis for each configuration choice

πŸ“Š Enhanced User Experience

  • Beautiful progress indicators with real-time updates
  • Interactive framework recommendations with use cases
  • Comprehensive project summary before generation
  • Step-by-step next steps after project creation

πŸ”§ Advanced Template Features

  • Dynamic .gitignore generation based on tools selected
  • Framework-specific patterns (PyTorch: *.pth, TensorFlow: *.pb)
  • Tool-specific configurations (MLflow, W&B, Airflow, Kubeflow)
  • Comprehensive MLOps artifact management

πŸ“¦ Installation

From PyPI (Recommended)

pip install mlops-project-generator

From Source

git clone https://github.com/NotHarshhaa/MLOps-Project-Generator.git
cd MLOps-Project-Generator
pip install -e .

Development Installation

git clone https://github.com/NotHarshhaa/MLOps-Project-Generator.git
cd MLOps-Project-Generator
pip install -e ".[dev]"

πŸ–ΌοΈ Screenshots

CLI Commands

CLI Version and Help Commands

Scikit-learn Project Generation

Scikit-learn Project Generation

PyTorch Project Generation

PyTorch Project Generation

TensorFlow Project Generation

TensorFlow Project Generation

🎯 Quick Start

πŸš€ Option 1: Interactive Mode (Recommended for beginners)

mlops-project-generator init

πŸ€– Option 2: Non-Interactive Mode (Perfect for CI/CD)

# Quick start with defaults
mlops-project-generator init --framework sklearn --project-name my-project

# Full configuration
mlops-project-generator init \
  --framework pytorch \
  --task-type classification \
  --tracking mlflow \
  --orchestration airflow \
  --deployment docker \
  --monitoring evidently \
  --project-name enterprise-ml \
  --author-name "ML Team" \
  --description "Production ML pipeline"

πŸ“‹ Available CLI Commands

Core Commands

Command Description Options
init Generate new MLOps project Framework, task type, tracking, deployment flags
validate Validate existing project structure --path to specify project directory
version Show version information None

Configuration Management

Command Description Options
save-preset Save project configuration as preset --config, --description
list-presets List all available presets None
load-preset Load a preset configuration --output to save to file
delete-preset Delete a preset Preset name

Template Management

Command Description Options
create-template Create custom template Framework, --description
list-templates List custom templates None
delete-template Delete custom template Template name
add-template-file Add file to template --content for file content

Analytics & Monitoring

Command Description Options
stats Show project generation statistics None
analyze Analyze a generated project Project path

Cloud Deployment

Command Description Options
cloud-services List available cloud services None
cloud-deploy Generate cloud templates Provider, service, --project

Project Browser

Command Description Options
browse Interactive project browser None
export-projects Export project list Output file
import-projects Import project list Input file

πŸ“‹ Available CLI Flags (for init command)

Flag Short Description Options
--framework -f ML framework sklearn, pytorch, tensorflow
--task-type -t Task type classification, regression, time-series, nlp, computer-vision
--tracking -r Experiment tracking mlflow, wandb, custom, none
--orchestration -o Orchestration airflow, kubeflow, none
--deployment -d Deployment fastapi, docker, kubernetes
--monitoring -m Monitoring evidently, custom, none
--project-name -p Project name Any valid name
--author-name -a Author name Any string
--description --desc Project description Any string

πŸ“‹ Validation Options

Flag Short Description Default
--path -p Path to project to validate . (current directory)

🎯 Use Case Examples

πŸ”¬ Data Science Quick Start

mlops-project-generator init \
  --framework sklearn \
  --task-type classification \
  --tracking mlflow \
  --project-name fraud-detection

πŸš€ Deep Learning Production

mlops-project-generator init \
  --framework pytorch \
  --deployment docker \
  --monitoring evidently \
  --project-name image-classifier

🏒 Enterprise MLOps

mlops-project-generator init \
  --framework tensorflow \
  --orchestration kubeflow \
  --deployment kubernetes \
  --tracking mlflow \
  --project-name enterprise-ml

⚑ CI/CD Pipeline Integration

# In GitHub Actions, GitLab CI, or Jenkins
mlops-project-generator init \
  --framework $FRAMEWORK \
  --deployment $DEPLOYMENT \
  --project-name $PROJECT_NAME \
  --author-name "CI/CD Pipeline"

This will launch an enhanced interactive CLI that guides you through:

πŸ” Step 1: System Validation

  • Automatic system check for required tools
  • Visual status indicators (βœ…/❌)
  • System information display
  • Early problem detection

πŸ”§ Step 2: Framework Selection

  • Interactive comparison table with use cases
  • Complexity indicators (Low/Medium/High)
  • Smart recommendations based on your needs
  • Framework guidance for better decisions

πŸ“Š Step 3: Configuration

  • Task type selection (Classification/Regression/Time-Series)
  • Experiment tracking (MLflow/W&B/Custom)
  • Orchestration (Airflow/Kubeflow/None)
  • Deployment (FastAPI/Docker/Kubernetes)
  • Monitoring (Evidently/Custom/None)

🧠 Step 4: Smart Project Setup

  • Intelligent project naming suggestions
  • Directory validation to prevent conflicts
  • Project size estimation (files, lines, storage)
  • Impact analysis of your choices

πŸ“‹ Step 5: Enhanced Summary

  • Comprehensive project overview
  • Next steps preview before generation
  • Real-time progress tracking
  • Step-by-step guidance after creation

🎯 Step 6: Ready-to-Go Project

  • Framework-specific code ready to run
  • Production-ready structure
  • Comprehensive documentation
  • Next steps checklist

Example Usage

# Generate a Scikit-learn classification project with MLflow tracking
mlops-project-generator init

# Follow the prompts:
# βœ” ML Framework: Scikit-learn
# βœ” Task Type: Classification
# βœ” Experiment Tracking: MLflow
# βœ” Orchestration: None
# βœ” Deployment: FastAPI
# βœ” Monitoring: Evidently
# βœ” Project Name: ml-classification-project
# βœ” Author Name: Your Name

πŸ“ Generated Project Structure

your-project/
β”œβ”€β”€ data/                   # Data files
β”‚   β”œβ”€β”€ raw/               # Raw data
β”‚   β”œβ”€β”€ processed/         # Processed data
β”‚   └── external/          # External data
β”œβ”€β”€ models/                 # Model files
β”‚   β”œβ”€β”€ checkpoints/       # Model checkpoints
β”‚   └── production/        # Production models
β”œβ”€β”€ notebooks/              # Jupyter notebooks
β”œβ”€β”€ scripts/                # Utility scripts
β”œβ”€β”€ src/                    # Source code
β”‚   β”œβ”€β”€ data/              # Data loading utilities
β”‚   β”œβ”€β”€ models/            # Model implementations
β”‚   β”œβ”€β”€ features/          # Feature engineering (sklearn)
β”‚   └── utils/             # Training utilities (pytorch/tensorflow)
β”œβ”€β”€ configs/                # Configuration files
β”œβ”€β”€ tests/                  # Test files
β”œβ”€β”€ requirements.txt        # Dependencies
β”œβ”€β”€ pyproject.toml         # Project configuration
β”œβ”€β”€ Makefile               # Build commands
β”œβ”€β”€ .gitignore             # Git ignore rules
└── README.md              # Project documentation

πŸ› οΈ Framework-Specific Features

Scikit-learn Projects

  • Models: RandomForest, LogisticRegression, SVM, etc.
  • Feature Engineering: Scaling, selection, PCA
  • Evaluation: Cross-validation, comprehensive metrics
  • Deployment: Joblib serialization, FastAPI integration

PyTorch Projects

  • Models: Neural networks with residual connections, attention mechanisms
  • Training: Advanced optimizers, learning rate schedulers, early stopping
  • Utilities: Gradient clipping, data augmentation, model profiling
  • Deployment: TorchScript, FastAPI integration

TensorFlow Projects

  • Models: Keras models with batch normalization, attention mechanisms
  • Training: Callbacks, custom loss functions, gradient clipping
  • Utilities: Model profiling, data augmentation, custom schedulers
  • Deployment: SavedModel format, FastAPI integration

πŸ“Š Experiment Tracking Integration

MLflow Integration

# Automatically logged metrics
mlflow.log_metrics({
    "train_loss": 0.123,
    "val_accuracy": 0.95,
    "learning_rate": 0.001
})

# Model artifacts
mlflow.log_artifact("models/production/model.joblib")

W&B Integration

# Automatic logging with W&B callback
wandb.init(project="my-project")
wandb.log({"loss": 0.123, "accuracy": 0.95})

πŸš€ Deployment Options

FastAPI Deployment

# Start the API server
uvicorn src.inference:app --reload

# API documentation at http://localhost:8000/docs

Docker Deployment

# Build and run
docker build -t my-ml-project .
docker run -p 8000:8000 my-ml-project

Kubernetes Deployment

# Deploy to Kubernetes
kubectl apply -f k8s/

πŸ“ˆ Monitoring Solutions

Evidently AI Integration

# Data drift monitoring
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset

report = Report(metrics=[DataDriftPreset()])
report.run(current_data=current, reference_data=reference)

Custom Monitoring

# Custom monitoring implementation
class ModelMonitor:
    def check_performance(self, predictions, ground_truth):
        # Custom performance checks
        pass

πŸ§ͺ Testing

# Run tests
pytest tests/ -v

# Run with coverage
pytest tests/ --cov=src --cov-report=html

πŸ› οΈ Development

Setup Development Environment

# Clone repository
git clone https://github.com/NotHarshhaa/MLOps-Project-Generator.git
cd MLOps-Project-Generator

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest tests/

# Run linting
black generator/ tests/
isort generator/ tests/
flake8 generator/ tests/
mypy generator/

Project Structure

mlops-project-generator/
β”œβ”€β”€ generator/              # CLI tool source code
β”‚   β”œβ”€β”€ cli.py             # Main CLI interface
β”‚   β”œβ”€β”€ prompts.py         # Interactive prompts
β”‚   β”œβ”€β”€ renderer.py        # Template rendering
β”‚   └── validators.py      # Input validation
β”œβ”€β”€ templates/              # Project templates
β”‚   β”œβ”€β”€ common/            # Common files across frameworks
β”‚   β”œβ”€β”€ sklearn/           # Scikit-learn specific templates
β”‚   β”œβ”€β”€ pytorch/           # PyTorch specific templates
β”‚   └── tensorflow/        # TensorFlow specific templates
β”œβ”€β”€ tests/                  # Test files
β”œβ”€β”€ docs/                   # Documentation
β”œβ”€β”€ pyproject.toml         # Project configuration
└── README.md              # This file

πŸ”§ Configuration

The generated projects use YAML configuration files:

# configs/config.yaml
project:
  name: "my-project"
  author: "Your Name"
  version: "0.1.0"

model:
  type: "RandomForestClassifier"
  n_estimators: 100
  max_depth: 10

training:
  batch_size: 32
  learning_rate: 0.001
  epochs: 100

experiment_tracking:
  tool: "mlflow"
  tracking_uri: "http://localhost:5000"

deployment:
  method: "fastapi"
  host: "0.0.0.0"
  port: 8000

πŸš€ CI/CD Integration

GitHub Actions Example

name: Generate ML Project
on:
  workflow_dispatch:
    inputs:
      framework:
        type: choice
        options: [sklearn, pytorch, tensorflow]
        default: sklearn
      project_name:
        type: string
        default: ml-project

jobs:
  generate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      
      - name: Install MLOps Generator
        run: pip install mlops-project-generator
      
      - name: Generate ML Project
        run: |
          mlops-project-generator init \
            --framework ${{ github.event.inputs.framework }} \
            --project-name ${{ github.event.inputs.project_name }} \
            --tracking mlflow \
            --deployment docker
      
      - name: Upload generated project
        uses: actions/upload-artifact@v3
        with:
          name: ${{ github.event.inputs.project_name }}
          path: ${{ github.event.inputs.project_name }}/

GitLab CI Example

stages:
  - generate

generate_ml_project:
  stage: generate
  image: python:3.11
  script:
    - pip install mlops-project-generator
    - mlops-project-generator init \
        --framework $FRAMEWORK \
        --project-name $PROJECT_NAME \
        --tracking mlflow \
        --deployment docker
  artifacts:
    paths:
      - $PROJECT_NAME/
    expire_in: 1 week

Jenkins Pipeline Example

pipeline {
    agent any
    parameters {
        choice(name: 'FRAMEWORK', choices: ['sklearn', 'pytorch', 'tensorflow'], description: 'ML Framework')
        string(name: 'PROJECT_NAME', defaultValue: 'ml-project', description: 'Project Name')
    }
    
    stages {
        stage('Generate ML Project') {
            steps {
                sh 'pip install mlops-project-generator'
                sh """
                    mlops-project-generator init \
                        --framework ${params.FRAMEWORK} \
                        --project-name ${params.PROJECT_NAME} \
                        --tracking mlflow \
                        --deployment docker
                """
                archiveArtifacts artifacts: "${params.PROJECT_NAME}/**/*", fingerprint: true
            }
        }
    }
}

Docker Integration

FROM python:3.11-slim

WORKDIR /app
RUN pip install mlops-project-generator

# Copy project generation script
COPY generate-project.sh .
RUN chmod +x generate-project.sh

# Generate project on container start
CMD ["./generate-project.sh"]

Environment Variables Support

# Using environment variables in CI/CD
export FRAMEWORK=pytorch
export DEPLOYMENT=kubernetes
export PROJECT_NAME=prod-ml

mlops-project-generator init \
  --framework $FRAMEWORK \
  --deployment $DEPLOYMENT \
  --project-name $PROJECT_NAME \
  --author-name "CI/CD Pipeline"

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Run the test suite
  6. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Typer - For the beautiful CLI interface
  • Jinja2 - For powerful template rendering
  • Rich - For stunning terminal output
  • Cookiecutter - For project template inspiration

πŸ“ž Support

πŸ—ΊοΈ Roadmap

βœ… Completed (v1.0.7)

  • Configuration management system with presets
  • Template customization and management
  • Project analytics and metrics tracking
  • Multi-cloud deployment templates (AWS, GCP, Azure)
  • Interactive project browser
  • Enhanced CLI with 15+ new commands

πŸš€ Upcoming Features

  • v1.1: Additional frameworks (XGBoost, LightGBM, CatBoost)
  • v1.2: Enhanced cloud monitoring and observability
  • v1.3: Advanced monitoring solutions integration
  • v2.0: GUI interface for project generation
  • v2.1: Template marketplace and sharing platform
  • v2.2: Real-time collaboration features
  • v2.3: Enterprise SSO and team management

⭐ If you find this tool helpful, please give us a star on GitHub!

Generated with ❀️ by MLOps Project Generator

About

A CLI tool that generates production-ready MLOps project templates for Scikit-learn, PyTorch, and TensorFlow.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published