A comprehensive, hands-on MLOps bootcamp that takes you from basic concepts to production-ready machine learning deployments. This repository contains 10+ practical lessons covering the entire MLOps lifecycle using real-world tools and datasets.
This bootcamp covers the complete MLOps journey:
- Version Control with Git for ML projects
- Experiment Tracking with MLflow
- Containerization with Docker
- ML Pipelines with preprocessing, training, and deployment
- CI/CD Automation with GitHub Actions
- Kubernetes Deployment for scalable ML services
- Horizontal Pod Autoscaling (HPA) for dynamic scaling
- A/B Testing for model comparison and traffic control
- End-to-End MLOps with monitoring and observability
oreilly-mlops-bootcamp/
βββ Day 1/ # Foundation concepts
β βββ lesson-2-git/ # Version control with Git
β βββ lesson-3-mlflow/ # Experiment tracking
β βββ lesson-4-docker/ # Containerization
β βββ lesson-5-ml-pipeline/ # End-to-end ML pipeline
β βββ lesson-6-ci-cd/ # CI/CD automation
β
βββ Day 2/ # Production deployment
βββ lesson-2-kubernetes-basics/ # Kubernetes fundamentals
βββ lesson-5-kubernetes-hpa/ # Auto-scaling
βββ lesson-7-ab-testing/ # A/B testing
βββ lesson-10-mlops-practices/ # Complete MLOps workflow
- Python 3.11 (required for MLflow compatibility)
- Git - Version control system
- Docker - Containerization platform
- Kubectl - Kubernetes command-line tool
- Kubernetes cluster (Docker Desktop with K8s enabled)
- MLflow - Experiment tracking and model management
- Flask/FastAPI - Web frameworks for API development
- scikit-learn - Machine learning library
- pandas - Data manipulation
- pytest - Testing framework
- prometheus-client - Monitoring metrics
- Jupyter Notebook - Interactive development
- Postman - API testing
- GitHub CLI - GitHub integration
# Clone the repository
git clone https://github.com/AmmarMohanna/oreilly-mlops-bootcamp.git
cd oreilly-mlops-bootcamp
# Create conda environment with Python 3.11
conda create -n mlops-py311 python=3.11
conda activate mlops-py311
# Verify Python version
python --version # Should show Python 3.11.x
# For each lesson, install requirements
cd Day\ 1/lesson-2-git/
pip install -r requirements.txt
# Repeat for other lessons as needed
Begin with Day 1 lessons in order:
- Git fundamentals β
Day 1/lesson-2-git/
- MLflow tracking β
Day 1/lesson-3-mlflow/
- Docker containerization β
Day 1/lesson-4-docker/
- ML pipelines β
Day 1/lesson-5-ml-pipeline/
- CI/CD automation β
Day 1/lesson-6-ci-cd/
Then progress to Day 2 for production deployment:
6. Kubernetes basics β Day 2/lesson-2-kubernetes-basics/
7. Auto-scaling β Day 2/lesson-5-kubernetes-hpa/
8. A/B testing β Day 2/lesson-7-ab-testing/
9. Complete MLOps β Day 2/lesson-10-mlops-practices/
Lesson | Focus | Tools | Dataset |
---|---|---|---|
Git | Version control | Git, GitHub | Iris dataset |
MLflow | Experiment tracking | MLflow UI | Air quality data |
Docker | Containerization | Docker, Flask | Age detection model |
ML Pipeline | End-to-end workflow | MLflow, Flask, Docker | Adult income data |
CI/CD | Automation | GitHub Actions | Adult income data |
Lesson | Focus | Tools | Dataset |
---|---|---|---|
Kubernetes | Container orchestration | K8s, Docker | Age detection model |
HPA | Auto-scaling | K8s HPA, Prometheus | Age detection model |
A/B Testing | Model comparison | FastAPI, K8s | Diabetes prediction |
Complete MLOps | Full workflow | MLflow, Flask, K8s, Prometheus, Grafana | Adult income data |
Day 1: Foundation
βββ Git Version Control
βββ MLflow Experiment Tracking
βββ Docker Containerization
βββ ML Pipeline Development
βββ CI/CD Automation
β
Day 2: Production
βββ Kubernetes Deployment
βββ Auto-scaling (HPA)
βββ A/B Testing
βββ Complete MLOps Workflow
# Error: AttributeError: 'EntryPoints' object has no attribute 'get'
# Solution: Use Python 3.11
conda create -n mlops-py311 python=3.11
conda activate mlops-py311
# macOS AirPlay uses port 5000
# Solution: Use alternative ports
mlflow ui --port 5001
python -m mlflow server --port 5001 --host 0.0.0.0
# Ensure Docker is running
docker --version
docker ps
# Check cluster status
kubectl cluster-info
kubectl get nodes
- Check individual lesson README files for specific troubleshooting
- Review error messages in terminal output
- Ensure all prerequisites are properly installed
- Verify Python version is 3.11 for MLflow compatibility
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Development β β Experiment β β Deployment β
β β β Tracking β β β
β β’ Git βββββΆβ β’ MLflow βββββΆβ β’ Docker β
β β’ Local Dev β β β’ Model Reg β β β’ Kubernetes β
β β’ Testing β β β’ Metrics β β β’ Monitoring β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β CI/CD Pipelineβ β Model Serving β β Observability β
β β β β β β
β β’ GitHub β β β’ Flask API β β β’ Prometheus β
β β’ Actions β β β’ FastAPI β β β’ Grafana β
β β’ Automation β β β’ A/B Testing β β β’ HPA β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Additional datasets and use cases
- More advanced Kubernetes configurations
- Additional monitoring and observability tools
- Performance optimization techniques
- Security best practices
This project is licensed under the MIT License - see the LICENSE file for details.
- O'Reilly Media for the educational framework
- MLflow team for the excellent experiment tracking tool
- Kubernetes community for container orchestration
- Open source contributors who made these tools possible
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Check individual lesson README files
Ready to start your MLOps journey? π
Begin with Day 1: MLOps Foundation and work your way through to Day 2: Applied MLOps for a complete production-ready MLOps experience!