Skip to content

TeodoreAutuly/mlops-project

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Projet d'Introduction au MLOps

Un projet pédagogique pour découvrir les fondamentaux du MLOps (Machine Learning Operations) à travers l'utilisation d'Apache Airflow, MLflow et Docker.

📋 Table des matières

🎯 Présentation

Ce projet est conçu comme support de cours pour apprendre les concepts clés du MLOps :

  • Orchestration de workflows ML avec Apache Airflow
  • Tracking d'expériences avec MLflow
  • Containerisation avec Docker
  • Versioning de code avec Git
  • Pipelines ETL (Extract, Transform, Load)
  • Entraînement et validation de modèles

🛠️ Prérequis

Logiciels requis

🏗️ Architecture

Le projet utilise une architecture multi-conteneurs orchestrée par Docker Compose :

Services principaux

Service Description Port
airflow-webserver Interface web Airflow 8080
airflow-scheduler Orchestrateur de tâches -
airflow-worker Exécuteur de tâches (Celery) -
airflow-triggerer Gestion des triggers asynchrones -
postgres Base de données (métadonnées Airflow) -
redis Broker de messages (Celery) -
jupyter-notebook Environnement de notebooks 8889

Volumes montés

./dags       → /opt/airflow/dags       # DAGs Airflow
./logs       → /opt/airflow/logs       # Logs d'exécution
./plugins    → /opt/airflow/plugins    # Plugins personnalisés
./config     → /opt/airflow/config     # Configuration Airflow
./data       → /opt/airflow/data       # Données d'entrée
./models     → /opt/airflow/models     # Modèles entraînés
./metrics    → /opt/airflow/metrics    # Métriques de performance
./notebooks  → /home/jovyan/work       # Notebooks Jupyter

📦 Installation

1. Cloner le repository

git clone https://github.com/TeodoreAutuly/mlops-project.git
cd mlops-project

2. Vérifier l'installation de Docker

docker --version
docker compose version

3. Tester Docker

docker run hello-world

Si vous voyez le message de bienvenue de Docker, l'installation est réussie ! ✅

4. Initialiser Airflow

Cette commande configure la base de données et crée l'utilisateur par défaut (airflow/airflow) :

docker compose up airflow-init

Attendez que le message de succès s'affiche avant de passer à l'étape suivante.

5. Démarrer les services

docker compose up

Pour démarrer en arrière-plan :

docker compose up -d

6. Vérifier que tout fonctionne

🎮 Utilisation

Accéder à l'interface Airflow

  1. Ouvrez votre navigateur à http://localhost:8080
  2. Connectez-vous avec :
    • Username : airflow
    • Password : airflow
  3. Vous verrez la liste des DAGs disponibles

Exécuter un DAG

  1. Dans l'interface Airflow, localisez le DAG souhaité (ex: dag_imt_example)
  2. Activez le DAG en cliquant sur le toggle à gauche
  3. Cliquez sur le bouton "Play" (▶️) pour déclencher une exécution manuelle
  4. Suivez l'exécution dans la vue "Grid" ou "Graph"

Accéder aux notebooks Jupyter

  1. Ouvrez http://localhost:8889
  2. Entrez le token : my-token
  3. Les notebooks sont dans le dossier work/

Arrêter les services

docker compose down

Pour supprimer également les volumes (⚠️ supprime les données) :

docker compose down -v

📁 Structure du projet

mlops-project/
├── docker-compose.yml          # Configuration des services Docker
├── LICENSE                     # Licence MIT
├── README.md                   # Ce fichier
├── .gitignore                  # Fichiers ignorés par Git
│
├── dags/                       # 📊 DAGs Apache Airflow
│   ├── airflow_dag_exemple.py           # Pipeline ETL de base
│   └── airflow_dag_mlflow_example.py    # Pipeline avec MLflow
│
├── notebooks/                  # 📓 Notebooks Jupyter
│   ├── MLFlowDemoSimple.ipynb           # Démo simple MLflow
│   ├── MLFlowDemo.ipynb                 # Démo avancée MLflow
│   ├── TDCData.ipynb                    # Manipulation de données
│   ├── cas.ipynb                        # Étude de cas
│   │
│   ├── cert/                   # Certificats SSL
│   │   └── ca.pem
│   │
│   ├── data/                   # Données d'exemple
│   │   └── phase1.tab
│   │
│   └── mlruns/                 # Expériences MLflow locales
│       └── 0/
│
├── TPS/                        # 📚 Supports de cours
│   └── TP_GIT_AIRFLOW_DOCKER.md        # Tutoriel Git/Airflow/Docker
│
└── airflow/                    # Configuration Airflow (générée)
    ├── dags/                   # Copie des DAGs
    └── logs/                   # Logs d'exécution

🔄 DAGs Airflow

1. dag_imt_example - Pipeline ETL basique

Description : Pipeline d'exemple démontrant les concepts Extract → Transform → Load

Tâches :

  • extract : Récupère des données de commandes (simulées)
  • transform : Calcule la valeur totale des commandes
  • load : Affiche le résultat

Utilisation :

# Les tâches communiquent via XCom
extract_task >> transform_task >> load_task

2. dag_imt_example_with_mlflow - Pipeline ML avec MLflow

Description : Pipeline complet de Machine Learning avec tracking MLflow

Tâches :

  • get_data : Génère des données synthétiques (régression linéaire)
  • train_model : Entraîne un modèle LinearRegression avec autolog MLflow
  • validate_model : Évalue le modèle sur le jeu de test

📓 Notebooks

MLFlowDemoSimple.ipynb

Démonstration simple de l'utilisation de MLflow :

  • Configuration du tracking server
  • Entraînement d'un modèle de régression linéaire
  • Logging automatique avec mlflow.autolog()

Autres notebooks

  • MLFlowDemo.ipynb : Fonctionnalités avancées de MLflow
  • TDCData.ipynb : Manipulation et analyse de données
  • cas.ipynb : Étude de cas pratique

📚 Ressources pédagogiques

Tutoriel inclus

Consultez le fichier TPS/TP_GIT_AIRFLOW_DOCKER.md pour un tutoriel détaillé couvrant :

  1. Introduction à Git

    • Installation et configuration
    • Clonage, commit, push
    • Résolution de conflits
  2. Introduction aux DAGs Airflow

    • Concepts de base (DAG, tâches, dépendances)
    • Configuration Docker Compose
    • Création de volumes personnalisés
  3. Docker en pratique

    • Installation et test
    • Lancement des services
    • Debugging

Commandes Git utiles

# Vérifier le statut
git status

# Ajouter des fichiers
git add <fichier>

# Créer un commit
git commit -m "Message descriptif"

# Récupérer les dernières modifications
git pull

# Envoyer les modifications
git push

Commandes Docker utiles

# Voir les conteneurs en cours d'exécution
docker ps

# Voir les logs d'un service
docker compose logs -f <service>

# Redémarrer un service
docker compose restart <service>

# Exécuter une commande dans un conteneur
docker compose exec <service> <commande>

# Exemple : ouvrir un shell dans le webserver
docker compose exec airflow-webserver bash

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

Copyright (c) 2024 Juan David CRUZ GOMEZ


🎓 Contexte académique

Projet réalisé dans le cadre du cours MLOps - IMT Atlantique (2025)

Concepts abordés

  • 🔄 Orchestration de workflows
  • 📊 Suivi d'expériences ML
  • 🐳 Containerisation
  • 🔧 Infrastructure as Code
  • 📈 Reproductibilité des expériences
  • 🚀 Déploiement continu

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Jupyter Notebook 54.6%
  • Python 45.4%