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.
- Aperçu du projet
- Prérequis et dépendances
- Installation
- Configuration
- Utilisation
- Conteneurisation Docker
- Contributeurs
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.
- 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 datasetultralytics: entraînement et inférence YOLOmlflow: tracking et Model Registrybentoml: packaging et déploiement
# 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-
Copier le template de secrets :
cp config/.secrets.example.toml config/.secrets.toml
-
Renseigner vos credentials dans
config/.secrets.toml -
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/deploybento/bento-config.yaml: paramètres de déploiement BentoML
📢 IMPORTANT: N'oubliez pas de renseigner les credentials dans le fichier
config/.secrets.tomlpour 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.
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.pyPour les lancements en standalone et les différentes exemples de configurations, veuillez vous référez aux sections suivantes.
Lancer la totalité du pipeline :
python src/training_pipeline.pyOu avec un fichier de configuration personnalisé :
python src/training_pipeline.py --config custom-pipeline.yamlgenerate:
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: trueWorkflow :
- Génération et récupération du dataset via Picsellia
- Split train/val/test et vérification de la qualité des données
- Entraînement du modèle YOLO avec Ultralytics
- Tracking des métriques via MLflow ainsi qu'enregistrement du modèle via MLflow Model Registry
- Promotion du challenger si supérieur au champion pour déployer que le meilleur modèle
- Déploiement automatique sur BentoCloud sans intervention manuelle, géré automatiquement par la pipeline.
python src/inference_pipeline.pyL’inférence s’effectue en direct depuis la webcam. Appuyer sur Q pour quitter.
Des conteneurs Docker sont disponibles dans le répertoire docker/.
# Builder l'image et lancer le container unlearning engine
docker-compose up ulrengine --buildPar 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.
- Alizée Hett (@Dinholu)
- Ian Bellot (@ShortLegsFox)
- Winness Rakotozafy (@WRKT)
© 2025 Unlearning Engine
