Skip to content

Unlearning-Engine/project

Repository files navigation

Unlearning Engine 🤖

Python CI

Unlearning Engine est une solution SMART (Smart Merchandise Automated Recognition Technology) développée en Python, reposant sur la Computer Vision pour reconnaître automatiquement un ensemble défini de produits. L’architecture MLOps assure des pipelines reproductibles, traçables et efficaces, garantissant des modèles performants et maintenables.

📑 Table des matières

  1. Aperçu du projet
  2. Prérequis et dépendances
  3. Installation
  4. Configuration
  5. Utilisation
  6. Conteneurisation Docker
  7. Contributeurs

🔍 Aperçu du projet

Le projet applique une approche MLOps pour :

  • Structurer et versionner les données et les modèles
  • Suivre et comparer les expérimentations via MLflow
  • Déployer les modèles avec BentoML
  • Garantir la reproductibilité et la scalabilité des pipelines grâce à une approche déclarative avec les fichiers de configuration YAML.

⚙️ Prérequis et dépendances

  • Langage : Python 3.11
  • Gestion de packages : pip
  • Accélération: CUDA (GPU recommandé)
  • Conteneurisation : Docker & Docker Compose (optionnel)

Bibliothèques principales :

  • picsellia: récupération et gestion du dataset
  • ultralytics: entraînement et inférence YOLO
  • mlflow: tracking et Model Registry
  • bentoml: packaging et déploiement

🚀 Installation

# Cloner le dépôt
git clone https://github.com/Unlearning-Engine/project.git
cd project

# Créer et activer un environnement virtuel
python -m venv .venv
source .venv/bin/activate  # macOS/Linux
.venv\Scripts\activate   # Windows PowerShell

# Installer les dépendances
pip install -r requirements.txt
pip install -e .

# Installer les hooks Git
pre-commit install --install-hooks

🛠️ Configuration

  1. Copier le template de secrets :

    cp config/.secrets.example.toml config/.secrets.toml
  2. Renseigner vos credentials dans config/.secrets.toml

  3. Adapter config/unlearning_pipeline.yaml (dataset, hyperparamètres, etc.)

Fichiers de configuration :

  • config/settings.toml: paramètres globaux (chemins, logs, ressources)
  • config/.secrets.toml: clés API et credentials (Dynaconf)
  • config/unlearning_pipeline.yaml: étapes du pipeline train/val/deploy
  • bento/bento-config.yaml: paramètres de déploiement BentoML

📢 IMPORTANT: N'oubliez pas de renseigner les credentials dans le fichier config/.secrets.toml pour que les pipelines puissent accéder aux ressources nécessaires: Picsellia, MLflow, et surtout BentoML ou sinon le déploiement du modèle ne fonctionnera pas.

🎯 Utilisation

Pour lancer les pipelines, nous pouvons lancer soit à partir du menu interactif pour choisir quel pipeline lancer ou lancer en standalone les pipelines.

python src/main.py

unlearning_engine_menu

Pour les lancements en standalone et les différentes exemples de configurations, veuillez vous référez aux sections suivantes.

🏋️ Pipeline d’entraînement

Lancer la totalité du pipeline :

python src/training_pipeline.py

Ou avec un fichier de configuration personnalisé :

python src/training_pipeline.py --config custom-pipeline.yaml

Exemple de configuration YAML

generate:
  enabled: true
fetch:
  enabled: true
train:
  enabled: true
  model_name: "yolo11n.pt"
  epochs: 200
  batch: 32
  patience: 50
  optimizer: "AdamW"
val:
  enabled: true
  alias: "challenger"
promote:
  enabled: true
deploy:
  enabled: true

Workflow :

  1. Génération et récupération du dataset via Picsellia
  2. Split train/val/test et vérification de la qualité des données
  3. Entraînement du modèle YOLO avec Ultralytics
  4. Tracking des métriques via MLflow ainsi qu'enregistrement du modèle via MLflow Model Registry
  5. Promotion du challenger si supérieur au champion pour déployer que le meilleur modèle
  6. Déploiement automatique sur BentoCloud sans intervention manuelle, géré automatiquement par la pipeline.

🎥 Pipeline d’inférence

python src/inference_pipeline.py

L’inférence s’effectue en direct depuis la webcam. Appuyer sur Q pour quitter.

🐳 Conteneurisation Docker

Des conteneurs Docker sont disponibles dans le répertoire docker/.

# Builder l'image et lancer le container unlearning engine
docker-compose up ulrengine --build

Par défaut, l’image exécute le pipeline d’entraînement selon config/unlearning_pipeline.yaml.

Les autres composants de Docker compose peuvent être lancés également, toutefois, nous avions déployer la stack ML Metadata Store et Model Registry dans le cloud, disponible à l'adresse suivante : https://mlflow.unlearningengine.systems.


👥 Contributeurs

  • Alizée Hett (@Dinholu)
  • Ian Bellot (@ShortLegsFox)
  • Winness Rakotozafy (@WRKT)

© 2025 Unlearning Engine

About

Source code for Unlearning Engine - SMART Object Detection

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors