Skip to content

DataScientest/Intro-MLOps-DS-Support-Simple

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction au MLOps : Du Notebook aux Microservices

Bienvenue dans ce dépôt de démonstration pour le cours "Introduction au MLOps". Ce projet illustre de manière itérative comment passer d'un code de Machine Learning monolithique (sous forme de Notebook) à une structure de production robuste, modulaire et conteneurisée.

Objectif de la Démo

Montrer la transition entre trois niveaux de maturité architecturale :

  1. Niveau 0 - Le Brouillon : Tout le code d'entraînement est centralisé dans un Notebook (notebooks/).
  2. Niveau 1 - La Modularisation : Le code est restructuré en scripts Python indépendants, versionnés et exécutables via un environnement virtuel (scripts/).
  3. Niveau 2 - La Conteneurisation : L'environnement d'exécution et les dépendances sont packagés dans des conteneurs isolés et orchestrés (services/). Introduction du monitoring avec Prometheus et Grafana.

Structure du Projet

.
├── notebooks/           # Étape 1 : Le Notebook contenant la modélisation exploratoire.
│   └── 01_model_training.ipynb
├── scripts/             # Étape 2 : Le code modulaire pour l'entraînement.
│   ├── collect.py       # Téléchargement des données
│   ├── process.py       # Prétraitement des données
│   ├── train.py         # Entraînement du modèle scikit-learn
│   ├── eval.py          # Évaluation des performances
│   ├── predict.py       # Script pour requêter manuellement le modèle
│   ├── run_pipeline.sh  # Script d'exécution de toutes les étapes séquentiellement
│   └── requirements.txt
└── services/            # Étape 3 : L'architecture microservices Docker
    ├── data-pipeline/   # Conteneur dédié à l'exécution du pipeline de traitement et entraînement
    ├── api/             # Conteneur déployant une API (FastAPI) pour servir les prédictions
    ├── prometheus/      # Conteneur de collecte de métriques
    ├── grafana/         # Conteneur de data visualisation (Dashboard)
    └── docker-compose.yml # Fichier d'orchestration global

Comment Utiliser ce Projet

Étape 1 : Le Notebook

Naviguez dans le dossier notebooks/ et ouvrez le fichier avec Jupyter Notebook ou VSCode. Vous y verrez un entraînement classique complet de A à Z (collecte -> pré-traitement -> modélisation -> évaluation) sur le jeu de données Iris.

Étape 2 : L'Environnement Virtuel & Scripts

Dans le répertoire scripts/, nous avons isolé les responsabilités du modèle.

cd scripts
python -m venv .venv
source .venv/bin/activate  # Sur Linux/MacOS
pip install -r requirements.txt
./run_pipeline.sh          # Pour exécuter le pipeline d'entraînement

Étape 3 : Déploiement et Observabilité (Docker)

Dans le répertoire services/, nous conteneurisons le tout et ajoutons des outils d'observabilité.

cd services
docker compose up --build
  • L'API de prédiction sera disponible sur http://localhost:8080
  • La documentation de l'API (Swagger) sera sur http://localhost:8080/docs
  • Prometheus sera disponible sur http://localhost:9090
  • Le Dashboard Grafana sera sur http://localhost:3001 (identifiant: admin / admin)

Au sujet du Modèle

Le modèle utilisé est un simple RandomForestClassifier entraîné sur le jeu de données Iris, le "Hello World" du Machine Learning. Le but ici n'est pas la performance du modèle, mais bien la mise en place de l'infrastructure logicielle et MLOps qui l'entoure.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors