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 neededBegin 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!